我想知道生成加密/签名PGP消息的用户的公钥。
我查看了python-gnupg API,但我刚刚发现如何检查签名是否正常
GPG().verify(data)
如果可以验证签名,则表示公钥在密钥环中。我怎样才能找到它是哪一个?
答案 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。