piping data stream through GPG
robert
no-spam at no-spam-no-spam.invalid
Sat Jun 9 12:50:49 EDT 2007
robert wrote:
> I played around trying to encrypt/decrypt data through GPG on the fly
> (or worse - by using a file) (on Windows first - later to try on Linux too)
>
> Using os.popen3 like
>
> >>> i,o,e=os.popen3('gpg -e -r Robert')
> >>> # i.write('y\n')
> >>> i.write('wefwef')
> >>> i.close()
> >>> # e.read(1)
> >>> o.read(1)
>
> hangs on o.read or e.read.
>
> So its quite dark. Just a totally non-existing userid (-r) will result
> significantly different like
>
> >>> i.write('wefwef')
> Traceback (most recent call last):
> File "<interactive input>", line 1, in ?
> IOError: [Errno 22] Invalid argument
>
>
> GPG asks confirmation stuff (and pwd upon -d or -c) on the command line.
> How to get all this the right way?
>
>
I basically can handle it now by a os.popen3 cmd like
'gpg -e -r Robert --batch --always-trust',
'gpg -d -r Robert --batch --always-trust --passphrase-fd 0'
and by using a thread for feeding the child_stdin stream
(necessary for files of significant length / more than buffers)
Robert
More information about the Python-list
mailing list