python-gnupg:检索签名消息的公钥

时间:2013-01-11 12:35:17

标签: python pgp public-key gnupg

我想知道生成加密/签名PGP消息的用户的公钥。

我查看了python-gnupg API,但我刚刚发现如何检查签名是否正常

GPG().verify(data)

如果可以验证签名,则表示公钥在密钥环中。我怎样才能找到它是哪一个?

2 个答案:

答案 0 :(得分:3)

您想要查看fingerprint方法返回的gnupg.Verify对象的verify属性。例如:

>>> gpg = gnupg.GPG()
>>> v = gpg.verify(data)
>>> v.fingerprint
u'3D2822FCA7D73D07F65B1514C9A99684DEDF97D5'

然后,您可以过滤list_keys以查找相关密钥:

>>> [k for k in gpg.list_keys(v.fingerprint)
     if k['fingerprint'] == v.fingerprint]

答案 1 :(得分:2)

PGP不会在签名/加密消息中存储公钥,它存储密钥标识符(公钥字段的哈希值的8字节部分)。 所以你应该找一个名为' key id'在文档中。 这是:

验证签名后,签名者信息将保存在已验证的属性中:username,key_id,signature_id,fingerprint,trust_level和trust_text。