pyme (gpgme の python ラッパー) を使用してメッセージを復号化しようとしています。プロンプトが表示されたときにパスワードを入力すると問題なく動作しますが、パスフレーズ コールバックが機能しません。ここにコードがあります
import pyme.core
def Callback( x, y, z ):
print 'in passphrase callback'
return 'passphrase'
plain = pyme.core.Data()
cipher = pyme.core.Data(sys.stdin.read())
c = pyme.core.Context()
c.set_armor(1)
c.set_passphrase_cb(Callback)
c.op_decrypt( cipher, plain )
plain.seek(0,0)
print plain.read()
これを実行し、インタラクティブにパスワードを提供しないと、プログラムは「パスフレーズコールバックで」コールバックを印刷しようとしますが、エラーで失敗します:
pyme.errors.GPGMEError: Invocation of gpgme_op_decrypt: Unspecified source: General error (0,1)
何よりもまず、パスフレーズのコールバックが機能しないのはなぜですか? 次に、パスフレーズ コールバックを呼び出す前にプログラムがユーザーにパスワードを要求しないようにするにはどうすればよいでしょうか?
これはUbuntu 10.04で実行されています