2017-01-07 3 views
1

Je possède un certificat numérique (avec .crt extension) tels que:Extrait clé publique du certificat numérique .CRT

-----BEGIN CERTIFICATE----- 
MIGSAgEBMCgGByqGSM49AQECHQD///////////////////////////////7//+Vt 
MAYEAQAEAQUEOQShRVszTfCZ3zD8KKFppGfp5HB1qQ9+ZQ62t6Rcfgif7X+6NEKC 
yvvW9+MZ98CwvVniykvbVW1hpQIdAQAAAAAAAAAAAAAAAAAB3OjS7GGEyvCpcXaf 
sfcCAQE= 
-----END CERTIFICATE----- 

Ma question est de savoir comment puis-je extraire le nombre premier de la clé publique sans le savoir rien d'autre? Je ne peux pas trouver un convertisseur en ligne ou une structure pour le comprendre.

+0

Le contenu que vous avez présenté n'est pas un certificat numérique. Cela ressemble à des détails sur les paramètres associés à une courbe particulière (structure ASN.1 ECParameter). – Crypt32

+0

Ceci fait partie d'un travail sur les signatures numériques. Il dit que je dois faire une opération avec le nombre premier p qui peut être trouvé dans le fichier avec l'extension .der. Je parviens à convertir l'extension .der en .crt et j'ai obtenu ce texte mais je ne peux pas le comprendre, car c'est le p en raison du séparateur '/'. – student

+0

En fait, il s'agit d'un tableau d'octets codé en Base64 de paramètres de clé de courbe elliptique codés en DER ASN.1, de sorte que les barres obliques ne sont pas des séparateurs. Avec OpenSSL, vous pouvez essayer cette commande contre votre fichier: 'openssl ecparam -dans secp256k1.pem -text -param_enc explicite -noout', où' secp256k1.pem' est votre fichier .der. – Crypt32

Répondre

0

Il s'avère que ce fichier est en fait le bloc EC PARAMETERS pour une clé EC, pas un certificat. J'ai découvert cela en vidant les structures ASN.1 et en les comparant à une autre clé EC que j'ai générée.

$ openssl asn1parse -in test.pem -i -dump 
    0:d=0 hl=3 l= 146 cons: SEQUENCE 
    3:d=1 hl=2 l= 1 prim: INTEGER   :01 
    6:d=1 hl=2 l= 40 cons: SEQUENCE 
    8:d=2 hl=2 l= 7 prim: OBJECT   :prime-field 
    17:d=2 hl=2 l= 29 prim: INTEGER   :FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFE56D 
    48:d=1 hl=2 l= 6 cons: SEQUENCE 
    50:d=2 hl=2 l= 1 prim: OCTET STRING 
     0001 - <SPACES/NULS> 
    53:d=2 hl=2 l= 1 prim: OCTET STRING 
     0000 - 05            . 
    56:d=1 hl=2 l= 57 prim: OCTET STRING 
     0000 - 04 a1 45 5b 33 4d f0 99-df 30 fc 28 a1 69 a4 67 ..E[3M...0.(.i.g 
     0010 - e9 e4 70 75 a9 0f 7e 65-0e b6 b7 a4 5c 7e 08 9f ..pu..~e....\~.. 
     0020 - ed 7f ba 34 42 82 ca fb-d6 f7 e3 19 f7 c0 b0 bd ...4B........... 
     0030 - 59 e2 ca 4b db 55 6d 61-a5      Y..K.Uma. 
    115:d=1 hl=2 l= 29 prim: INTEGER   :010000000000000000000000000001DCE8D2EC6184CAF0A971769FB1F7 
    146:d=1 hl=2 l= 1 prim: INTEGER   :01 

Fixation des en-têtes vous permet de lire le fichier comme ceci:

$ openssl ecparam -in test.pem -text 
Field Type: prime-field 
Prime: 
    00:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff: 
    ff:ff:ff:ff:ff:ff:ff:ff:ff:fe:ff:ff:e5:6d 
A: 0 
B: 5 (0x5) 
Generator (uncompressed): 
    04:a1:45:5b:33:4d:f0:99:df:30:fc:28:a1:69:a4: 
    67:e9:e4:70:75:a9:0f:7e:65:0e:b6:b7:a4:5c:7e: 
    08:9f:ed:7f:ba:34:42:82:ca:fb:d6:f7:e3:19:f7: 
    c0:b0:bd:59:e2:ca:4b:db:55:6d:61:a5 
Order: 
    01:00:00:00:00:00:00:00:00:00:00:00:00:00:01: 
    dc:e8:d2:ec:61:84:ca:f0:a9:71:76:9f:b1:f7 
Cofactor: 1 (0x1) 
-----BEGIN EC PARAMETERS----- 
MIGSAgEBMCgGByqGSM49AQECHQD///////////////////////////////7//+Vt 
MAYEAQAEAQUEOQShRVszTfCZ3zD8KKFppGfp5HB1qQ9+ZQ62t6Rcfgif7X+6NEKC 
yvvW9+MZ98CwvVniykvbVW1hpQIdAQAAAAAAAAAAAAAAAAAB3OjS7GGEyvCpcXaf 
sfcCAQE= 
-----END EC PARAMETERS----- 

Ce qui est une version plus bien formaté de la sortie précédente. Notez le bon BEGIN EC PARAMETERS au lieu de BEGIN CERTIFICATE en-tête. Le bloc principal est montré dans la sortie ci-dessus.