GnuPGは、スクリプト化できないコマンドラインを持つこれらの厄介なツールの1つです。
スクリプトでgpg --gen-key
を実行したいのですが、残りのプロセスは単純なコマンドです。誰かがこれで運が良かったですか?パスワードの入力はサポートされているようですが、キータイプ、キーサイズ、有効期限、名前など、他の質問はサポートされていません。
--yes
オプションを使用した場合でも、確認ダイアログが表示されます。
openssl
のようなよりフレンドリーなツールを使用してキーを生成する方法はありますか?
OpenSSLはOpenPGPをサポートしていないため、鍵の生成には使用できません。とにかく、GnuPGは--with-colons
と--batch
を一緒に使用してスクリプトを作成するのはかなり簡単です。ほとんどの操作では、GPGMEを使用するのが最善の方法です。少なくとも、ライブラリが存在する高水準プログラミング言語では、自分で出力を解析することなく、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: [email protected]
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) <[email protected]>
ssb 1024g/8F70E2C0 2000-03-09