Listar todas as chaves assinadas por uma dada chave

3

Usando o GNU Privacy Guard (GnuPG) : para uma determinada chave, digamos 0xDEADBEEF , como um usuário pode listar apenas o público? chaves em seu chaveiro que tem um UID que foi assinado por essa chave?

Seria útil se você pudesse especificar se sua resposta é para uso com o GnuPG Modern (2.1.x), o GnuPG Stable (2.0.x) ou o GnuPG Classic (1.4.x).

    
por sampablokuper 23.08.2016 / 01:20

2 respostas

1

Tanto quanto sei, não existe essa opção. No entanto, é trivial para um script juntos:

#!/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

E, graças ao fato de que o GnuPG é bem rápido, ele roda rápido o suficiente. Com > 300 chaves que são executadas em menos de um segundo em um VPS barato.

As opções -k e --list-sigs são muito antigas gpg . Eu testei isso apenas em 2.0 e 2.1, mas tenho certeza que funcionará em 1.4.

    
por 23.08.2016 / 04:19
7

Não existe essa opção no GnuPG, mas você pode usar um script simples para listar todas as chaves correspondentes. Um pouco mais rápido e mais robusto contra entradas maliciosas do que o script @ grochmal está lendo o formato de saída --with-colons do GnuPG, que se destina a ser analisado programaticamente. Eu também estou restringindo a uma única chamada do 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

Isso depende da ID de chave longa a ser passada como primeiro parâmetro, códigos de chave curtos não devem ser usados de qualquer maneira .

    
por 26.08.2016 / 20:36

Tags