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 バイト部分) を保存します。そのため、ドキュメントで「キー ID」と呼ばれるものを探す必要があります。ここにあります:

署名が検証されると、検証済みの属性 (username、key_id、signature_id、fingerprint、trust_level、および trust_text) に署名者情報が保持されます。

于 2013-01-11T12:37:33.630 に答える