When gnupg.GPG.verify_file() was changed recently to take the filename of the signature file as an argument to GnuPG, and then take the data file to be verified on stdin, the parser in _parsers._check_options() would call _util._is_file(), which would return False and log an error that "'-' is not a file!". This fixes that issue by catching OSError and treating it differently. Additionally, I renamed the _util._is_file() parameter `input`→`filename` to avoid overriding a builtin method. I also replaced the `assert` lines with explicit checks, because `assert`s are stripped out when the Python interpreter is run with -OO. * FIXES an issue with verification of detached signatures whose datafiles are read from stdin. |
||
---|---|---|
docs | ||
gnupg | ||
patches | ||
scripts | ||
.gitattributes | ||
.gitignore | ||
.travis.yml | ||
LICENSE | ||
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(gpgbinary='/usr/bin/gpg',
... gpghome='./keys',
... pubring='pubring.gpg',
... secring='secring.gpg')
>>> batch_key_input = gpg.gen_key_input()
>>> print batch_key_input
Key-Type: RSA
Name-Email: isis@wintermute
Name-Comment: Generated by gnupg.py
Key-Length: 4096
Name-Real: Autogenerated Key
%pubring /home/isis/code/python-gnupg/keys/pubring.gpg
%secring /home/isis/code/python-gnupg/keys/secring.gpg
%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.