On Dec 18, 2008, at 1:14 AM, don rhummy wrote:
All the examples of using GnuPG are of giving it a local filename to
encrypt or decrypt. How do I pass it data, either as a stream or
byte by byte?
GnuPG is designed to be able to accept a stream or a file. To do a
stream instead of a file, just don't give a filename. GnuPG will then
read data from standard input.
So, for example:
my-pipeline-that-streams-data | gpg --encrypt | my-pipeline-that-
accepts-encrypted-data
You can freely mix streams and files as well:
my-pipeline-that-streams-data | gpg -o output-file.gpg --encrypt
Or
gpg -o - --encrypt myfile | my-pipeline-that-accepts-encrypted-data
Anyway, that's how you do it on the command line. If you want to do
it inside a program, it depends on what language you're using and how
that language deals with calling out to a command line. In general,
though, you want to write data to the head of the GPG pipe, and read
data from the tail of the GPG pipe. I do this frequently in C via the
usual pipe/fork/exec/dup2 method.
David
_______________________________________________
Gnupg-users mailing list
Gnupg-users@gnupg.org
http://lists.gnupg.org/mailman/listinfo/gnupg-users