EncryptIt
OpenPGP API and CLI for Python
EncryptIt an OpenPGP (RFC 4880) API and CLI for Python, focusing on testing and clarity.
Currently it provides a debugging tool,
encryptit dumpjson
which converts OpenPGP binary messages into extremely verbose JSON. As decoders for individual packet types are added, thedumpjson
tool will become even more powerful.Next it will provide an API and CLI for symmetrically encrypting and decrypting files using a passphrase.
Eventually (and depending how it goes) we'll tackle asymmetric (public / private key) encryption.
See milestones for more detail.
Quickstart
Install
It's Python, so you probably want to use a virtualenv, then:
$ pip install encryptit
Decode an OpenPGP binary file
# Create an encrypted file with GPG
$ echo "secret message" | gpg --symmetric /tmp/encrypted.gpg
# Decode with encryptit
$ encryptit dumpjson /tmp/encrypted.gpg
Goals / Ambitions
To be the cleanest, most testable OpenPGP implementation.
- Clean, helpful Pythonic API.
- Friendly and familiar command-line tools.
- CPython 2.6+, 3.2+ support, PyPy 2.7+, 3.2+ support.
- Very obvious code layout and implementation.
- Extremely high test coverage (at the expense of functionality).
- PEP8 compliant.
Software Licence: GNU Affero Public Licence v3
Copyright (C) 2015 Paul M Furley paul@paulfurley.com
GNU Affero Public License Version 3.
Proprietary re-licensing may be possible: please email me to discuss.
Other Python OpenPGP Efforts
Currently EncryptIt sacrifices functionality in favour of testing & reliability.
For more functionality, see these other projects (my initial thoughts included alongside).
Updated 2015-05-02.
-
- lots of functionality
- TODO : look more into this one
-
- Lots of functionality.
- MIT licence.
- Quite a lot of tests, but unclear whether they're covering key things?
- How to install?
- Not PEP8 compliant.
-
- Lots of functionality - awesome!
- GPLv3 licence.
- Very sparse testing (dealbreaker).
- Existing tests currently failing on
master
- No Python 2 support.
- Not PEP8 compliant.
-
- Implements obsolete RFC 2440.
- Last updated 2005.
- "Entertainment only"
- No Python 3 support.
- Source control is mercurial.
- TODO: PEP8 compliant?