diff options
author | 2014-12-27 13:37:23 -0800 | |
---|---|---|
committer | 2014-12-30 13:42:26 -0800 | |
commit | 5d9e409c8e2dbd6c93052f848b02740bf8dc58c2 (patch) | |
tree | 34abc01e48fd6cd8fe7a8cc16004f20243440694 /gkeys | |
parent | gkeys: Move all GKEYS definitions to it's own file (diff) | |
download | gentoo-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.py | 32 |
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__ = () |