KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have a response from a 3-rd party web service. I load an XmlDocument with that response. string txt = readStream.ReadToEnd(); response = new XmlDocument(); response.PreserveWhitespace = true; response.LoadXml(txt); return response; Now I would like to verify that the respones is signed using the certificate. I have a VerifyXmlDoc(XmlDocument xmlDoc) method which I have found on msdn . I know that the message is correct. public bool VerifyXmlDoc(XmlDocument xmlDoc) { SignedXml signed = new SignedXml(xmlDoc); XmlNodeList signatureNodeList = xmlDoc.GetElementsByTagName("Signature"); signed.LoadXml((XmlElement)signatureNodeList[0]); X509Certificate2 serviceCertificate = null; foreach (KeyInfoClause clause in signed.KeyInfo) { if (clause is KeyInfoX509Data) { if (((KeyInfoX509Data)clause).Certificates.Count > 0) { serviceCertificate = (X509Certificate2)((KeyInfoX509Data)clause).Certificates[0]; } } } bool result = signed.CheckSignature(serviceCertificate, true); return result; } If I set target framework of my project to .NET 3.5 or .NET 3, or .NET 2 it works great. Result is true. But if I change target framework to .NET 4 result is false. (And I have to use .NET 4) Any ideas on how to solve this problem?
Tags (comma-separated)
Save Edits
Cancel