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