This fixes an issue reported by @adulau on Github where importing KeyA and asking for the ``ImportResult.fingerprints`` would list KeyA's fingerprints, and then importing KeyB and asking for the ``ImportResult.fingerprints`` would list both KeyA and KeyB's fingerprints. This was caused by a side effect resulting from the ``ImportResult.fingerprints`` being a class-level attribute, which gets modified by the first call to ``gnupg.GPG.import_key()``, causing later instances of ``ImportResult`` to retain the side effect. This commit causes the ``ImportResult`` class to be indempotent under sequential composition calls to ``gnupg.GPG.import_keys()``, ultimately resulting in listing, upon each key import attempt, only the fingerprints of the keys which were listed *that* time. * FIXES Issue #81 https://github.com/isislovecruft/python-gnupg/issues/81 |
||
---|---|---|
docs | ||
examples | ||
gnupg | ||
.gitattributes | ||
.gitignore | ||
LICENSE | ||
MANIFEST.in | ||
Makefile | ||
README | ||
README.md | ||
TODO | ||
requirements.txt | ||
setup.cfg | ||
setup.py | ||
versioneer.py |
README.md
python-gnupg
Fork of python-gnupg-0.3.2, patched
to fix a potential vulnerability which could result in remote code execution,
do to unsanitised inputs being passed to subprocess.Popen([...], shell=True)
.
Installation
From PyPI
It's simple. Just do:
[sudo] pip install gnupg
From this git repository
To install this package from this git repository, do:
git clone https://github.com/isislovecruft/python-gnupg.git
cd python-gnupg
make install
make test
Optionally to build the documentation after installation, do:
make docs
To get started using python-gnupg's API, see the online documentation, and import the module like so:
>>> import gnupg
The primary interface class you'll likely want to interact with is
gnupg.GPG
:
>>> gpg = gnupg.GPG(binary='/usr/bin/gpg',
... homedir='./keys',
... keyring='pubring.gpg',
... secring='secring.gpg')
>>> batch_key_input = gpg.gen_key_input(
... key_type='RSA',
... key_length=4096)
>>> print batch_key_input
Key-Type: RSA
Name-Email: isis@wintermute
Key-Length: 4096
Name-Real: Autogenerated Key
%commit
>>> key = gpg.gen_key(batch_key_input)
>>> print key.fingerprint
245D8FA30F543B742053949F553C0E154F2E7A98
Bug Reports & Feature Requests
Currently, the bugtracker is here on Github. This may change in the future, but for now please feel free to use it to make bugreports and feature requests.
Public comments and discussions are also welcome on the bugtracker, or as tweets.
Patches are greatly appreciated, and if unsuitable for merging I will make improvement suggestions based on code review until the patch is acceptable.