如何在python中使用gpgme执行对称加密



我正在尝试使用python的包装器实现对称加密到gpgme, pygpgme。不幸的是,我正在使用gpg 2.0.22和gpg-agent 2.0.22。这个邮件列表帖子说,在2.0中忽略了passsphrase回调,这就是我遇到的问题。

当我运行下面的代码时,我总是得到一个错误说'坏的密码短语',但我甚至没有提示一个。理想情况下,我希望能够代表用户提供密码短语:

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永远不会被调用。

我如何提供一个密码短语,以便我可以执行对称加密?

这并不重要。我将使用对称加密的gpg二进制文件。我觉得这个答案很有用。

最新更新