web-dev-qa-db-ja.com

スクリプトでgpg--gen-keyを使用する方法は?

GnuPGは、スクリプト化できないコマンドラインを持つこれらの厄介なツールの1つです。

スクリプトでgpg --gen-keyを実行したいのですが、残りのプロセスは単純なコマンドです。誰かがこれで運が良かったですか?パスワードの入力はサポートされているようですが、キータイプ、キーサイズ、有効期限、名前など、他の質問はサポートされていません。

--yesオプションを使用した場合でも、確認ダイアログが表示されます。

opensslのようなよりフレンドリーなツールを使用してキーを生成する方法はありますか?

9
teknopaul

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
11
Jens Erat