暗号化/署名された 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 バイト部分) を保存します。そのため、ドキュメントで「キー ID」と呼ばれるものを探す必要があります。ここにあります:
署名が検証されると、検証済みの属性 (username、key_id、signature_id、fingerprint、trust_level、および trust_text) に署名者情報が保持されます。