我想知道生成加密/签名 PGP 消息的用户的公钥。
我查看了 python-gnupg API,但我刚刚找到了如何检查签名是否正常
GPG().verify(data)
如果可以验证签名,则说明公钥在密钥环中。我怎样才能找到它是哪一个?
我想知道生成加密/签名 PGP 消息的用户的公钥。
我查看了 python-gnupg API,但我刚刚找到了如何检查签名是否正常
GPG().verify(data)
如果可以验证签名,则说明公钥在密钥环中。我怎样才能找到它是哪一个?
您想查看方法返回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]
PGP 不在签名/加密消息中存储公钥,它存储密钥标识符(公钥字段散列的 8 字节部分)。因此,您应该在文档中查找名为“key id”的内容。这里是:
验证签名时,签名者信息保存在已验证的属性中:username、key_id、signature_id、fingerprint、trust_level 和 trust_text。