aboutsummaryrefslogtreecommitdiff
path: root/gkeys
diff options
context:
space:
mode:
authorBrian Dolbec <dolsen@gentoo.org>2014-12-27 13:37:23 -0800
committerBrian Dolbec <dolsen@gentoo.org>2014-12-30 13:42:26 -0800
commit5d9e409c8e2dbd6c93052f848b02740bf8dc58c2 (patch)
tree34abc01e48fd6cd8fe7a8cc16004f20243440694 /gkeys
parentgkeys: Move all GKEYS definitions to it's own file (diff)
downloadgentoo-keys-5d9e409c8e2dbd6c93052f848b02740bf8dc58c2.tar.gz
gentoo-keys-5d9e409c8e2dbd6c93052f848b02740bf8dc58c2.tar.bz2
gentoo-keys-5d9e409c8e2dbd6c93052f848b02740bf8dc58c2.zip
gkeys/gkey.py: Add keys and uid fields, update() to GKEY
keys field will hold the primary key fingerprints for the (to be/) installed GKEY. fingerprints and uid fileds will be populated with all uid's and fingerprints defined in subkeys using the update().
Diffstat (limited to 'gkeys')
-rw-r--r--gkeys/gkeys/gkey.py32
1 files changed, 29 insertions, 3 deletions
diff --git a/gkeys/gkeys/gkey.py b/gkeys/gkeys/gkey.py
index 41c6d8b..463f007 100644
--- a/gkeys/gkeys/gkey.py
+++ b/gkeys/gkeys/gkey.py
@@ -18,6 +18,7 @@ GKEY_STRING = ''' ----------
Name.........: %(name)s
Nick.........: %(nick)s
Keydir.......: %(keydir)s
+ UID..........: %(uid)s
'''
GKEY_FINGERPRINTS = \
@@ -26,10 +27,11 @@ GKEY_FINGERPRINTS = \
'''
-class GKEY(namedtuple('GKEY', ['nick', 'name', 'keydir', 'fingerprint'])):
+class GKEY(namedtuple('GKEY', ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'uid'])):
'''Class to hold the relavent info about a key'''
- field_types = {'nick': str, 'name': str, 'keydir': str, 'fingerprint': list}
+ field_types = {'nick': str, 'name': str, 'keydir': str, 'keys': list,
+ 'fingerprint': list, 'uid': list}
__slots__ = ()
@@ -42,7 +44,12 @@ class GKEY(namedtuple('GKEY', ['nick', 'name', 'keydir', 'fingerprint'])):
@property
def pretty_print(self):
'''Pretty printing a GKEY'''
- gkey = {'name': self.name, 'nick': self.nick, 'keydir': self.keydir}
+ gkey = {
+ 'name': self.name,
+ 'nick': self.nick,
+ 'keydir': self.keydir,
+ 'uid': self.uid,
+ }
output = GKEY_STRING % gkey
for f in self.fingerprint:
fingerprint = {'fingerprint': f, 'keyid': '0x' + f[-16:]}
@@ -50,6 +57,25 @@ class GKEY(namedtuple('GKEY', ['nick', 'name', 'keydir', 'fingerprint'])):
return output
+ def update(self, result_list):
+ '''Processes a results instance from a colon listing
+ and mines all fingerprints found.
+
+ @param result_list: list of pyGPG.output.GPGResult instances
+ (one for each fingerprint in the list)
+ @return: A new, updated GKEY instance
+ '''
+ fingerprints = set()
+ uids = set()
+ for result in result_list:
+ for data in result.status.data:
+ if data.name == "FPR":
+ fingerprints.add(data.fingerprint)
+ elif data.name == "UID":
+ uids.add(data.user_ID)
+ return self._make([self.nick, self.name, self.keydir, self.keys, list(fingerprints), sorted(uids)])
+
+
class GKEY_CHECK(namedtuple('GKEY_CHECK', ['keyid', 'revoked', 'expired', 'invalid', 'sign'])):
__slots__ = ()