我有一个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;
}
由于