Walidacja podpisanego XMLa

0

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?

0

Tutaj masz trochę informacji i rozwiązanie (choć nie wiem czy Twojego konkretnego przypadku):
https://rafpe.ninja/2015/08/06/x509certificate-system-security-cryptography-cryptographicexception-object-was-not-found/
Szczególnie ciekawego info (link też w artykule powyżej):
http://paulstovell.com/blog/x509certificate2

1 użytkowników online, w tym zalogowanych: 0, gości: 1