A modified version of python-gnupg, including security patches, extensive documentation, and extra features.
 
 
 
 
Go to file
Isis Lovecruft f5b345b1ae
Refactor _util._is_file to handle detached sigs and data on stdin.
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.
2013-12-04 10:02:08 +00:00
docs Fix blockquotes of previous documentation in gnupg.rst. 2013-12-03 22:00:09 +00:00
gnupg Refactor _util._is_file to handle detached sigs and data on stdin. 2013-12-04 10:02:08 +00:00
patches
scripts Add scripts/pep8.py for checking PEP conformity. 2013-07-27 19:44:28 +00:00
.gitattributes Add .gitattributes file for versioneer. 2013-05-13 10:16:39 +00:00
.gitignore Revert "remove docs/_static folder." 2013-12-03 21:42:46 +00:00
.travis.yml
LICENSE Change LICENSE to GPLv3+, after discussion with intrigeri. 2013-07-27 19:27:53 +00:00
Makefile Add Makefile commands for creating zipped doc builds. 2013-12-03 11:20:32 +00:00
README Reorganise docs and update README. 2013-07-02 08:32:34 +00:00
README.md Add symbolic link to markdown README file. 2013-07-09 08:43:27 +00:00
TODO Update TODO file with tasks done and further work needed. 2013-07-28 20:38:49 +00:00
requirements.txt Pin psutil==1.2.1 and add a SHA-256 hash for peep. 2013-12-03 06:43:03 +00:00
setup.cfg Add upload_all setup.cfg alias. 2013-12-03 11:37:32 +00:00
setup.py Update setup.py docs requires: repoze.sphinx → sphinxcontrib-fulltoc. 2013-12-04 00:35:28 +00:00
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.