[kepi] ability to use subkeys. Fixes #6051

This commit is contained in:
Yann Leboulanger 2011-03-26 22:35:13 +01:00
parent bba6eb6a27
commit c79528f646
2 changed files with 17 additions and 3 deletions

View File

@ -488,7 +488,7 @@ class GPG(object):
result = ListKeys() result = ListKeys()
self._collect_output(p, result, stdin=p.stdin) self._collect_output(p, result, stdin=p.stdin)
lines = result.data.decode(self.encoding).splitlines() lines = result.data.decode(self.encoding).splitlines()
valid_keywords = 'pub uid sec fpr'.split() valid_keywords = 'pub uid sec fpr sub'.split()
for line in lines: for line in lines:
if self.verbose: if self.verbose:
print(line) print(line)
@ -830,6 +830,7 @@ class ListKeys(list):
if self.curkey['uid']: if self.curkey['uid']:
self.curkey['uids'].append(self.curkey['uid']) self.curkey['uids'].append(self.curkey['uid'])
del self.curkey['uid'] del self.curkey['uid']
self.curkey['subkeys'] = []
self.append(self.curkey) self.append(self.curkey)
pub = sec = key pub = sec = key
@ -842,6 +843,10 @@ class ListKeys(list):
self.curkey['uids'].append(args[9]) self.curkey['uids'].append(args[9])
self.uids.append(args[9]) self.uids.append(args[9])
def sub(self, args):
subkey = [args[4],args[11]]
self.curkey['subkeys'].append(subkey)
def handle_status(self, key, value): def handle_status(self, key, value):
pass pass

View File

@ -1261,6 +1261,15 @@ def prepare_and_validate_gpg_keyID(account, jid, keyID):
if jid in attached_keys and keyID: if jid in attached_keys and keyID:
attachedkeyID = attached_keys[attached_keys.index(jid) + 1] attachedkeyID = attached_keys[attached_keys.index(jid) + 1]
if attachedkeyID != keyID: if attachedkeyID != keyID:
# Get signing subkeys for the attached key
subkeys = []
for key in gajim.connections[account].gpg.list_keys():
if key['keyid'][8:] == attachedkeyID:
subkeys = [subkey[0][8:] for subkey in key['subkeys'] \
if subkey[1] == 's']
break
if keyID not in subkeys:
# Mismatch! Another gpg key was expected # Mismatch! Another gpg key was expected
keyID += 'MISMATCH' keyID += 'MISMATCH'
elif jid in attached_keys: elif jid in attached_keys: