у меня есть:Проверка подписи для x509 сертификата
- сертификат x509 (Base64);
- Строковые данные;
- Подпись строковых данных (Base64).
Можно ли проверить подпись?
Мой код:
bool valid = false;
var signature = Convert.FromBase64String(base64Signature);
var data = Encoding.UTF8.GetBytes(stringData);
var x509 = new X509Certificate2(Convert.FromBase64String(certificate));
var dsa = x509.PublicKey.Key as DSACryptoServiceProvider;
if (dsa!=null)
valid = dsa.VerifySignature(data, signature);
else {
var rsa = x509.PublicKey.Key as RSACryptoServiceProvider;
if (rsa!=null)
valid = rsa.VerifyHash(data, ???, signature);
}
Я не знаю, что я должен использовать вместо ???. Можно получить алгоритм хеширования из сертификата?
Может ли вы уточнить, хотите ли вы, чтобы проверить подпись сертификата (сделано его эмитентом) или подпись некоторых данных, сделанные с личный ключ, соответствующий этому сертификату? – Bruno
Я хочу проверить сигнатуру некоторых данных (stringData). –