签名验证失败

时间:2011-05-06 09:34:31

标签: security digital-signature x509certificate

您好我无法验证从服务器收到的响应的签名。我使用以下方法来验证它。

  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

2 个答案:

答案 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)

问题来自签名生成过程。它现在解决了。 以上方法验证签名是否正确。