【发布时间】:2012-12-26 01:04:25
【问题描述】:
我想知道生成加密/签名 PGP 消息的用户的公钥。
我查看了 python-gnupg API,但我发现了如何检查签名是否正常
GPG().verify(data)
如果可以验证签名,则表示公钥在密钥环中。我怎样才能找到它是哪一个?
【问题讨论】:
标签: python pgp public-key gnupg
我想知道生成加密/签名 PGP 消息的用户的公钥。
我查看了 python-gnupg API,但我发现了如何检查签名是否正常
GPG().verify(data)
如果可以验证签名,则表示公钥在密钥环中。我怎样才能找到它是哪一个?
【问题讨论】:
标签: python pgp public-key gnupg
PGP 不在签名/加密消息中存储公钥,它存储密钥标识符(公钥字段哈希的 8 字节部分)。 因此,您应该在文档中查找名为“key id”的内容。 这里是:
签名验证后,签名者信息保存在已验证的属性中:username、key_id、signature_id、fingerprint、trust_level 和 trust_text。
【讨论】:
您想查看verify 方法返回的gnupg.Verify 对象的fingerprint 属性。例如:
>>> 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]
【讨论】: