2013-07-05 44 views
3

我使用pygpgme生成密鑰,它工作正常,但我必須提供密碼來GPGME這樣的:如何讓gpg-agent在使用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命令與子進程,但我不知道是否有更好的。

回答

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> 
""")