Stellen Sie sicher, Integrität Zertifikat {RSACryptoServiceProvider - SHA1 - Daumenabdruck}
-
06-07-2019 - |
Frage
sorry für mein Englisch.
ich habe ein kleines Problem. Ich möchte die Integrität meiner certificat überprüfen.
Ich mache diesen 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);
, aber ich habe schon Wert "false
" für die var "verif
"
Lösung
Es gibt keine eigentliche Frage hier. Sie haben Recht, dass Sie unbedingt den Anfangswert von verif ignorieren. Noch wichtiger ist, haben Sie mit X509Certificate2 betrachtet Überprüfung zu tun:
X509Certificate2 x2 = new X509Certificate2(certificatEnCours);
bool verif = x2.Verify();
Ich denke, das ist weiser als die neu zu erfinden das Rad.
EDIT: Wenn Sie eine Kette von Zertifikaten zu überprüfen Ich glaube, Sie X509Chain und insbesondere die ChainStatus Eigenschaft.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow