2

python-gnupg モジュールを動作させて、python スクリプトを使用してファイルに署名および検証できるかどうかを確認しようとしています。次のコードは、呼び出されたときにエラーを解釈しません。

ただし、ファイルに署名したと思ったときに、コードは最後に「未検証」と出力します ( example.txt)。

ドキュメントに何か欠けているに違いありませんが、それを読んだ後、これが署名と検証のために思いついたものです。何か助けてください。

import gnupg

gpg = gnupg.GPG(gnupghome="/home/myname") 

stream = open("example.txt", "rb")

signed_data = gpg.sign_file(stream)

verified = gpg.verify_file(stream)

print "Verified" if verified else "Unverified"
4

1 に答える 1

5

コードにはいくつかの問題がありますが、

1.)gpg = gnupg.GPG(gnupghome="/home/myname")する必要がありますgpg = gnupg.GPG(gnupghome="/home/myname/.gnupg")

2.)を使用してストリームを検証しようとしていますverify_file(stream)が、ストリームは元の署名されていないファイルへのハンドルのままです。verify_file()最初に、署名されたデータを新しいファイルに書き込んでそのファイルのハンドルを呼び出すか、結果を確認する必要がありますsign_file

以下は、sign_fileの結果を使用したデモの実例ですが、その前に、スクリプトで何が起こっているかをトラブルシューティングする方法として、gnupgメソッドの返されたオブジェクトに対するstderrの出力を確認できます。たとえば、を印刷することで、署名されたデータの結果を確認できますsigned_data.stderrverify_fileメソッドの戻りについても同様です。

コードに-

import gnupg

gpg = gnupg.GPG(gnupghome="/home/myname/.gnupg")

stream = open("example.txt", "rb")

signed_data = gpg.sign_file(stream)

verified = gpg.verify(signed_data.data)

print "Verified" if verified else "Unverified"

これがお役に立てば幸いです。

于 2012-07-04T02:46:37.100 に答える