Add decrypt_bytes() and verify_bytes().
authorW. Trevor King <wking@drexel.edu>
Wed, 21 Mar 2012 19:11:43 +0000 (15:11 -0400)
committerW. Trevor King <wking@drexel.edu>
Wed, 21 Mar 2012 21:25:13 +0000 (17:25 -0400)
commit0d4827ca5a04187d2d587c36bfc557caf1f5eacd
treecc52891d146c9738c90c202fe105a1acbf830247
parent21e0b77ad414298f6b91bff9d6bca7ea429f59f8
Add decrypt_bytes() and verify_bytes().

Create the encrypted test input with:

  $ echo 'Success!' | gpg --no-verbose --quiet --batch --output -
      --armor --textmode --encrypt --always-trust
      --recipient pgp-mime@invalid.com

Create the signed and encrypted test input with:

  $ echo 'Success!' | gpg --no-verbose --quiet --batch --output -
      --armor --textmode --sign --encrypt --always-trust
      --local-user pgp-mime@invalid.com --recipient pgp-mime@invalid.com

Created the detached signature test input with:

  $ echo 'Success!' | gpg --no-verbose --quiet --batch --output -
      --armor --textmode --detach-sign --always-trust
      --local-user pgp-mime@invalid.com

Verification with a detached signature is the tricky bit.  We are
piping the signed data in via stdout.  To avoid opening a temporary
file, we need to pipe the signature in through another pipe.  The new
`thread_pipe()` function opens that pipe, and spawns a thread writing
the signature data, and the `--enable-special-filenames` option lets
us specify the read-descriptor with the `-&n` syntax.

The threading avoids deadlocking with `execute()`'s `communicate()`
call, and makes cleanup of the write-descriptor easier.
pgp_mime.py