diff options
author | drebs <drebs@leap.se> | 2012-12-03 12:12:01 -0200 |
---|---|---|
committer | drebs <drebs@leap.se> | 2012-12-03 12:12:01 -0200 |
commit | d1f25b2c013d1f7ebf3a0f5239b0c28c1189896a (patch) | |
tree | 061e380bd9546a17d366f68ee22f8f3a46ad63e1 | |
parent | c44d3870bf93ed6e6d466275f2adaa87697e29f7 (diff) |
Add python-gnupg simple wrapper
-rw-r--r-- | __init__.py | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/__init__.py b/__init__.py index 6ba64a61..7991f898 100644 --- a/__init__.py +++ b/__init__.py @@ -4,3 +4,40 @@ from leap import * from openstack import * + +import gnupg + +class GPGWrapper(): + """ + This is a temporary class for handling GPG requests, and should be + replaced by a more general class used throughout the project. + """ + + GNUPG_HOME = "~/.config/leap/gnupg" + GNUPG_BINARY = "/usr/bin/gpg" # this has to be changed based on OS + + def __init__(self, gpghome=GNUPG_HOME, gpgbinary=GNUPG_BINARY): + self.gpg = gnupg.GPG(gnupghome=gpghome, gpgbinary=gpgbinary) + + def find_key(self, email): + """ + Find user's key based on their email. + """ + for key in self.gpg.list_keys(): + for uid in key['uids']: + if re.search(email, uid): + return key + raise LookupError("GnuPG public key for %s not found!" % email) + + def encrypt(self, data, recipient, sign=None, always_trust=False, + passphrase=None, symmetric=False): + return self.gpg.encrypt(data, recipient, sign=sign, + always_trust=always_trust, + passphrase=passphrase, symmetric=symmetric) + + def decrypt(self, data, always_trust=False, passphrase=None): + return self.gpg.decrypt(data, always_trust=always_trust, + passphrase=passphrase) + + def import_keys(self, data): + return self.gpg.import_keys(data) |