.. -*- coding: utf-8; mode: rst; -*-

**************************************
python-gnupg |On PyPI|
**************************************

Rewrite of `Vinay Sajip's python-gnupg <https://code.google.com/p/python-gnupg/>`__,
including patches to fix a shell injection vulnerability due to unsanitised
inputs being passed to ``subprocess.Popen([...], shell=True)``.

.. |On PyPI| image:: https://badge.fury.io/py/gnupg.png
   :target: https://pypi.python.org/pypi/gnupg

==============
Installation
==============

----------------------------------------
From `PyPI <https://pypi.python.org>`__
----------------------------------------

It's simple. Just do::

    [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::

    >>> 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)

.. _documentation: https://pythonhosted.org/gnupg/

==============================
Bug Reports & Feature Requests
==============================

Our bugtracker can be found
`on Github <https://github.com/isislovecruft/python-gnupg/issues>`__.  Public
comments and discussions are also welcome on the bugtracker, or as
`tweets <https://twitter.com/isislovecruft>`__.  Patches are always welcome.
