Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GPG().list_sigs() fails with KeyError #158

Open
heartsucker opened this issue Aug 21, 2016 · 2 comments
Open

GPG().list_sigs() fails with KeyError #158

heartsucker opened this issue Aug 21, 2016 · 2 comments

Comments

@heartsucker
Copy link

Possibly related to #142.

Python:

from gnupg import GPG
print(GPG(homedir='~/.gnupg').list_sigs())

Output:

  File "./test.py", line 2, in <module>
    print(GPG(homedir='~/.gnupg').list_sigs())
  File "/home/heartsucker/code/heartsucker/python-gpg-spider/venv/lib/python3.4/site-packages/gnupg/gnupg.py", line 525, in list_sigs
    self._parse_keys(result)
  File "/home/heartsucker/code/heartsucker/python-gpg-spider/venv/lib/python3.4/site-packages/gnupg/gnupg.py", line 543, in _parse_keys
    getattr(result, keyword)(L)
  File "/home/heartsucker/code/heartsucker/python-gpg-spider/venv/lib/python3.4/site-packages/gnupg/_parsers.py", line 1023, in sig
    self.curkey['sigs'][self.curuid].append(sig)
KeyError: 'Canary <[email protected]>'

This output is the same for listing signatures for all keys or listing signatures for one key. The output is the same for both gpg and gpg2 binaries.

Output from matching gpg commands:

heartsucker@pythagoras:~/code/heartsucker/python-gpg-spider/gpg_spider$ gpg2 --with-colons --fixed-list-mode --list-sigs [email protected]
tru::1:1471722346:1484145775:3:1:5
pub:f:4096:1:9C02F7D8345FA1CA:1471423655:::-:::scSC:
fpr:::::::::3F3371F05A137C1F0F3FF3EC9C02F7D8345FA1CA:
uid:f::::1471423655::0F7C180FFFCC7E33395C12BC497DD957F5A82694::Canary <[email protected]>:
sig:::1:9C02F7D8345FA1CA:1471423655::::Canary <[email protected]>:13x:::::10:
sig:::1:C0A2586F09D77C82:1471423769::::heartsucker <[email protected]>:13x:::::10:
sub:f:4096:1:8EA402228B4D3F51:1471423683:1479199683:::::s:
sig:::1:9C02F7D8345FA1CA:1471423683::::Canary <[email protected]>:18x:::::10:

heartsucker@pythagoras:~/code/heartsucker/python-gpg-spider/gpg_spider$ gpg2 --with-colons --fixed-list-mode --list-sigs [email protected]
tru::1:1471722346:1484145775:3:1:5
pub:u:4096:1:C0A2586F09D77C82:1465922491:1497458491::u:::cESCA:
fpr:::::::::0CEC936888A60171461174C5C0A2586F09D77C82:
uid:u::::1471424169::A0F54BDFEE3849D534ED4CF302D48C66ACA64FB9::heartsucker <[email protected]>:
sig:::1:C0A2586F09D77C82:1465922491::::heartsucker <[email protected]>:13x:::::10:
sig:::1:19DA2F588D28CCF4:1465924060::::Eric Hartsuyker <[email protected]>:13x:::::10:
sig:::1:B75811F71EED3B6B:1471362271::::cvoelcker <[email protected]>:13x:::::8:
sig:::1:61B904B99DCED43B:1467145816::::BerlinLeaks Admin <[email protected]>:13x:::::10:
sig:::1:C0A2586F09D77C82:1471424169::::heartsucker <[email protected]>:13x:::::10:
sig:::1:9C02F7D8345FA1CA:1471423819::::Canary <[email protected]>:13x:::::10:
sig:::1:7635A367EFF7BB6E:1471644582::::info post <[email protected]>:13x:::::10:
uid:u::::1467920257::DDE05E2A5FFC2C415BCDE68F2CB00A481E989C11::heartsucker <[email protected]>:
sig:::1:C0A2586F09D77C82:1467920257::::heartsucker <[email protected]>:13x:::::10:
sig:::1:9C02F7D8345FA1CA:1471423819::::Canary <[email protected]>:13x:::::10:
sig:::1:7635A367EFF7BB6E:1471644582::::info post <[email protected]>:13x:::::10:
uid:u::::1467921473::947C48EBFEBF47BD4B8E7ADA7C583AA0DD284C12::heartsucker <[email protected]>:
sig:::1:C0A2586F09D77C82:1467921473::::heartsucker <[email protected]>:13x:::::10:
sig:::1:9C02F7D8345FA1CA:1471423819::::Canary <[email protected]>:13x:::::10:
sig:::1:7635A367EFF7BB6E:1471644582::::info post <[email protected]>:13x:::::10:
sub:u:4096:1:9185CF2739FE46AC:1465922612:1481474612:::::e:
sig:::1:C0A2586F09D77C82:1465922612::::heartsucker <[email protected]>:18x:::::10:
sub:u:4096:1:F56D44B40ED536A6:1465922653:1481474653:::::s:
sig:::1:C0A2586F09D77C82:1465922653::::heartsucker <[email protected]>:18x:::::10:
sub:u:4096:1:5A104FF068225CA5:1465922687:1481474687:::::a:
sig:::1:C0A2586F09D77C82:1465922687::::heartsucker <[email protected]>:18x:::::10:
sub:r:4096:1:7F1B42C99DFA4D2B:1465923509:1473699509:::::s:
sig:::1:C0A2586F09D77C82:1465923509::::heartsucker <[email protected]>:18x:::::10:
rev:::1:C0A2586F09D77C82:1471422777::::heartsucker <[email protected]>:28x:::::10:

My env:

(venv) heartsucker@pythagoras:~/code/heartsucker/python-gpg-spider/gpg_spider$ python --version
Python 3.4.2
(venv) heartsucker@pythagoras:~/code/heartsucker/python-gpg-spider/gpg_spider$ pip freeze
gnupg==2.0.2
psutil==4.3.0
(venv) heartsucker@pythagoras:~/code/heartsucker/python-gpg-spider/gpg_spider$ uname -a
Linux pythagoras 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt25-2+deb8u3 (2016-07-02) x86_64 GNU/Linux
heartsucker@pythagoras:~/code/heartsucker/python-gpg-spider/gpg_spider$ gpg --version
gpg (GnuPG) 1.4.18
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
heartsucker@pythagoras:~/code/heartsucker/python-gpg-spider/gpg_spider$ gpg2 --version
gpg (GnuPG) 2.0.26
libgcrypt 1.6.3
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, RSA, RSA, ELG, DSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2

@heartsucker
Copy link
Author

In the event someone gets to this before I solve it all the way, the problem is the ListKeys object is not having the uid field called which resets the self.curuid. This causes the KeyError on a subsequent call to sig.

@isislovecruft
Copy link
Owner

@meskio and I have some questions about the patch for this, in the review which was started for the patch in #159.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants