bashを介したgpgと自動キー署名に関する質問があります。署名を開始するスクリプトがあります。
gpg --recv $schluessel1
gpg --edit $schluessel1
次のようにしようとすると:
lsign
これは無視され、以下の出力のみが表示されます。
gpg>
上記のヒントに従って手動で作成してlsign
後で作成できますy
。
これらの2つのステップを自動化することは可能ですか?
答え1
同様のことをするスクリプトをドイツ語で書いていますが、問題ではないようです。http://www.openpgp-schulungen.de/scripte/key Generation/key-Generation.sh):
echo addkey$'\n'8$'\n'e$'\n'q$'\n'${length}$'\n'"$expire"$'\n'save$'\n' |
LC_ALL= LANGUAGE=en gpg --batch --display-charset utf-8 --utf8-strings \
--passphrase "$PASSPHRASE" --command-fd 0 --edit-key $x_short_id
これはGnuPG 1.4.xと2.0.xで動作します。
1.4.xでは、lsign
同様の方法でこれを簡単に実行できます。 2.0.xの場合も注意が必要ですgpg-agent
。可能ですが、まだ実装していません。基本的なアイデアは次のとおりです。
gpg-agent
交換した構成から始めますpinentry
。pinentry
FIFOから必要なデータを読み取る代替方法を使用してください(スクリプトはによって開始されるためgpg-agent
)。- バックグラウンドプロセスを開始し、必要なデータをFIFOに書き込みます。
コード例:
echo "OK - what's up?"
while read cmd rest; do
# echo "cmd=$cmd rest=$rest" >&2
: ${PINENTRY_USER_DATA}
case "$cmd" in
\#*)
:
;;
GETINFO)
if [ "pid" = "$rest" ]; then
echo "D $$"
fi
echo "OK"
;;
GETPIN)
read PASSPHRASE <"$input_fifo_path"
echo "D ${PASSPHRASE}"
echo "OK"
;;
BYE)
echo "OK"
exit 0
;;
*)
echo "OK"
;;
esac
done
答え2
私は正解を見つけました。
gpg --recv $key # receive Key from Keyserver
xdotool key y; xdotool key Return # press y and then return
gpg --edit $key lsign save # Sign and save the key
まず、xdotoolをインストールするまでsudo apt-get install xdotool
自動的に実行できます。まだ保存しようとしませんでしたが、うまくいくことを願っています。