Commit Graph

307 Commits (f3515c44d75a7437a5655149e471f4e4f36dc479)

Author SHA1 Message Date
Isis Lovecruft f3515c44d7
Add ability to parse NOTIFICATION_* statuses in Verify.
* FIXES Issue #85:
   https://github.com/isislovecruft/python-gnupg/issues/85
2014-11-20 05:51:20 +00:00
Isis Lovecruft 5aaf1df5d1
Add ability to handle SIG_SUBPACKET status in Verify.
* FIXES Issue #83:
   https://github.com/isislovecruft/python-gnupg/issues/83
2014-11-19 22:50:30 +00:00
Isis Lovecruft 245cf73baf
Change versioneer parameters in gnupg/_version.py to match setup.py.
* FIXES (hopefully) Issue #80:
   https://github.com/isislovecruft/python-gnupg/issues/80
2014-11-19 21:44:53 +00:00
Isis Lovecruft 8e5b3256fa
Merge remote-tracking branch 'charles-dyfis-net/trustdb_repair_arg_fix' into develop 2014-11-19 21:29:31 +00:00
Isis Lovecruft 30c8c05f84
Merge remote-tracking branch 'charles-dyfis-net/first_usable_binary' into develop
Conflicts:
	gnupg/_util.py
2014-11-19 21:22:21 +00:00
Isis Lovecruft f9d00794ee
Merge remote-tracking branch 'charles-dyfis-net/progress_during_verify' into develop 2014-11-19 19:52:25 +00:00
Isis Lovecruft 99e597f196
Merge remote-tracking branch 'ttanner/binary-symlink' into develop 2014-11-19 19:30:29 +00:00
Isis Lovecruft 1104908ef9
Don't expect a $HOME directory to be set.
* FIXES Issue #74:
   https://github.com/isislovecruft/python-gnupg/issues/74
2014-11-19 18:31:14 +00:00
Isis Lovecruft 59992eb8c3
Put verbosity args before other options/args.
* FIXES Issue #76:
   https://github.com/isislovecruft/python-gnupg/issues/76
2014-11-19 03:51:06 +00:00
Isis Lovecruft fecf92c0ac
Remove expectation for UnicodeDecodeError in a unittest.
It seems that more modern versions of Python (e.g. 2.7.8), doing:

    from __future__ import print_function
    print("SIG=%s" % sig)

with some binary data doesn't actually produce a UnicodeDecodeError,
which means that Python2 is slowly getting less retarded. :D

On the downside, we probably shouldn't have been testing for things
which are Python2.x mis-design issues (and not really our fault, nor a
bug in python-gnupg) anyway.
2014-11-19 03:46:44 +00:00
Isis Lovecruft d9116bace6
Replace UnicodeDecodeErrors caused by Python2 readline() method.
* CHANGE gnupg._meta.GPGBase.__init__() to register the builtin
   `codecs.replace_errors` handler and a global codecs "strict" error
   handler.
 * FIXES Issue #49:
   https://github.com/isislovecruft/python-gnupg/issues/49
2014-10-28 01:01:03 +00:00
Charles Duffy 98e0fc7cf5 properly pass argument during trustdb repair 2014-10-02 04:56:56 -05:00
Charles Duffy 1b8c305829 Continue search for a usable binary if entries are symlinks
Existing code gives up searching for a GnuPG executable (returning None --
contrary to the docstring indicating that a RuntimeError will be thrown in all
cases where no binary can be found) if the first item found is a symlink or is
not accessed via an absolute path.

This refactored version moves the filtering logic down into the _which helper
-- and thus continues to search past unacceptable results -- even if the first
item found is not acceptable.
2014-09-30 20:45:44 -05:00
Charles Duffy 41c388e8f7 Ignore PROGRESS messages during verify operation
Parsing such messages would change documented behavior (which specifies a
limited set of messages, not conforming with the given status codes). Ignoring
them is thus the safer change.
2014-09-30 20:28:50 -05:00
Isis Lovecruft 4a8a8c8592
Close process FDs after __init__() sanity check.
* FIXES and issue discovered by ttanner (https://github.com/ttanner)
   in `gnupg._meta.GPGBase._check_sane_and_get_gpg_version()` where the
   GnuPG process wasn't closed and its file descriptors were left
   hanging.

 * FIXES part of Issue #63.
   https://github.com/isislovecruft/python-gnupg/issues/63

   There were so many hanging FD issues when I started patching
   upstream python-gnupg ― I doubt I found all of them. I probably even
   introduced some along the way. And, as ttanner pointed out, this
   patch doesn't fix the issue fully, so there are likely more.
2014-09-27 01:22:27 +00:00
Isis Lovecruft 572c911b82 Merge branch 'fix/30-hidden-recipient' into develop 2014-09-27 00:38:59 +00:00
Isis Lovecruft 4da7ec92bd
Handle KEYREVOKED status message during signature verification.
If we get a VALIDSIG, but the signing key has since been revoked, we
(mostly) ignore the KEYREVOKED status message (except to append "key
revoked" to the `Verify.status` string).

 * ADD ability to handle KEYREVOKED status to `gnupg._parsers.Verify`.

 * FIXES Issue #66
   https://github.com/isislovecruft/python-gnupg/issues/66

 * THANKS TO Tom Galloway for finding this bug.
   https://github.com/tomgalloway

 * CLOSES PR#38
   https://github.com/isislovecruft/python-gnupg/pull/38
2014-09-26 03:39:36 +00:00
Isis Lovecruft b51b0eb5ac
Only use `--debug-level=` syntax if GnuPG<=1.4.18.
* FIXES Issue #44 (again):
   https://github.com/isislovecruft/python-gnupg/issues/44#issuecomment-56907151
2014-09-26 02:43:22 +00:00
Isis Lovecruft bb5e2444ad
Cleanup logic for helping users who set a weird `verbose=` level.
* ADD new `gnupg._meta.GPGBase._set_verbose()` method, which will set
   `'basic'` as the default `--debug-level` for GnuPG, if the user did
   something weird like specifying `verbose=True` or typoing one of the
   string levels (e.g. `verbose='guruu'`).
2014-09-26 02:36:12 +00:00
Isis Lovecruft 6e228c3ef0
Move logic for sanity check and getting binary version to new method.
* CHANGE behaviour so that `gnupg.GPG.binary_version` is set in
   `gnupg._meta.GPGBase.__init__()`, instead of `gnupg.GPG.__init__()`.

 * ADD new `gnupg._meta.GPGBase._check_sane_and_get_gpg_version()`
   method, and move logic for doing a sanity check on the binary and
   getting the binary's version, which was previously in
   `gnupg.GPG.__init__()`, into this new method.

 * ADD an additional field for the `binary_version` to the logger call
   which displays initialisation settings when `gnupg.GPG.__init__()`
   is run.
2014-09-26 02:29:59 +00:00
Isis Lovecruft eb25ef2b91
Only compile the version string regex once on module import.
* MOVE the compiled regex for matching the GnuPG binary's version to a
   module-level variable in `gnupg._util`.
2014-09-26 02:24:46 +00:00
Isis Lovecruft 7dc3b66de4
Make GnuPG>2.0.x only methods always public.
They are only effective if the binary is GnuPG>=2.0.x anyway, and the
extra code to change the method names depending on the underlying
binary will cause clutter for anyone using python-gnupg.

This change is backwards compatible with python-gnupg<=1.3.1, since the
private methods (e.g. `gnupg.GPG._create_trusttb`) are kept intact.
2014-09-26 02:23:37 +00:00
Isis Lovecruft 69cc991938
Fix bug in determining behaviours for those using GnuPG2 binaries.
This bug caused some extra behaviours which should only be invoked if
the user is using a gpg2 binary. It was caused by checking:

    if _util._is_gpg2:

which is always true, since `_util._is_gpg2` is a function which isn't
being called in this case, i.e.:

    >>> def foo(): return False
    >>> bool(foo)
    True

So instead this should be changed to actually call `_util._is_gpg2()`,
by using `gnupg.GPG.is_gpg2()` which will automatically pass in the
detected binary version number.
2014-09-24 22:13:25 +00:00
Isis Lovecruft 5ad99acd7c
Despite what GnuPG says it expects, it actually expects `--debug-level=`.
* FIXES Issue #44:
   https://github.com/isislovecruft/python-gnupg/issues/44
2014-09-24 22:12:20 +00:00
Isis Lovecruft d5fe2d7cc4
GnuPG's `--debug-level` ints are only required to be ≥ 1.
They aren't required to be ≤ 9, as the previous check in
`gnupg._meta.GPGBase._make_args()` ensured. That is, calling GnuPG from
the commandline, doing:

  $ gpg --debug-level=100000 …

is valid, so we should also accept 10000 (even though everything > 8
means the same debug level anyway).
2014-09-24 22:07:42 +00:00
Isis Lovecruft 7c56dd5864
Merge remote-tracking branch 'akerl/master' into develop 2014-09-24 21:30:46 +00:00
Isis Lovecruft f521545903
Merge remote-tracking branch 'anarcat/dev/monkeysign' into develop 2014-09-24 21:12:05 +00:00
Isis Lovecruft 728b5c8ec9
Merge remote-tracking branch 'kalikaneko/feature/expand-homedir' into develop 2014-09-24 19:49:34 +00:00
Kali Kaneko bde27abcf2 expand ~ in homedir 2014-09-09 16:44:05 -05:00
Antoine Beaupré 293fa6b2e0
fix truth evaluation of import results
for some reason, the count was accessed as if it was a Storage
instance, and it's not, it behaves as a dictionnary

includes test case that will fail with the original code
2014-08-29 21:10:48 -07:00
drebs a26cc9c0f4 Fix verify_file() to really treat signed data as file descriptor. 2014-08-27 12:29:14 -03:00
Isis Lovecruft 4d120a2288
Add unittest which tests encrypt() when `output` is given an open file.
* ADD new unittest, `test_encryption_to_filehandle`.
2014-08-02 04:14:22 +00:00
Isis Lovecruft 83784657d5
Add new unittest that tests encryption with a filename output.
* ADD test_encryption_to_filename which checks that encrypt(...,
   output='somefilename.gpg') works correctly (when `output` is a string
   containing the filename).
   This tests for the bug reported in Issue #24.
   https://github.com/isislovecruft/python-gnupg/issues/24
2014-08-02 04:02:15 +00:00
Isis Lovecruft 137d3ac5c5
Fix encrypting to filenames and/or file-like objects.
* FIXES Issue#24, which prevented python-gnupg from encrypting to a
   filename given as a string to the `output` parameter of
   `gnupg.GPGMeta._encrypt()`.

 * THANKS TO by Bill Buddington of SecureDrop and Yan Zhu of the
   Electronic Frontier Foundation (EFF) for finding and reporting the
   bug. The ticket for this bug can be viewed at:
   https://github.com/isislovecruft/python-gnupg/issues/24
2014-08-02 03:33:55 +00:00
Isis Lovecruft a238f9ad86
Merge remote-tracking branch 'kalikaneko/feature/subprocess_shell_false' into develop 2014-08-02 00:25:36 +00:00
kali 36c701b08f do not expand shell on subprocess 2014-08-01 17:37:11 -05:00
kali 99e3407036 fix failing test_signature_string_bad_passphase
also, do pass a passphrase to test_signature_string_verification
so that we have something to compare to.
2014-08-01 17:13:27 -05:00
kali 90c8586c8d substitute expired test certificates 2014-08-01 17:13:22 -05:00
Les Aker ff96904233 Merge branch 'master' of github.com:isislovecruft/python-gnupg 2014-06-14 19:39:07 -04:00
Isis Lovecruft ebd93db8c2
Merge remote-tracking branch 'zigg/fix/py3k-tests' into develop 2014-06-04 20:30:44 +00:00
Isis Lovecruft a508005d77
Merge remote-tracking branch 'ttanner/fix/default_key' into develop 2014-06-04 19:17:10 +00:00
Thomas Tanner 1fd400b5d3 more py2.6 fixes 2014-04-23 14:49:24 +02:00
Thomas Tanner 6b7fe3467d py2.6 support for testing 2014-04-23 14:06:30 +02:00
Matt Behrens e87e67cf15 more tests for #16. all now pass except one 2014-03-31 11:32:35 -04:00
Matt Behrens 3be2697a1b WIP fixing serveral Python 3 tests for #16 2014-03-30 19:53:45 -04:00
Matt Behrens 929fad0a1a prune unused exceptions imports for Python 3 2014-03-26 22:33:03 -04:00
Thomas Tanner 0d88a282ee fix import of OrderedDict 2013-12-29 01:56:25 +01:00
Isis Lovecruft 2bac4a67ed
Allow GnuPG flags for anonymising keyids of encrypted messages.
* ADD `--hidden-encrypt-to` and `--hidden-recipient` options to
   `hex_options` in gnupg._parsers._get_options_group().
 * ADD `--throw-keyids` option to `none_options` in
   gnupg._parsers._get_options_group().
 * FIXES issue #30:
   https://github.com/isislovecruft/python-gnupg/issues/30
 * NEEDS unittests still.
2013-12-05 01:24:04 +00:00
Isis Lovecruft 425d116ae0
Rewrite verification unittests to use correct parameters 2013-12-04 10:16:04 +00:00
Isis Lovecruft 56fab92b48
Fix issue with detached sig verification not writing verify output.
In the method `gnupg.GPG.verify_file()`, the `writer` was improperly
initialised: `_util._threaded_copy_data` was being given a filename when
it expects an open `file` object which it can read() from. Additionally,
the `writer` parameter was missing from the call to
`gnupg.GPG._collect_output()`, so even if it had been properly
initialised, the output would not have been written to the stdin of the
thread GnuPG was being called within.
2013-12-04 10:10:18 +00:00