2009-06-19 4 views
0

désolé pour mon anglais.Vérifiez l'intégrité Ceritifcate {RSACryptoServiceProvider - SHA1 - thumbprint}

J'ai un petit problème. Je veux vérifier l'intégrité de mon certificat.

-je faire ce code:

using System.Security.Cryptography; 
using System.Runtime.InteropServices; 
using System.Security.Cryptography.X509Certificates; 

SHA1Managed sha1 = new SHA1Managed(); 
RSACryptoServiceProvider csp = null; 
AsymmetricAlgorithm rsaAlgo = certificatEnCours.PublicKey.Key; 
byte[] data = null; 
byte[] hash = null; 

string keyPublic = ""; 
string signatureNumérique = ""; 

bool verif = false; 

// ------------- PART 1 ------------- 

signatureNumérique = certificatEnCours.Thumbprint; 

data = Convert.FromBase64String(signatureNumérique); 

// ------------- PART 2 ------------- 

hash = sha1.ComputeHash(certificatEnCours.RawData); 

keyPublic = rsaAlgo.ToXmlString(false); 

csp = new RSACryptoServiceProvider(); 

csp.FromXmlString(keyPublic); 

// ------------------------------ 

verif = csp.VerifyData(hash, CryptoConfig.MapNameToOID("SHA1"), data); 

mais je l'ai déjà valeur "false" pour le var "verif"

+0

quelqu'un pourrait reformater la question s'il vous plaît. C'est terriblement difficile à lire. – AlexDrenea

Répondre

1

Il n'y a pas question réelle ici. Vous avez raison de dire que vous ignorez inconditionnellement la valeur initiale de verif. Plus important encore, avez-vous envisagé d'utiliser X509Certificate2 pour faire la vérification ?:

X509Certificate2 x2 = new X509Certificate2(certificatEnCours); 
bool verif = x2.Verify(); 

Je pense que cela est plus sage que de réinventer la roue.

EDIT: Si vous vérifiez une chaîne de certificats, je crois que vous voulez utiliser X509Chain et en particulier la propriété ChainStatus.