Я использую 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 с подпроцессом, но мне интересно, есть ли лучший вариант.