我想用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