Extracción de la clave PGP del archivo de clave pública

14

¿Existe alguna forma a través de una herramienta CLI o algún tipo de API para extraer el ID de clave PGP del bloque de clave pública PGP?

Encontré el valor hexadecimal de la clave en el archivo binario, pero supongo que la posición se basa en el tipo / tamaño de la clave.

Básicamente, tengo la clave pública formateada en base64 y me gustaría recuperar la ID de la clave sin importarla con GnuPG.

    
pregunta golja 04.10.2013 - 16:34
fuente

6 respuestas

11

RFC 4880 en el formato de mensaje OpenPGP se refiere a cómo calcular la ID de clave a partir de una clave pública.

Extractos de la sección 12.2 :

  

Para una clave V3, la ID de clave de ocho octetos consiste en los 64 bits bajos del módulo público de la clave RSA.

Y para las teclas V4:

  

Una huella digital V4 es el hash SHA-1 de 160 bits del octeto 0x99, seguido por la longitud del paquete de dos octetos, seguido por el paquete completo de clave pública que comienza con el campo de versión. La ID de clave es los 64 bits de orden inferior de la huella digital.

Puede analizar fácilmente los últimos 64 bits de las claves públicas codificadas en base64, que es el ID de la clave pública correspondiente.

    
respondido por el Jor-el 04.10.2013 - 16:57
fuente
12

Puedes usar gpg --dry-run para evitar cambios.

La siguiente línea imprimirá la identificación de la clave en su salida (se puede modificar utilizando los modificadores habituales como --with-colons para un procesamiento adicional). A4FF2279 es la ID de clave aquí.

$ gpg --dry-run --import pubkey.asc
gpg: key A4FF2279: public key "[User ID not found]" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)
gpg: no ultimately trusted keys found

Lo probé, la clave no se almacenó en mi llavero, pero la ID de la clave se imprimió. Pero ten cuidado con --dry-run , la página del manual tiene una advertencia:

   --dry-run
         Don't make any changes (this is not completely implemented).

Una discusión más detallada de múltiples variantes para resultados legibles por el usuario, y muy técnicos para diferentes versiones de GnuPG se encuentra en Pregunta de desbordamiento de pila ¿Cómo mostrar los detalles clave de gpg sin importarlos? . Todos ellos también presentarán la clave de identificación.

    
respondido por el Jens Erat 04.10.2013 - 17:13
fuente
2

Para evitar el problema "no completamente implementado" mencionado en la respuesta de Jens Erat, use gpg --homedir en un directorio temporal. Es posible que deba modificar el comando mktemp en función de su plataforma:

gpg --homedir $( mktemp -d -t '' ) --import /tmp/somekey.asc
    
respondido por el gpg user 19.11.2014 - 22:39
fuente
2

gpg --with-fingerprint GPG-KEY-filename-that-you-downloaded-from-internet

Por ejemplo:

wget https://artifacts.elastic.co/GPG-KEY-elasticsearch

gpg --with-fingerprint GPG-KEY-elasticsearch

    
respondido por el Georgios Doumas 09.11.2017 - 13:03
fuente
1

Después de que se haya importado la clave pública

pgp --import PublicKeyToImport.asc

ejecutar

pgp --list-userids

para determinar la clave o la ID de usuario que se usará con --encrypt .

Alg  Type Size/Type Flags   Key ID     User ID
---- ---- --------- ------- ---------- -------
    
respondido por el Miha 26.05.2016 - 02:15
fuente
-2

Del manual de gpg (gpg (GnuPG) 2.2.11):

  

--show-keys

     

Este comando toma las teclas OpenPGP como entrada e imprime información sobre ellas de la misma manera que el comando --list-keys hace para la clave almacenada localmente. Además, las opciones de lista show-inutilizable-uids, show-inutible-subkeys, show-notations y show-policy-urls también están habilitadas. Como es habitual en el procesamiento automatizado, este comando debe combinarse con la opción --with-colons.

Por ejemplo:

$ gpg --show-keys docker-ce.gpg pub rsa4096 2017-02-22 [SCEA] 9DC858229FC7DD38854AE2D88D81803C0EBFCD88 uid Docker Release (CE deb) <[email protected]> sub rsa4096 2017-02-22 [S]

donde 9DC858229FC7DD38854AE2D88D81803C0EBFCD88 es la identificación de la clave.

    
respondido por el Traz 17.12.2018 - 09:33
fuente

Lea otras preguntas en las etiquetas