如何在使用GPGME生成密钥时让gpg-agent要求密码短语?

时间:2013-07-05 15:23:51

标签: python gpgme

我正在使用pygpgme生成密钥,工作正常,但我必须像这样提供密码到gpgme:

key_params = dedent("""
    <GnupgKeyParms format="internal">
      Key-Type: RSA
      Key-Length: 2048
      Name-Real: Jim Joe
      Passphrase: secret passphrase
      Expire-Date: 0
    </GnupgKeyParms>
""")
ctx = gpgme.Context()
result = ctx.genkey(key_params)

出于安全原因,我宁愿永远不知道密码短语,让gpg-agent为用户提供一个对话框。

当我使用pygpgme进行解密或使用gpg命令行工具生成密钥时,密码对话框会按预期弹出。

一种解决方案是将gpg命令与子进程一起使用,但我想知道是否有更好的命令。

1 个答案:

答案 0 :(得分:2)

终于明白了。该请求需要'%ask-passphrase'控制语句。

key_params = dedent("""
    <GnupgKeyParms format="internal">
      %%ask-passphrase
      Key-Type: RSA
      Key-Length: 2048
      Name-Real: Jim Joe
      Expire-Date: 0
    </GnupgKeyParms>
""")