您好我无法验证从服务器收到的响应的签名。我使用以下方法来验证它。
using (MemoryStream ms = new MemoryStream(System.IO.File.ReadAllBytes("D:\\Response.xml")))
{
XmlDocument responseDocument = new XmlDocument();
responseDocument.PreserveWhitespace = true;
responseDocument.Load(ms);
SignedXml sxml = new SignedXml(responseDocument);
XmlNodeList newNodeList = newDoc.GetElementsByTagName("Signature");
sxml.LoadXml((XmlElement)newNodeList[0]);
sxml.CheckSignature();
}
有人可以提出可能存在的问题吗?以及如何解决? 代码在c#.net
中答案 0 :(得分:0)
您的代码似乎有误。您的代码遍历所有签名标记(精细)并尝试在每个签名标记内查找签名标记(奇怪?!)
请尝试使用此代码:
using (MemoryStream ms = new MemoryStream(System.IO.File.ReadAllBytes("D:\\Response.xml")))
{
XmlDocument responseDocument = new XmlDocument();
responseDocument.PreserveWhitespace = true;
responseDocument.Load(ms);
SignedXml sx = new SignedXml((XmlElement)responseDocument.GetElementsByTagName("Response")[0]);
XmlNodeList nodeList = responseDocument.GetElementsByTagName("Signature");
foreach (XmlElement element in nodeList)
{
// Load the signature node.
sx.LoadXml(element);
sx.CheckSignature();
}
}
答案 1 :(得分:0)
问题来自签名生成过程。它现在解决了。 以上方法验证签名是否正确。