使用GNUプライバシーガード(GnuPG):たとえば、特定のキーに対して0xDEADBEEF
ユーザーがそのキーで署名されたUIDを持つ公開鍵のみをキーリングに簡単に一覧表示できる方法は何ですか?
あなたの答えがGnuPG Modern(2.1.x)、GnuPG Stable(2.0.x)、またはGnuPG Classic(1.4.x)に適用されるかどうかを指定できれば便利です。
答え1
GnuPGにはそのようなオプションはありませんが、単純なスクリプトを使用して一致するすべてのキーを一覧表示できます。 @grochmalのスクリプトと比較して、GnuPGの出力形式を読む方が速く、より強力で、--with-colons
プログラム的に解析できます。また、単一のGnuPG呼び出しを制限します。
#!/bin/sh
keyid=${1:-'0000000000000000'}
gpg --with-colons --fingerprint --list-sigs |
while read line; do
packettype="$(echo "${line}" | cut -d':' -f1)"
case $packettype in
fpr)
fingerprint="$(echo "${line}" | cut -d':' -f10)"
;;
sig)
issuedby="$(echo "${line}" | cut -d':' -f5)"
if [ "x${issuedby}" = "x${keyid}" ]; then
echo "${fingerprint}"
fi
;;
esac
done |
uniq
これは、最初の引数として渡される長いキーIDに依存します。とにかくショートカットキーIDを使用しないでください。。
答え2
私が知る限り、そのような選択肢はありません。しかし、スクリプトを書くのはとても簡単です。
#!/bin/sh
KEY=${1:-'C840C4F6'} # that's my key
gpg -k |
grep 'pub ' |
cut -d ' ' -f 4 |
cut -d / -f 2 |
while read x; do
if gpg --list-sigs "$x" | grep C840C4F6 >/dev/null; then
echo "$x"
fi
done
そしてGnuPGはかなり速いので、十分に速く実行されます。 300を超えるキーを使用すると、安価なVPSで1秒未満の時間で実行されます。
非常に古い-k
オプションです。私はこれを2.0と2.1でのみテストしましたが、1.4でも動作すると思います。--list-sigs
gpg