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

Reply via email to