Hi! I've finally found the time to rework the (simple) patch which enables GnuPG 2.1 compatibility.
Please find the patch attached and note that I haven't tested it. Cheers, Tobi
From 979abe1f2949046ac5190ed86e2837dbbfda2633 Mon Sep 17 00:00:00 2001 From: Tobias Mueller <mue...@cryptobitch.de> Date: Tue, 14 Jul 2015 15:35:34 +0200 Subject: [PATCH] Added GnuPG 2.1 compatibility reg. its colon output The newer version of GnuPG seems to have added some more fields. Monkeysign complains like this: Traceback (most recent call last): File "/usr/lib/python2.7/site-packages/keysign/MainWindow.py", line 59, in on_startup notebook.append_page(KeySignSection(self), Gtk.Label('Keys')) File "/usr/lib/python2.7/site-packages/keysign/Sections.py", line 197, in __init__ self.keysPage = KeysPage() File "/usr/lib/python2.7/site-packages/keysign/KeysPage.py", line 75, in __init__ for key in self.keyring.get_keys(None, True, False).values(): File "/usr/lib/python2.7/site-packages/monkeysign/gpg.py", line 385, in get_keys key = OpenPGPkey(keydata) File "/usr/lib/python2.7/site-packages/monkeysign/gpg.py", line 656, in __init__ self.parse_gpg_list(data) File "/usr/lib/python2.7/site-packages/monkeysign/gpg.py", line 698, in parse_gpg_list (null, self.trust, self.length, self.algo, keyid, self.creation, self.expiry, serial, trust, uid, sigclass, purpose, smime, wtf, wtf, wtf) = record ValueError: too many values to unpack This probably addresses https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=773970 --- monkeysign/gpg.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/monkeysign/gpg.py b/monkeysign/gpg.py index c7589a8..9166755 100644 --- a/monkeysign/gpg.py +++ b/monkeysign/gpg.py @@ -683,35 +683,35 @@ class OpenPGPkey(): #print >>sys.stderr, "\n" rectype = record[0] if rectype == 'tru': - (rectype, trust, selflen, algo, keyid, creation, expiry, serial) = record + (rectype, trust, selflen, algo, keyid, creation, expiry, serial) = record[:9] elif rectype == 'fpr': if not self.fpr: self.fpr = record[9] elif rectype == 'pub': - (null, self.trust, self.length, self.algo, keyid, self.creation, self.expiry, serial, trust, uid, sigclass, purpose, smime) = record + (null, self.trust, self.length, self.algo, keyid, self.creation, self.expiry, serial, trust, uid, sigclass, purpose, smime) = record[:12] for p in self.purpose: self.purpose[p] = p[0].lower() in purpose.lower() if self.trust == '': self.trust = '-' elif rectype == 'uid': - (rectype, trust, null , null, null, creation, expiry, uidhash, null, uid, null) = record + (rectype, trust, null, null, null, creation, expiry, uidhash, null, uid) = record[:11] uid = OpenPGPuid(uid, trust, creation, expiry, uidhash) self.uids[uidhash] = uid uidslist.append(uid) elif rectype == 'sub': subkey = OpenPGPkey() - (rectype, trust, subkey.length, subkey.algo, subkey._keyid, subkey.creation, subkey.expiry, serial, trust, uid, sigclass, purpose, smime) = record + (rectype, trust, subkey.length, subkey.algo, subkey._keyid, subkey.creation, subkey.expiry, serial, trust, uid, sigclass, purpose, smime) = record[:14] for p in subkey.purpose: subkey.purpose[p] = p[0].lower() in purpose.lower() self.subkeys[subkey._keyid] = subkey elif rectype == 'sec': - (null, self.trust, self.length, self.algo, keyid, self.creation, self.expiry, serial, trust, uid, sigclass, purpose, smime, wtf, wtf, wtf) = record + (null, self.trust, self.length, self.algo, keyid, self.creation, self.expiry, serial, trust, uid, sigclass, purpose, smime) = record[:14] self.secret = True if self.trust == '': self.trust = '-' elif rectype == 'ssb': subkey = OpenPGPkey() - (rectype, trust, subkey.length, subkey.algo, subkey._keyid, subkey.creation, subkey.expiry, serial, trust, uid, sigclass, purpose, smime, wtf, wtf, wtf) = record + (rectype, trust, subkey.length, subkey.algo, subkey._keyid, subkey.creation, subkey.expiry, serial, trust, uid, sigclass, purpose, smime) = record[:14] if subkey._keyid in self.subkeys: # XXX: nothing else to add here? self.subkeys[subkey._keyid].secret = True -- 2.1.4