A modified version of python-gnupg, including security patches, extensive documentation, and extra features.
Python Makefile
Switch branches/tags
Clone or download
Permalink
Failed to load latest commit information.
docs Rename the gnupg package to pretty_bad_protocol. Jul 6, 2018
examples Fix bug in example/make-8192-bit-key.py resulting from parser changes. Mar 18, 2015
pretty_bad_protocol Merge branch 'feature/travis' into develop Aug 1, 2018
.coveragerc Add .coveragerc file. Mar 18, 2015
.gitattributes Add .gitattributes file for versioneer. May 13, 2013
.gitignore Rename the gnupg package to pretty_bad_protocol. Jul 6, 2018
.travis.yml According to Travis, python-2.6 won't work anymore. Jul 26, 2018
CODE_OF_CONDUCT.md Add a code of conduct and information on contributing. May 15, 2017
CONTRIBUTING.md Add a code of conduct and information on contributing. May 15, 2017
LICENSE Change LICENSE to GPLv3+, after discussion with intrigeri. Jul 27, 2013
MANIFEST.in Exclude logfiles and Emacs autosave files from being packaged on PyPI. Sep 26, 2014
Makefile Keysigning and expiration changes are currently broken on py3k. Jul 27, 2018
README Merge remote-tracking branch 'wimglenn/new_link_for_readme' into develop Jul 25, 2018
README.rst Convert README to ReStructuredText. Jun 1, 2015
TODO Remove irrelevant TODO item. Sep 26, 2014
requirements.test.txt Add travis.yml config. Jul 26, 2018
requirements.txt relax psutil version pinning Jul 2, 2014
setup.cfg Fix setup.cfg 'upload_all' alias. Dec 4, 2013
setup.py According to Travis, python-2.6 won't work anymore. Jul 26, 2018
versioneer.py Add versioneer and restructure the repo into a src/ dir. May 12, 2013

README

pretty-bad-protocol (a.k.a. python-gnupg) On PyPI

Complete rewrite of Vinay Sajip's python-gnupg, including patches to fix a shell injection vulnerability due to unsanitised inputs being passed to subprocess.Popen([...], shell=True).

Installation

From PyPI

It's simple. Just do:

[sudo] pip install pretty-bad-protocol

Additionally, the legacy way to install versions of this library < 3.0.0 is:

[sudo] pip install gnupg

From git

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 Sphinx documentation, do:

make docs

To get started using python-gnupg's API, see the documentation, and import the module like so:

.. code-block:: python
>>> from pretty_bad_protocol 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

>>> message = "The crow flies at midnight."
>>> encrypted = str(gpg.encrypt(message, key.fingerprint))
>>> decrypted = str(gpg.decrypt(encrypted))
>>> assert decrypted == message

Bug Reports & Feature Requests

Our bugtracker can be found on Github. Public comments and discussions are also welcome on the bugtracker. Patches are always welcome.

I increasingly have less and less time to deal with maintaining this module. Please be patient, and if there is a patch your project urgently needs, please consider temporarily forking until I or one of the other maintainers can get to your issue.