특정 키로 서명된 모든 키 나열

특정 키로 서명된 모든 키 나열

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

관련 정보