gpgパスワードを1回だけ入力して、すべてのサブキー(署名、復号化、認証)のロックを解除できますか?
現時点では、gpgパスワードを3回入力する必要があります(署名、復号、認証)。これは不便です。
私はシェルスクリプトを考え出そうとしました。
#!/bin/bash
set -x
set -e
set +o history
signing_key=77BB3C48
encryption_key=CE998547
tempfile="$(mktemp)"
echo "test" > testfile
unset passphrase || exit 1
read -sp 'Enter password. ' passphrase ; echo
exec 3<<<"$passphrase"
gpg2 --no-tty --use-agent --batch --yes --passphrase-fd 3 --sign-with "$signing_key" --clearsign "$tempfile"
gpg2 --no-tty --use-agent --verify "$tempfile.asc"
gpg2 --no-tty --use-agent --yes --armor --recipient "$encryption_key" --encrypt "$tempfile"
exec 3<<<"$passphrase"
gpg2 --no-tty --use-agent --batch --decrypt --passphrase-fd 3 "$tempfile.asc"
しかし残念ながら、その方法ではパスワードgnupg-agentはパスワードをキャッシュしません。これは修正できますか?
システムインフォメーション:
- そのシェルスクリプトを使用しない場合、gnupg-agentに問題はありません。シェルでファイルに手動で署名/復号化すると、pinentryはパスワードを2回要求し、再起動するまでキャッシュします。
- Debian Wheezyの使用。
- gpgバージョン:
dpkg -l | grep gnupg
ii gnupg 1.4.12-7+deb7u3 i386 GNU privacy guard - a free PGP replacement
ii gnupg-agent 2.0.22-3 i386 GNU privacy guard - password agent
ii gnupg-curl 1.4.12-7+deb7u3 i386 GNU privacy guard - a free PGP replacement (cURL)
ii gnupg2 2.0.22-3 i386 GNU privacy guard - a free PGP replacement (new v2.x)
私はgnupg-usersメーリングリストで少し前に尋ねましたが、返事はありません。
おそらくこの答えはうまくいくでしょうか?おそらくgpg-connect-agent
必要ですか?
exec 3<<<"$passphrase"
私にとっても新しいものでした…そして、あなたが引用した答えに250名の賞金を投げました。