2015-11-13 1 views
2

Je dois obtenir la signature et l'algorithme utilisé pour créer cette signature à partir d'un certificat avec C#.Comment puis-je obtenir la signature d'un objet X509Certificate2 en utilisant C#?

Puis-je faire cela? Si oui, comment?

+0

Les certificats ont thumbprint, mais pas de signature, si vous lisez attentivement la documentation MSDN, https://msdn.microsoft.com/en-us/library/system.security.cryptography.x509certificates.x509certificate2(v=vs .110) .aspx –

+0

@ lex-li Les certificats ont une signature. .Net ne vous permet pas d'y accéder. Les certificats n'ont pas d'empreinte. Thumbprint est l'invention de Microsoft, il est calculé en hachant le contenu du certificat avec SHA1. –

Répondre

3

Je développe maintenant une application avec des fonctionnalités similaires. Et je suis vraiment déçu pourquoi Microsoft n'a pas ajouté la propriété Signature à X509Certificate2 classe

Je sais comment faire via bouncycastle

partir de là http://www.bouncycastle.org/csharp/

Ensuite, ajoutez le code

using System; 
using System.Security.Cryptography.X509Certificates; 
using bcrypto = Org.BouncyCastle.X509; 

.

var cert = new X509Certificate2("c:\\temp\\0c50000343119659.cer"); 
var certParser = new bcrypto.X509CertificateParser(); 
var privateCertBouncy = certParser.ReadCertificate(cert.GetRawCertData()); 
var xx = privateCertBouncy.GetSignature(); 
Array.Reverse(xx); 
//Signature 
Console.WriteLine(BitConverter.ToString(xx)); 
//algorithm 
Console.WriteLine(privateCertBouncy.SigAlgName); 
Console.ReadLine(); 
+0

Merci. Semble fonctionner :) –

+0

J'ai mis à jour le code. C'est étrange mais je reçois un tableau d'octets dans le mauvais ordre et je dois l'inverser. –

+0

Ouais je suis tombé dessus et je l'ai trouvé dans un forum et je l'ai réparé :) –