簡體   English   中英

python-gnupg:檢索簽名消息的公鑰

[英]python-gnupg: retrieve public key of a signed message

我想知道生成加密/簽名的PGP消息的用戶的公共密鑰。

我查看了python-gnupg API,但我剛剛發現如何檢查簽名是否正常

GPG().verify(data)

如果簽名可以驗證,則表示公鑰在密鑰環中。 如何找到它是哪一個?

您想看一下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]

PGP不在簽名/加密的消息中存儲公共密鑰,而是存儲密鑰標識符(公共密鑰字段的哈希值的8字節部分)。 因此,您應該在文檔中查找“密鑰ID”。 這里是:

驗證簽名后,簽名者信息將保存在驗證的屬性中:用戶名,key_id,signature_id,指紋,trust_level和trust_text。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM