我想用pyme(一個來自gpgme的python包裝)解密消息。如果我在提示時輸入密碼,但它無法使密碼回調正常工作,它會正常工作。下面是代碼在沒有用戶交互的情況下用pyme解密PGP的問題
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
不幸的是,這個例子中的縮進錯誤只是一個複製和粘貼錯誤。在我的代碼中,回調函數正確地返回一個字符串。你運行的是什麼版本的python/pyme/os,你可以得到這個工作? – user19745 2010-09-19 17:02:52
@ user19745我使用libgpgme11 1.2.0-1.2和python-pyme 0.8.1 + clean-4運行Debian測試。 – llasram 2010-09-20 12:21:56