Проверить целостность Ceritifcate {RSACryptoServiceProvider - SHA1 - отпечаток большого пальца} - PullRequest
0 голосов
/ 19 июня 2009

извините за мой английский.

У меня маленькая проблема. Я хочу проверить целостность моего сертификата.

Я делаю этот код:

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" для переменной "verif"

1 Ответ

1 голос
/ 19 июня 2009

Здесь нет актуального вопроса. Вы правы в том, что вы безоговорочно игнорируете начальное значение Verified. Что еще более важно, вы рассматривали возможность использования X509Certificate2 для проверки?:

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

Думаю, это мудрее, чем заново изобретать колесо.

РЕДАКТИРОВАТЬ: Если вы проверяете цепочку сертификатов, я думаю, что вы хотите использовать X509Chain и, в частности, свойство ChainStatus .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...