Voir https://polarssl.org/kb/cryptography/asn1-key-structures-in-der-and-pem (recherchez sur la page "BEGIN RSA PRIVATE KEY") ( lien d'archive pour la postérité, juste au cas où).
BEGIN RSA PRIVATE KEY
est PKCS # 1 et est juste une clé RSA. Il s'agit essentiellement de l'objet clé de PKCS # 8, mais sans la version ou l'identificateur d'algorithme en face. BEGIN PRIVATE KEY
est PKCS # 8 et indique que le type de clé est inclus dans les données de clé elles-mêmes. Depuis le lien:
Les données codées PKCS # 8 non chiffrées commencent et se terminent par les balises:
-----BEGIN PRIVATE KEY-----
BASE64 ENCODED DATA
-----END PRIVATE KEY-----
Dans les données encodées en base64, la structure DER suivante est présente:
PrivateKeyInfo ::= SEQUENCE {
version Version,
algorithm AlgorithmIdentifier,
PrivateKey BIT STRING
}
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL
}
Ainsi, pour une clé privée RSA, l'OID est 1.2.840.113549.1.1.1 et il existe une RSAPrivateKey comme chaîne de bits de données de clé PrivateKey.
Par opposition à BEGIN RSA PRIVATE KEY
, qui spécifie toujours une clé RSA et n'inclut donc pas un OID de type clé. BEGIN RSA PRIVATE KEY
est PKCS#1
:
Fichier de clé privée RSA (PKCS # 1)
Le fichier PEM de clé privée RSA est spécifique aux clés RSA.
Il commence et se termine par les balises:
-----BEGIN RSA PRIVATE KEY-----
BASE64 ENCODED DATA
-----END RSA PRIVATE KEY-----
Dans les données encodées en base64, la structure DER suivante est présente:
RSAPrivateKey ::= SEQUENCE {
version Version,
modulus INTEGER, -- n
publicExponent INTEGER, -- e
privateExponent INTEGER, -- d
prime1 INTEGER, -- p
prime2 INTEGER, -- q
exponent1 INTEGER, -- d mod (p-1)
exponent2 INTEGER, -- d mod (q-1)
coefficient INTEGER, -- (inverse of q) mod p
otherPrimeInfos OtherPrimeInfos OPTIONAL
}