我正在使用Pyme与GPGME进行交互,并且在签名/加密方面没有任何问题。但是,当我尝试解密时,尽管通过c.set_passphrase_cb
回调设置了密码,但它始终会提示密码。我做错了吗?
答案 0 :(得分:1)
我有类似的问题。 我的代码如下所示:
def passphrase_callback(hint ='',desc ='',prev_bad =''): 返回'密码'
类CryptoEngine: class NoSignKeys(例外): def init (self,str): 例外。 init (self,str)
def __init__(self, user_id, passphrase):
"Initialize with ID (e-mail)"
self.user_id = user_id
self.passphrase = passphrase
def verify(self, data):
c = core.Context()
sig = core.Data(string = data)
file = None
plain = core.Data()
c.op_verify(sig, file, plain)
result = c.op_verify_result()
plain.seek(0, 0)
plaintext = plain.read()
sig = result.signatures
status = False
for s in sig:
status = (s.status == 0)
return status, plaintext
def sign(self, data):
c = core.Context()
for sigkey in c.op_keylist_all(self.user_id, 1):
if sigkey.can_sign:
c.signers_add(sigkey)
if not c.signers_enum(0):
raise CryptoEngine.NoSignKeys("No secret %s's keys suitable for signing" % self.user_id)
plain = core.Data(data)
sig = core.Data()
c.set_passphrase_cb(passphrase_callback)
c.op_sign(plain, sig, mode.CLEAR)
sig.seek(0, 0)
return sig.read()
尽管设置了密码短语回调,我仍然会收到一个消息框要求 密码短语或通知密码错误的异常。 有人解决了这个问题,可以分享他的知识吗? 谢谢, 颜
答案 1 :(得分:0)
在设置密码短语回调之前添加“c.set_armor(1)”。