사용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