我正在尝试使用python对gpgme,pygpgme的包装器来实现对称加密。不幸的是,我使用的是 gpg 2.0.22 和 gpg-agent 2.0.22。这个邮件列表帖子说密码回调在 2.0 中被忽略,这是我遇到的问题。
当我运行以下代码时,我总是收到一条错误消息,提示“密码错误”,但我什至没有提示输入密码。理想情况下,尽管我希望能够代表用户提供密码:
import gpgme
def passphrase_cb(uid_hint, passphrase_info, prev_was_bad, fd):
print "Entered passphrase_cb"
print "uid_hint=%s passphrase_info=%s" % (uid_hint, passphrase_info)
def main():
ctx = gpgme.Context()
ctx.armor = False
ctx.passphrase_cb = passphrase_cb
ctx.set_engine_info(gpgme.PROTOCOL_OpenPGP, "/usr/local/bin/gpg",
"/Users/me/Library/Application Support/temp/test")
input_path = "/tmp/input.pdf"
enc_output_path = "/tmp/output.pdf.gpg"
with open(input_path, 'rb') as input:
with open(enc_output_path, 'wb') as enc_output:
res = ctx.encrypt(None,
gpgme.ENCRYPT_ALWAYS_TRUST,
input,
enc_output)
passphrase_cb
永远不会被调用。
如何提供密码以便执行对称加密?