Format de fichier de clé publique OpenSSH?
J'ai du mal à analyser un fichier de clé publique OpenSSH. Je crois (mais je ne suis pas certain) que le format est détaillé dans la RFC 4253, Protocole de couche de transport Secure Shell (SSH) Section 6.6, Algorithmes à clé publique.
Dans le cas d'une clé RSA, la RFC dit :
Le format de clé "ssh-rsa" a l'encodage spécifique suivant :
string "ssh-rsa" mpint e mpint n
Ici, les paramètres 'e' et 'n' forment le blob de clé de signature.
Voici là où les problèmes commencent. Le document ne fournit pas de grammaire et ne définit pas ce que sont string
et mpint
. Ce qui conduit à :
$ cat rsa.ssh.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQDSNM6RVVmwN3y0NurIQnmZgjcx5K5zzZu9nDqopW4J
In/mr8OYZI3heSJShnIM8EThvwVGXXXyyJVRQAvRHYFO4DxS6bufSNWr3BxBGaGYlYxI9mgvQnT6+MzE
3oZyEMdQNPlV5VfbileXlrPoAk1TkGdVdhwdLJMI2B4KUyMf+Q== jwalton@test
Puis :
$ echo 'AAAAB3NzaC1yc2EAAAADAQABAAAAgQDSNM6RVVmwN3y0NurIQnmZgjcx5K5zzZu9nDqopW4
JIn/mr8OYZI3heSJShnIM8EThvwVGXXXyyJVRQAvRHYFO4DxS6bufSNWr3BxBGaGYlYxI9mgvQnT6+M
zE3oZyEMdQNPlV5VfbileXlrPoAk1TkGdVdhwdLJMI2B4KUyMf+Q==' | base64 -d > rsa.bin
Et enfin :
$ hexdump -C rsa.bin
00000000 00 00 00 07 73 73 68 2d 72 73 61 00 00 00 03 01 |....ssh-rsa.....|
00000010 00 01 00 00 00 81 00 d2 34 ce 91 55 59 b0 37 7c |........4..UY.7||
00000020 b4 36 ea c8 42 79 99 82 37 31 e4 ae 73 cd 9b bd |.6..By..71..s...|
00000030 9c 3a a8 a5 6e 09 22 7f e6 af c3 98 64 8d e1 79 |.:..n.".....d..y|
00000040 22 52 86 72 0c f0 44 e1 bf 05 46 5d 75 f2 c8 95 |"R.r..D...F]u...|
00000050 51 40 0b d1 1d 81 4e e0 3c 52 e9 bb 9f 48 d5 ab |Q@....N.<R...H..|
00000060 dc 1c 41 19 a1 98 95 8c 48 f6 68 2f 42 74 fa f8 |..A.....H.h/Bt..|
00000070 cc c4 de 86 72 10 c7 50 34 f9 55 e5 57 db 8a 57 |....r..P4.U.W..W|
00000080 97 96 b3 e8 02 4d 53 90 67 55 76 1c 1d 2c 93 08 |.....MS.gUv..,..|
00000090 d8 1e 0a 53 23 1f f9 |...S#..|
00000097
Il semble donc y avoir des champs non documentés dans le fichier de clé publique. La RFC ne semble pas se référer à d'autres documents pour les définitions des champs. La RFC ne parvient pas non plus à documenter le fichier de clé privée. Je suis au point mort pour le moment.
Où OpenSSH définit-il les champs utilisés dans ses dossiers clés ?