整合性証明書の検証{RSACryptoServiceProvider-SHA1-print印}
-
06-07-2019 - |
質問
私の英語は申し訳ありません。
少し問題があります。証明書の整合性を確認したい。
このコードを作成します:
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);
しかし、私はすでに" false
"の値を持っていますvar" verif
"
解決
実際の質問はありません。 verifの初期値を無条件に無視するのは正しいことです。さらに重要なこととして、X509Certificate2を使用して検証を行うことを検討しましたか?
X509Certificate2 x2 = new X509Certificate2(certificatEnCours);
bool verif = x2.Verify();
これは、車輪を再発明するよりも賢明だと思います。
編集:証明書のチェーンを検証している場合、 X509Chain 特に ChainStatus プロパティ。
所属していません StackOverflow