Je dois écrire une fonction en javascript (forge) qui obtient une vignette d'un certificat pfx. J'ai créé un certificat de test (mypfx.pfx). En utilisant la bibliothèque C# X509Certificate2, je peux voir l'empreinte du certificat d'entrée dans l'objet X509Certificate2 en passant le fichier bytes array et le mot de passe. Voici C# extrait de code:Comment obtenir X509Certificate thumbprint en Javascript?
X509Certificate2 certificate = new X509Certificate2(byteArrayCertData, password);
var thumbprint = certificate.Thumbprint;
//thumbprint is a hex encoding SHA-1 hash
Mais quand je suis en train de faire la même chose en javascript (en utilisant forge). Je ne peux pas obtenir une empreinte de pouce correcte. Voici mon code Javascript:
var certi = fs.readFileSync('c:/mypfx.pfx');
let p12b64 = Buffer(certi).toString('base64');
let p12Der = forge.util.decode64(p12b64);
var outAsn1 = forge.asn1.fromDer(p12Der);
var pkcs12 = forge.pkcs12.pkcs12FromAsn1(outAsn1, false, "1234");
var fp = null;
for (var sci = 0; sci < pkcs12.safeContents.length; ++sci) {
var safeContents = pkcs12.safeContents[sci];
for (var sbi = 0; sbi < safeContents.safeBags.length; ++sbi) {
var safeBag = safeContents.safeBags[sbi];
if (safeBag.cert != undefined && safeBag.cert.publicKey != undefined) {
fp = forge.pki.getPublicKeyFingerprint(safeBag.cert.publicKey, {type: 'RSAPublicKey'});
//Is this fingerprint value I am looking for??
break;
}
}
}
Le résultat est une valeur différente de celle de C# thumbprint qui semble être fausse. J'ai essayé différentes fonctions dans le fichier pkcs12.js. Aucun d'entre eux ne fonctionne. Il est acceptable d'utiliser une autre bibliothèque JS tant que le résultat de l'empreinte est correct. S'il vous plaît, aidez et corrigez les erreurs que j'ai faites. Merci!
C'est exactement ce que je cherche, merci . – Void