Witajcie,
mam problem z walidacją podpisanego XML.
Może mi pomożecie :)
Mam serwis MVC, w którym otrzymuję XML i muszę sprawdzić czy jego sygnatura jest prawidłowa.
Certyfikat, który do walidacji wykorzystuję wygląda tak:
plik cert.crt:
-----BEGIN CERTIFICATE-----
MIIDcjCCAlqgAwIBAgIFALVBJRQwDQYJKoZIhvcNAQEFBQAwaTELMAkGA1UEBhMCREUxDz ............
-----END CERTIFICATE-----
Samą walidację implementuję tak
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 jest podpisany taką metodą
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
linijka
X509Certificate2 certificate = new X509Certificate2(readAllBytes);
wywala błąd
Object was not found.
Co robię źle?