问题标签 [signedxml]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - SignedXml.CheckSignature 返回的布尔值实际上代表什么?
当SignedXml.CheckSignature(AsymmetricAlgorithm key)
返回true
(或false
)时,这究竟代表什么?
这是否意味着Signature
有效?Signature
或者当您尝试再次创建时,您创建的任何对象都匹配Signature
?
c# - SignedXml.CheckSignature() 始终为假
我收到来自第三方的签名 XML 并附有证书。我在本地也有此证书的副本,以验证序列号是否相等,因此我确定 XML 是由我在本地拥有的相同证书签名的。
但是 SignedXml.CheckSignature() 总是返回 false,所以验证总是失败。这是为什么?据我了解,签名的 XML 始终包含签名证书的副本,并且无参数方法尝试根据该证书验证签名。这不应该总是有效吗?
仅供参考:在每种情况下,使用本地证书副本验证签名也会失败。
编辑 2016 年 12 月 9 日
经过进一步检查,我发现签名的 XML 已使用两种转换进行签名,但在验证后,我只能指定一种规范化方法。下面附上了示例 XML。
问题可能是由 https://blogs.msdn.microsoft.com/alejacma/2010/08/18/creating-signatures-with-signedxml-following-ebxml-standard/ 中提到的 cid 前缀的引用引起的吗?这是一篇相当古老的文章,从那时起事情可能会发生变化。
代码:
c# - SignedXML.CheckSignature() 问题在 C# 中使用 3rd 方签名
我有 ac# 应用程序,我用它来处理来自第 3 方的加密和签名的 xml 文件。我使用有效证书在应用程序内生成和签名的文件通过了验证,没有问题。我在验证从第 3 方收到的文件时遇到问题。(这是一个有信誉的来源,所以我排除了他们的问题)
文件已成功解密,但签名验证始终返回 false。我试图剥离他们的签名并自己签署文件 - 我生成了相同的 <DigestValue> 并且除了二进制字段的差异(正如预期的那样使用不同的证书),文件结构是相同的
我将 .pem 文件加载到 X509Certificate2 对象并尝试验证接收到的文件。它具有所有必要的元素,但验证总是失败而没有任何说明原因。
还有什么我需要做的吗?有什么好的资源可以了解 CheckSignature() 的作用吗?
签名验证码(处理自签名文件)
谢谢
.net - 具有特定命名空间前缀 ("ds:") 且不带 X509Data 的 .NET SignedXml
我在尝试在 Microsoft .NET 中对肥皂信封进行数字签名时遇到了困难。Webservice 拒绝了我的 .NET 签名请求,说“签名无效”。在这种情况下,webservice 是由第三方用 Java 编写的,所以我无法在服务器端进行任何更改。
服务器端期待带有 ds 前缀的签名元素。默认情况下,SignedXml 类不会为签名元素和子元素生成带有 ds 前缀的 xml。另一个问题与 ds:KeyInfo 有关,它应该具有 KeyValue 和 X509IssuerSerial 元素——在 .NET 中默认为 X509Data 元素。所以消息的结构应该是这样的,以便服务器接受请求:
c# - 如何在 .NET Core 中使用 x509 证书签署 xml 文件?
我正在努力签署要作为 SAML 2.0 请求发送的 XML 文档。我需要在 Asp.Net Core 中执行此操作。
System.Security.Cryptography.Xml
.NET Core 中没有可以帮助我解决此问题的库。我在想是否有一种手动方法可以使用指定的签名算法和规范化方法对 xml 文档进行签名。
最初的 xml 文档是:
我需要获得:
先感谢您。
c# - XMLSigner 不再适用于 4.6.2 - 格式错误的参考元素
将应用程序从 3.5 升级到 4.6.2 后 以下代码块不再有效。我得到“格式错误的参考元素”错误,即使它作为 3.5 应用程序工作得很好。代码因上述错误而失败,应该是一个很好的参考。我已经尝试了我能想到的一切都无法让 ASP.Net 版本正常工作。我已经构建了一个测试平台版本作为控制台应用程序,它可以正常工作,直到它到达最后一个失败并显示“无法解析 Uri Signature1.jpg”的引用。我读过 XMLSigner 不接受除 id、ID 和 Id 以外的任何元素作为要查找以匹配引用的元素,但我不相信这种情况,因为它适用于控制台应用程序。
问题的核心是:
- 为什么我得到一个“格式错误的参考元素”
signedXMl.AddReference(new Reference("#Head01"));
- 如何修复对客户签名“src="Signature1.jpg"" 的引用
有问题的功能:
它应该签名的 XML 至少是这样的:
java - java - 如何追加前在签名的 xml 中
现在我正在使用数字签名进行编程,并且在生成签名时遇到了问题。我先添加了 KeyValue,然后添加了 X509Data,但标签只是先附加。我有一个创建signinfo的代码:
结果是:
我想要的结果是:
谁能帮我。太感谢了!
c# - XmlDsigXPathTransform - 未定义命名空间前缀
我正在尝试使用此库创建签名的 xml 分离签名文件:[opensbr]
我需要向 TransformChain 添加一个 xpath 过滤器,但是在调用命名空间无效时SignedXml.ComputeSignature
会引发异常。xbrli
路径:/xbrli:xbrl//*[not(local-name()='DocumentAdoptionStatus' or local-name()='DocumentAdoptionDate' and namespace-uri()='http://www.nltaxonomie.nl/8.0/basis/venj/items/bw2-data')]
构建转换(根据 Microsoft 示例):
public static XmlDsigXPathTransform CreateXPathTransform(string XPathString)
{
XmlDocument doc = new XmlDocument();
XmlElement xPathElem = doc.CreateElement("XPath");
xPathElem.InnerText = XPathString;
XmlDsigXPathTransform xForm = new XmlDsigXPathTransform();
xForm.LoadInnerXml(xPathElem.SelectNodes("."));
return xForm;
}
xpath 和 xml 文件都有效。
如何使用命名空间前缀XmlDsigXPathTransform
?
c# - 我可以使用公钥签署 XML 吗?
我正在尝试使用公钥签署 XML。我正在从 SP 提供的 base64 字符串加载证书。证书加载正常,公钥似乎有信息,但是当我尝试使用它时,出现以下错误:
键集不存在
这是实际的代码......有什么建议吗?非常感谢!
c# - SignedXml 进行的错误规范化 (c14n) - 它删除了换行符 () - 它是 .NET 错误吗?
我们正在从使用 java 的第三方接收签名的 xml。我们的 .NET 实现正确验证签名,除非 xml 包含 字符参考。
看起来 .NET 在 c14n 过程中的某处删除了换行符。
我在 c# 中使用下一个 xml 运行了一些测试:
使用 c14n 的下一个代码:
将产生下一个 xml,它符合w3org规范(每行以 LF 字符结尾):
但是,当使用下一个代码查看哪个规范表单具有使用 SignedXml .NET 类签名的 xml 时:
将产生不同的 xml(每行以 LF char 结尾),我们可以看到换行符 ( ) 已被删除:
有没有办法使用 SignedXml 类以便使用正确的规范形式?xml 解析(创建 XmlDocument 时)可能是导致此问题的原因吗?
我想知道这是否是 .NET 中的错误,以及是否有解决方法。