我尝试使用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()
当我运行此程序并且不以交互方式提供密码时,程序会尝试回调打印“in passphrase Callback”,但随后失败并出现错误:
^{pr2}$首先也是最重要的一点是,为什么密码回调不起作用?其次,如何防止程序在调用密码短语回调之前提示用户输入密码?在
这是在Ubuntu 10.04上运行的
显然,您需要解释关键字
hook
:效果非常好。在
我可以通过从passphrase回调返回
None
来重现您报告的错误。默认情况下,如果Python函数执行完一个函数而没有到达return
语句,则返回None
。是否有可能您意外地从回调中返回None
,可能是因为您的代码错误地提前结束了函数?(错误缩进的想法只是基于示例中非法缩进的猜测。)相关问题 更多 >
编程相关推荐