J'ai une copie de la clé gpg du référentiel apt de postgresql et j'aimerais afficher les détails de la clé gpg telle qu'elle apparaît dans le fichier. Est-ce possible sans l'importer dans un trousseau?
Il existe plusieurs niveaux de détail que vous pouvez obtenir en consultant les données clés OpenPGP: un résumé de base, une sortie lisible par machine de ce résumé ou une liste détaillée (et très technique) des paquets OpenPGP individuels.
Pour un bref aperçu d'un fichier de clé OpenPGP, vous pouvez simplement transmettre le nom de fichier en tant que paramètre ou diriger les données de clé via STDIN. Si aucune commande n'est passée, GnuPG essaie de deviner ce que vous voulez faire - et pour les données de clé, il s'agit d'un résumé de la clé:
_$ gpg a4ff2279.asc
gpg: WARNING: no command supplied. Trying to guess what you mean ...
pub rsa8192 2012-12-25 [SC]
0D69E11F12BDBA077B3726AB4E1F799AA4FF2279
uid Jens Erat (born 1988-01-19 in Stuttgart, Germany)
uid Jens Erat <[email protected]>
uid Jens Erat <[email protected]>
uid Jens Erat <[email protected]>
uid Jens Erat <[email protected]>
uid [jpeg image of size 12899]
sub rsa4096 2012-12-26 [E] [revoked: 2014-03-26]
sub rsa4096 2012-12-26 [S] [revoked: 2014-03-26]
sub rsa2048 2013-01-23 [S] [expires: 2023-01-21]
sub rsa2048 2013-01-23 [E] [expires: 2023-01-21]
sub rsa4096 2014-03-26 [S] [expires: 2020-09-03]
sub rsa4096 2014-03-26 [E] [expires: 2020-09-03]
sub rsa4096 2014-11-22 [A] [revoked: 2016-03-01]
sub rsa4096 2016-02-24 [A] [expires: 2020-02-23]
_
En définissant _--keyid-format 0xlong
_, les ID de clé longue sont imprimés au lieu de ID de clé courte non sécurisée :
_$ gpg a4ff2279.asc
gpg: WARNING: no command supplied. Trying to guess what you mean ...
pub rsa8192/0x4E1F799AA4FF2279 2012-12-25 [SC]
0D69E11F12BDBA077B3726AB4E1F799AA4FF2279
uid Jens Erat (born 1988-01-19 in Stuttgart, Germany)
uid Jens Erat <[email protected]>
uid Jens Erat <[email protected]>
uid Jens Erat <[email protected]>
uid Jens Erat <[email protected]>
uid [jpeg image of size 12899]
sub rsa4096/0x0F3ED8E6759A536E 2012-12-26 [E] [revoked: 2014-03-26]
sub rsa4096/0x2D6761A7CC85941A 2012-12-26 [S] [revoked: 2014-03-26]
sub rsa2048/0x9FF7E53ACB4BD3EE 2013-01-23 [S] [expires: 2023-01-21]
sub rsa2048/0x5C88F5D83E2554DF 2013-01-23 [E] [expires: 2023-01-21]
sub rsa4096/0x8E78E44DFB1B55E9 2014-03-26 [S] [expires: 2020-09-03]
sub rsa4096/0xCC73B287A4388025 2014-03-26 [E] [expires: 2020-09-03]
sub rsa4096/0x382D23D4C9773A5C 2014-11-22 [A] [revoked: 2016-03-01]
sub rsa4096/0xFF37A70EDCBB4926 2016-02-24 [A] [expires: 2020-02-23]
pub rsa1024/0x7F60B22EA4FF2279 2014-06-16 [SCEA] [revoked: 2016-08-16]
_
Fournir _-v
_ ou _-vv
_ ajoutera même des informations supplémentaires. Je préfère cependant imprimer les détails de l'emballage dans ce cas (voir ci-dessous).
GnuPG a également un format de sortie séparé par deux points, qui est facilement analysable et a un format stable. Le le format est documenté dans le fichier GnuPG _doc/DETAILS
_ . L'option pour recevoir ce format est _--with-colons
_.
_$ gpg --with-colons a4ff2279.asc
gpg: WARNING: no command supplied. Trying to guess what you mean ...
pub:-:8192:1:4E1F799AA4FF2279:1356475387:::-:
uid:::::::::Jens Erat (born 1988-01-19 in Stuttgart, Germany):
uid:::::::::Jens Erat <[email protected]>:
uid:::::::::Jens Erat <[email protected]>:
uid:::::::::Jens Erat <[email protected]>:
uid:::::::::Jens Erat <[email protected]>:
uat:::::::::1 12921:
sub:-:4096:1:0F3ED8E6759A536E:1356517233:1482747633:::
sub:-:4096:1:2D6761A7CC85941A:1356517456:1482747856:::
sub:-:2048:1:9FF7E53ACB4BD3EE:1358985314:1674345314:::
sub:-:2048:1:5C88F5D83E2554DF:1358985467:1674345467:::
sub:-:4096:1:8E78E44DFB1B55E9:1395870592:1599164118:::
sub:-:4096:1:CC73B287A4388025:1395870720:1599164118:::
sub:-:4096:1:382D23D4C9773A5C:1416680427:1479752427:::
sub:-:4096:1:FF37A70EDCBB4926:1456322829:1582466829:::
_
Depuis GnuPG 2.1.23, l'avertissement _gpg: WARNING: no command supplied. Trying to guess what you mean ...
_ peut être omis en utilisant l'option _--import-options show-only
_ avec la commande _--import
_ (cela fonctionne également sans _--with-colons
_:):
_$ gpg --with-colons --import-options show-only --import a4ff2279
[snip]
_
Pour les anciennes versions: le message d'avertissement est imprimé sur STDERR. Vous pouvez donc simplement lire STDIN pour séparer les informations de clé de l'avertissement.
Sans installer d'autres packages, vous pouvez utiliser gpg --list-packets [file]
pour afficher des informations sur les paquets OpenPGP contenus dans le fichier.
_$ gpg --list-packets a4ff2279.asc
:public key packet:
version 4, algo 1, created 1356475387, expires 0
pkey[0]: [8192 bits]
pkey[1]: [17 bits]
keyid: 4E1F799AA4FF2279
:user ID packet: "Jens Erat (born 1988-01-19 in Stuttgart, Germany)"
:signature packet: algo 1, keyid 4E1F799AA4FF2279
version 4, created 1356516623, md5len 0, sigclass 0x13
digest algo 2, begin of digest 18 46
hashed subpkt 27 len 1 (key flags: 03)
[snip]
_
L'outil pgpdump [file]
fonctionne de manière similaire à _gpg --list-packets
_ et fournit une sortie similaire, mais résout tous ces identificateurs d'algorithme en représentations lisibles. Il est disponible pour probablement toutes les distributions pertinentes (sur les dérivées Debian, le paquet s'appelle pgpdump
comme l'outil lui-même).
_$ pgpdump a4ff2279.asc
Old: Public Key Packet(tag 6)(1037 bytes)
Ver 4 - new
Public key creation time - Tue Dec 25 23:43:07 CET 2012
Pub alg - RSA Encrypt or Sign(pub 1)
RSA n(8192 bits) - ...
RSA e(17 bits) - ...
Old: User ID Packet(tag 13)(49 bytes)
User ID - Jens Erat (born 1988-01-19 in Stuttgart, Germany)
Old: Signature Packet(tag 2)(1083 bytes)
Ver 4 - new
Sig type - Positive certification of a User ID and Public Key packet(0x13).
Pub alg - RSA Encrypt or Sign(pub 1)
Hash alg - SHA1(hash 2)
Hashed Sub: key flags(sub 27)(1 bytes)
[snip]
_
Je semble être capable de s'entendre simplement avec:
$gpg <path_to_file>
Quelles sorties comme ceci:
$ gpg /tmp/keys/something.asc
pub 1024D/560C6C26 2014-11-26 Something <[email protected]>
sub 2048g/0C1ACCA6 2014-11-26
L'op n'a pas précisé en particulier quelles informations clés sont pertinentes. Cette sortie est tout ce qui m'importe.
Pour vérifier et répertorier l'empreinte de la clé (sans l'importer d'abord dans le trousseau), tapez
gpg --with-fingerprint <filename>
Edit: sur Ubuntu 18.04 (gpg 2.2.4) l’empreinte digitale n’est pas affichée avec la commande ci-dessus. Utilisez plutôt l'option --with-subkey-fingerprint
gpg --with-subkey-fingerprint <filename>
L'option --list-packets
analyse les données pgp d'un fichier et affiche sa structure, de manière très technique. Lors de l'analyse d'une clé publique, vous pouvez facilement extraire les identifiants d'utilisateur et les identifiants de clé des signatures.
Méfiez-vous que cette commande niquement analyse le format des données, elle ne valide pas les signatures ni des opérations similaires.
Lorsque je suis tombé sur cette réponse, je cherchais un moyen d'obtenir une sortie facile à analyser. Pour moi, l'option --with-colons
a fait l'affaire:
$ gpg --with-colons file
sec::4096:1:AAAAAAAAAAAAAAAA:YYYY-MM-DD::::Name (comment) email
ssb::4096:1:BBBBBBBBBBBBBBBB:YYYY-MM-DD::::
La documentation peut être trouvée ici .
Vous pouvez également utiliser le commutateur --keyid-format
pour afficher l'ID de touche courte ou longue:
$ gpg2 -n --with-fingerprint --keyid-format=short --show-keys <filename>
qui sort comme ceci (exemple de la clé de dépôt PostgreSQL CentOS):
pub dsa1024/442DF0F8 2008-01-08 [SCA] │
Key fingerprint = 68C9 E2B9 1A37 D136 FE74 D176 1F16 D2E1 442D F0F8 │ honor-keyserver-url
uid PostgreSQL RPM Building Project <[email protected]> │ When using --refresh-keys, if the key in question has a preferred keyserver URL, then use that
sub elg2048/D43F1AF8 2008-01-08 [E]
pgpdump
( https://www.lirnberger.com/tools/pgpdump/ ) est un outil que vous pouvez utiliser pour inspecter les blocs pgp.
Ce n’est pas convivial, et assez technique, cependant,
pgpdump -p test.asc
New: Secret Key Packet(tag 5)(920 bytes)
Ver 4 - new
Public key creation time - Fri May 24 00:33:48 CEST 2019
Pub alg - RSA Encrypt or Sign(pub 1)
RSA n(2048 bits) - ...
RSA e(17 bits) - ...
RSA d(2048 bits) - ...
RSA p(1024 bits) - ...
RSA q(1024 bits) - ...
RSA u(1020 bits) - ...
Checksum - 49 2f
New: User ID Packet(tag 13)(18 bytes)
User ID - test (test) <tset>
New: Signature Packet(tag 2)(287 bytes)
Ver 4 - new
Sig type - Positive certification of a User ID and Public Key packet(0x13).
Pub alg - RSA Encrypt or Sign(pub 1)
Hash alg - SHA256(hash 8)
Hashed Sub: signature creation time(sub 2)(4 bytes)
Time - Fri May 24 00:33:49 CEST 2019
Hashed Sub: issuer key ID(sub 16)(8 bytes)
Key ID - 0x396D5E4A2E92865F
Hashed Sub: key flags(sub 27)(1 bytes)
Flag - This key may be used to certify other keys
Flag - This key may be used to sign data
Hash left 2 bytes - 74 7a
RSA m^d mod n(2048 bits) - ...
-> PKCS-1
malheureusement, il ne lit pas stdin: /