Как заставить gpg-agent запрашивать парольную фразу при генерации ключей с помощью 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 с подпроцессом, но мне интересно, есть ли лучший вариант.


person user2554214    schedule 05.07.2013    source источник


Ответы (1)


Наконец-то разобрался. Для запроса требуется управляющий оператор '%ask-passphrase'.

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