在C#中使用第三方签名的SignedXML.CheckSignature()问题

时间:2017-04-26 11:31:02

标签: c# certificate x509 signedxml

我有一个c#app,用于处理来自第三方的加密和签名的xml文件。 我使用有效证书在应用程序内生成和签名的文件通过验证没有问题。 我在验证从第三方收到的文件时遇到问题。 (这是一个有信誉的来源,所以我排除他们的问题)

文件已成功解密,但签名验证始终返回false。 我试图剥离他们的签名并自己签署文件 - 我生成了相同的< DigestValue>除了二进制字段的差异(正如预期的使用不同的证书),文件结构是相同的

我将.pem文件加载到X509Certificate2对象并尝试验证收到的文件。它具有所有必要的元素,但验证总是失败,没有任何指示原因。

还有什么我需要做的吗?有什么好的资源可以理解CheckSignature()的作用吗?

签名验证码(处理自签名文件)

public static bool VerifySignedXml(string signedXmlPath, X509Certificate2 theirPublicKey)
    {
        XmlDocument doc = new XmlDocument();
        doc.Load(signedXmlPath);

        XmlElement signature = (XmlElement)doc.GetElementsByTagName("Signature")[0];

        SignedXml sig = new SignedXml(doc);
        sig.LoadXml(signature);

        bool bVerified = sig.CheckSignature(theirPublicKey , false);

        return bVerified;
    }

由于

0 个答案:

没有答案