列出由给定密钥签名的所有密钥

3 gpg gnupg

使用GNU Privacy Guard (GnuPG):对于某些给定的密钥,例如0xDEADBEEF,用户如何轻松地仅列出其密钥环中具有已由该密钥签名的 UID 的公钥?

如果您可以指定您的答案是用于 GnuPG Modern (2.1.x)、GnuPG Stable (2.0.x) 还是 GnuPG Classic (1.4.x),将会很有帮助。

Jen*_*rat 7

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
Run Code Online (Sandbox Code Playgroud)

这依赖于作为第一个参数传递的长密钥 ID,无论如何都不应该使用短密钥 ID