У меня проблема с проверкой подписанного XML.Может быть, вы можете мне помочь:)
У меня есть служба ASP.NET MVC, которая получает XML, и мне нужно проверить, действительна ли подпись в этом XML.
Сертификат, который я используюдля проверки выглядит так:
файл cert.crt:
-----BEGIN CERTIFICATE-----
MIIDcjCCAlqgAwIBAgIFALVBJRQwDQYJKoZIhvcNAQEFBQAwaTELMAkGA1UEBhMCREUxDz ............
-----END CERTIFICATE-----
Мой код для проверки подписи:
var xmlDoc = new XmlDocument { PreserveWhitespace = true };
xmlDoc.LoadXml(samlXML);
var signedXml = new SignedXml(xmlDoc);
var certPath = HostingEnvironment.MapPath(@"~/App_Data/cert.crt");
var readAllBytes = File.ReadAllBytes(certPath);
X509Certificate2 certificate = new X509Certificate2(readAllBytes);
XmlNodeList signatureElement = xmlDoc.GetElementsByTagName("ds:Signature");
signedXml.LoadXml((XmlElement)signatureElement[0]);
var isValid = signedXml.CheckSignature(certificate, true);
XML подписан:
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
Эта строка
X509Certificate2 certificate = new X509Certificate2(readAllBytes);
Выдает ошибку
Object was not found.
Что я делаю не так?