6

GnuPG - один из этих надоедливых инструментов, у которого нет командной строки без сценариев.

Я хочу запустить gpg --gen-key в скрипте, остальная часть процесса - простые команды. Кому-нибудь повезло с этим? Кажется, что ввод пароля поддерживается, но не другие вопросы, которые он задает, тип ключа, размер ключа, срок действия, имя.

Если вы используете параметр --yes , он по-прежнему показывает диалоги подтверждения.

Есть ли какой-нибудь более дружественный инструмент, например openssl , для генерации ключей?

1 ответ1

9

OpenSSL не поддерживает OpenPGP, поэтому вы не можете использовать его для генерации ключей. В любом случае, GnuPG довольно прост в написании сценариев, используя --with-colons colons вместе с --batch . Для большинства операций использование GPGME - это путь, по крайней мере, для языков программирования высокого уровня, где существуют библиотеки для взаимодействия с ним через GnuPG без необходимости разбора выходных данных самостоятельно.

Возможна также генерация ключей по сценарию: вы ищете автоматическую генерацию ключей, что вполне возможно. В конце все сводится к хранению описания того, как генерировать ключи в файле, и к запуску gpg --batch --genkey [filename] .

Приведенная выше документация содержит следующий пример генерации автоматического ключа:

$ cat >foo <<EOF
     %echo Generating a basic OpenPGP key
     Key-Type: DSA
     Key-Length: 1024
     Subkey-Type: ELG-E
     Subkey-Length: 1024
     Name-Real: Joe Tester
     Name-Comment: with stupid passphrase
     Name-Email: joe@foo.bar
     Expire-Date: 0
     Passphrase: abc
     %pubring foo.pub
     %secring foo.sec
     # Do a commit here, so that we can later print "done" :-)
     %commit
     %echo done
EOF
$ gpg2 --batch --gen-key foo
 [...]
$ gpg2 --no-default-keyring --secret-keyring ./foo.sec \
       --keyring ./foo.pub --list-secret-keys
/home/wk/work/gnupg-stable/scratch/foo.sec
------------------------------------------
sec  1024D/915A878D 2000-03-09 Joe Tester (with stupid passphrase) <joe@foo.bar>
ssb  1024g/8F70E2C0 2000-03-09

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .