Commit b9934b8f authored by Tobias Mueller's avatar Tobias Mueller Committed by Antoine Beaupré
Browse files

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
parent a38aef44
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -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