1

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

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

GPG().verify(data)

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

4

2 回答 2

3

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

>>> 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]
于 2013-01-11T12:42:08.547 回答
2

PGP 不在签名/加密消息中存储公钥,它存储密钥标识符(公钥字段散列的 8 字节部分)。因此,您应该在文档中查找名为“key id”的内容。这里是:

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

于 2013-01-11T12:37:33.630 回答