1 |
commit: 5d9e409c8e2dbd6c93052f848b02740bf8dc58c2 |
2 |
Author: Brian Dolbec <dolsen <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sat Dec 27 21:37:23 2014 +0000 |
4 |
Commit: Brian Dolbec <dolsen <AT> gentoo <DOT> org> |
5 |
CommitDate: Tue Dec 30 21:42:26 2014 +0000 |
6 |
URL: http://sources.gentoo.org/gitweb/?p=proj/gentoo-keys.git;a=commit;h=5d9e409c |
7 |
|
8 |
gkeys/gkey.py: Add keys and uid fields, update() to GKEY |
9 |
|
10 |
keys field will hold the primary key fingerprints for the (to be/) installed GKEY. |
11 |
fingerprints and uid fileds will be populated with all uid's and fingerprints defined in subkeys using the update(). |
12 |
|
13 |
--- |
14 |
gkeys/gkeys/gkey.py | 32 +++++++++++++++++++++++++++++--- |
15 |
1 file changed, 29 insertions(+), 3 deletions(-) |
16 |
|
17 |
diff --git a/gkeys/gkeys/gkey.py b/gkeys/gkeys/gkey.py |
18 |
index 41c6d8b..463f007 100644 |
19 |
--- a/gkeys/gkeys/gkey.py |
20 |
+++ b/gkeys/gkeys/gkey.py |
21 |
@@ -18,6 +18,7 @@ GKEY_STRING = ''' ---------- |
22 |
Name.........: %(name)s |
23 |
Nick.........: %(nick)s |
24 |
Keydir.......: %(keydir)s |
25 |
+ UID..........: %(uid)s |
26 |
''' |
27 |
|
28 |
GKEY_FINGERPRINTS = \ |
29 |
@@ -26,10 +27,11 @@ GKEY_FINGERPRINTS = \ |
30 |
''' |
31 |
|
32 |
|
33 |
-class GKEY(namedtuple('GKEY', ['nick', 'name', 'keydir', 'fingerprint'])): |
34 |
+class GKEY(namedtuple('GKEY', ['nick', 'name', 'keydir', 'keys', 'fingerprint', 'uid'])): |
35 |
'''Class to hold the relavent info about a key''' |
36 |
|
37 |
- field_types = {'nick': str, 'name': str, 'keydir': str, 'fingerprint': list} |
38 |
+ field_types = {'nick': str, 'name': str, 'keydir': str, 'keys': list, |
39 |
+ 'fingerprint': list, 'uid': list} |
40 |
__slots__ = () |
41 |
|
42 |
|
43 |
@@ -42,7 +44,12 @@ class GKEY(namedtuple('GKEY', ['nick', 'name', 'keydir', 'fingerprint'])): |
44 |
@property |
45 |
def pretty_print(self): |
46 |
'''Pretty printing a GKEY''' |
47 |
- gkey = {'name': self.name, 'nick': self.nick, 'keydir': self.keydir} |
48 |
+ gkey = { |
49 |
+ 'name': self.name, |
50 |
+ 'nick': self.nick, |
51 |
+ 'keydir': self.keydir, |
52 |
+ 'uid': self.uid, |
53 |
+ } |
54 |
output = GKEY_STRING % gkey |
55 |
for f in self.fingerprint: |
56 |
fingerprint = {'fingerprint': f, 'keyid': '0x' + f[-16:]} |
57 |
@@ -50,6 +57,25 @@ class GKEY(namedtuple('GKEY', ['nick', 'name', 'keydir', 'fingerprint'])): |
58 |
return output |
59 |
|
60 |
|
61 |
+ def update(self, result_list): |
62 |
+ '''Processes a results instance from a colon listing |
63 |
+ and mines all fingerprints found. |
64 |
+ |
65 |
+ @param result_list: list of pyGPG.output.GPGResult instances |
66 |
+ (one for each fingerprint in the list) |
67 |
+ @return: A new, updated GKEY instance |
68 |
+ ''' |
69 |
+ fingerprints = set() |
70 |
+ uids = set() |
71 |
+ for result in result_list: |
72 |
+ for data in result.status.data: |
73 |
+ if data.name == "FPR": |
74 |
+ fingerprints.add(data.fingerprint) |
75 |
+ elif data.name == "UID": |
76 |
+ uids.add(data.user_ID) |
77 |
+ return self._make([self.nick, self.name, self.keydir, self.keys, list(fingerprints), sorted(uids)]) |
78 |
+ |
79 |
+ |
80 |
class GKEY_CHECK(namedtuple('GKEY_CHECK', ['keyid', 'revoked', 'expired', 'invalid', 'sign'])): |
81 |
|
82 |
__slots__ = () |