Estrazione del keyid PGP dal file di chiave pubblica

15

Esiste un modo tramite uno strumento CLI o una sorta di API per estrarre l'ID della chiave PGP dal blocco della chiave pubblica PGP?

Ho trovato il valore hexa della chiave nel file binario, ma suppongo che la posizione sia basata sul tipo / dimensione della chiave.

Fondamentalmente, ho la chiave pubblica formattata base64 e vorrei recuperare l'ID della chiave da essa, senza importarla con GnuPG.

    
posta golja 04.10.2013 - 16:34
fonte

6 risposte

11

RFC 4880 sul formato dei messaggi OpenPGP parla di come calcolare l'ID della chiave pubblica.

Estratti dalla sezione 12.2 :

For a V3 key, the eight-octet Key ID consists of the low 64 bits of the public modulus of the RSA key.

E per i tasti V4:

A V4 fingerprint is the 160-bit SHA-1 hash of the octet 0x99, followed by the two-octet packet length, followed by the entire Public-Key packet starting with the version field. The Key ID is the low-order 64 bits of the fingerprint.

È possibile analizzare facilmente gli ultimi 64 bit dalle chiavi pubbliche codificate base64, che è l'ID della chiave pubblica corrispondente.

    
risposta data 04.10.2013 - 16:57
fonte
12

Puoi utilizzare gpg --dry-run per impedire le modifiche.

La riga seguente stamperà l'id della chiave nella sua uscita (può essere modificata usando i normali modificatori come --with-colons per ulteriori elaborazioni). A4FF2279 è l'ID della chiave qui.

$ 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

Ho appena provato, la chiave non è stata memorizzata nel mio portachiavi, ma l'ID della chiave è stato stampato. Ma attenzione con --dry-run , la pagina man ha un avvertimento:

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

Una discussione più approfondita di più varianti per l'output leggibile dall'uomo, leggibile da una macchina e molto tecnica per diverse versioni di GnuPG si trova in Stack Overflow question Come visualizzare i dettagli della chiave gpg senza importarla? . Tutti loro presenteranno anche l'ID della chiave.

    
risposta data 04.10.2013 - 17:13
fonte
3

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

Ad esempio:

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

gpg --with-fingerprint GPG-KEY-elasticsearch

    
risposta data 09.11.2017 - 13:03
fonte
2

Per evitare il problema "non completamente implementato" menzionato nella risposta di Jens Erat, usa gpg --homedir su una directory temporanea. Potrebbe essere necessario modificare il comando mktemp in base alla piattaforma:

gpg --homedir $( mktemp -d -t '' ) --import /tmp/somekey.asc
    
risposta data 19.11.2014 - 22:39
fonte
1

Dopo che la chiave pubblica è stata importata

pgp --import PublicKeyToImport.asc

esegui

pgp --list-userids

per determinare la chiave o l'ID utente da utilizzare con --encrypt .

Alg  Type Size/Type Flags   Key ID     User ID
---- ---- --------- ------- ---------- -------
    
risposta data 26.05.2016 - 02:15
fonte
0

Dal manuale gpg (gpg (GnuPG) 2.2.11):

--show-keys

This commands takes OpenPGP keys as input and prints information about them in the same way the command --list-keys does for locally stored key. In addition the list options show-unusable-uids, show-unusable-subkeys, show-notations and show-policy-urls are also enabled. As usual for automated processing, this command should be combined with the option --with-colons.

Ad esempio:

$ 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]

dove 9DC858229FC7DD38854AE2D88D81803C0EBFCD88 è l'ID della chiave.

    
risposta data 17.12.2018 - 09:33
fonte

Leggi altre domande sui tag