首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何针对机器存储验证SignedXml中的证书

如何针对机器存储验证SignedXml中的证书
EN

Stack Overflow用户
提问于 2011-07-12 19:52:16
回答 2查看 2.8K关注 0票数 3

我想根据机器存储中的证书验证SignedXml中的签名。此代码用于验证签名:

代码语言:javascript
复制
internal bool VerifySignature(XmlDocument xml)
{
    var signedXml = new SignedXml(xml);
    var nsMgr = new XmlNamespaceManager(xml.NameTable);
    nsMgr.AddNamespace("ds", "http://www.w3.org/2000/09/xmldsig#");
    signedXml.LoadXml((XmlElement)xml.SelectSingleNode("//ds:Signature", nsMgr));
    return signedXml.CheckSignature();
}

签名验证无误,但仅针对其自身,而不针对计算机上安装的证书。有没有办法根据本地证书库中的根证书对其进行检查?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-16 16:12:26

如果有人感兴趣,我使用了CheckSignature(X509Certificate2, Boolean)方法。我从Signature对象获得了证书,并像这样检查它:

代码语言:javascript
复制
var x509data = signedXml.Signature.KeyInfo.OfType<KeyInfoX509Data>().First();
var verified = false;
if(x509data != null)
{
    var cert = x509data.Certificates[0] as X509Certificate2;
    verified = cert != null && signedXml.CheckSignature(cert, false);
}
return verified;
票数 4
EN

Stack Overflow用户

发布于 2011-07-15 22:13:43

您可以使用接受AsymmetricAlgorithm的CheckSignature方法的重载。

传递证书的公钥。您可以通过X509Store获取此文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6663733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档