Я работаю с третьей стороной, которая отправляет мне сертификат через байтовый массив. Они отправляют мне 3 строки в XML-документе, которые включают в себя x509Data, SignatureValue и DigestValue (для отладки).
Они хотят, чтобы я проверил, что SignatureValue является действительным, используя открытый ключ сертификата, содержащийся в сертификате x509Data. Я правильно заполнил сертификат, но когда я пытаюсь проверить, он всегда возвращает false.
Вот мой код:
byte[] SignatureValueBytes = Convert.FromBase64String(Signature.SignatureValue);
byte[] x509DataBytes = Convert.FromBase64String(Signature.x509Data);
byte[] DigestValueBytes = Convert.FromBase64String(Signature.DigestValue);
X509Certificate2 cert = new X509Certificate2(x509DataBytes);
using (RSA RSA = (RSA)cert.PublicKey.Key)
{
bool a = RSA.VerifyData(x509DataBytes, SignatureValueBytes, HashAlgorithmName.SHA256, RSASignaturePadding.Pkcs1);
}
Signature. * - это строка из файла XML. Может ли какая-то добрая душа указать, где я иду не так?