问题标签 [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.

0 投票
0 回答
1004 浏览

c# - SignedXml.CheckSignature 在使用 .NET 4 或 4.5 时总是失败,但在 .NET 3.5、3 或 2 中有效

我在尝试验证已签名 XML 文档的签名时遇到了麻烦。使用 .NET framework 4.0 或 4.5 时验证失败,但在 3.5、3.0 和 2.0 中通过。XML 文档来自基于 Java 的第 3 方服务。

用于签名验证的代码:

我尝试手动和直接从第 3 方响应流检查签名,但在 .NET 4.0 或 4.5 中结果始终为 false。

如果签名的 XML 在根元素以外的元素上包含命名空间属性,则 .NET 1.1 中存在已知问题:MSDN

有什么建议么?

0 投票
2 回答
2728 浏览

c# - .Net 4.0 C# 加载 SHA256 密钥 SignatureAlgorithm 时更改为 SHA1

我现在整整一个星期都在为此苦苦挣扎,希望有人可以帮助我。

我需要使用 SHA256 和 xmldsig 对 xml 进行签名。为此,我使用 SignedXML 类。在查看此类时,我看到它使用加载键的 SignatureAlgorithm 值来确定要使用的散列类型。

无论我如何加载密钥(通过证书存储或通过加载证书文件),它都会将 SHA1 显示为 SignatureAlgorithm。当我在 MMC 证书存储中查找我的证书的详细信息时,它显示 SHA256 作为 SignatureAlgorithm。

我尝试了 openssl 和 makecert 来生成一个 SHA256 证书密钥,但是两者都将在 .Net 中加载为 SHA1 所以 signedXml.ComputeSignature(); 将使用 SHA1 作为 SignatureMethod

.Net 4.0 应该支持 SHA256 吧?

0 投票
0 回答
191 浏览

c# - 在 PHP 中替代 C# SignedXml

我正在尝试验证为 Windows 应用商店发送的 IAP 收据。在 C# 中验证收据的代码示例可在此处获得。我正在尝试使用 PHP 验证收据,但无法验证它。我正在尝试 openssl 但它总是返回 0。PHP 中是否有任何 C# SignedXml 类的替代品?

谢谢

0 投票
1 回答
2093 浏览

c# - .NET 中的 SignedXML 问题

我正在尝试使用数字签名对 XML 文档进行签名。我安装了证书并且输出似乎类似于规范(除了命名空间,这似乎是我在 .NET 中无法触及的东西),但是我无法获得我发送的 WebService 来接受这个,它返回错误:

VerifyXml:验证失败:签名无效

我无法控制此 WebService,并且此服务的供应商声称其他人对此 WebService 没有任何问题。

我也试过使用这个验证工具:

http://www.aleksey.com/xmlsec/xmldsig-verifier.html

返回错误:数据不匹配:签名不匹配,因此,我想我做错了什么。

我的代码如下所示:

我曾尝试在 .NET 中验证 SignedXML,这似乎可以验证,但由于它是它所用的语言,因此我对此不太信任。

我的规范如下所示:

我在做一些明显错误的事情吗?我不确定命名空间在签署 XML 方面有多重要,但由于这似乎是一个 .NET “一成不变”,我怀疑这可能是它吗?

0 投票
1 回答
2227 浏览

c# - SignedXml.CheckSignature Method (X509Certificate2, false) 不检查证书有效性

我试图通过在方法中传递 false 作为第二个参数来验证签名和证书 - SignedXml.CheckSignature(Cert,false) 但是,即使使用的证书(由 makecert 创建,如下例所示)是未过期,CheckSignature() 始终返回 false。

如果您将 false (仅验证签名)作为第二个参数传递,它会返回 true。所以,现在的问题是 - verifySignatureOnly 参数 - 如果指定为 false - 它实际上在证书中检查什么?它是否将证书的到期日期作为确定证书有效性的标准?

下面的代码取自MSDN 页面

0 投票
1 回答
525 浏览

c# - 在 SQL CE 4.0 数据库中存储大的签名 UTF-8 字符串

我有一个 SQL CE 4.0 数据库,其中存储了一个(可能)大的签名 XML 字符串。目前,我将此字符串存储在类型的列中,ntext因为有 4000 字节的限制nvarchar(请参阅这篇文章)。

插入一行

所以要在这个表中插入一行,它看起来像这样:

这适用于“小”字符串(小于 4000 字节),但对于大于该值的字符串,它将静默失败。命令执行不会抛出异常,但 SignedObject 列中会出现一个空字符串。

更改输入参数

因此,经过一番阅读,我发现要确保 astring插入正确 asntext而不是解释为nvarchar,您必须指定参数类型,如下所示:

这使我可以正确插入大字符串,从而解决了该问题。

签名验证

因此,我的程序将从数据库中读回这个字符串,用它填充一个 XML 文件,并尝试使用 .NETSignedXml类验证签名。问题是现在我的签名无法正确验证。

真正的问题 为什么会发生这种情况?我的 XML 文件是 UTF-8,所以这是字符串应该存储的格式。ntext如果将其存储为 UTF-16,将其存储在列中是否会稍微修改字符串?为什么 SQL 将输入解释为nvarchar以前允许签名验证成功?有没有更好的方法将这些数据存储在不会影响编码的数据库中?任何帮助将不胜感激!

0 投票
3 回答
3818 浏览

saml-2.0 - SignedXml.CheckSignature() 为真,但 SignedXml.CheckSignature(certificate) 为假

我正在从 ADFS 生成一个由证书签名的 SAML2 令牌。现在我正在尝试使用相同的证书验证该签名。

CheckSignature() 根据令牌中包含的公钥验证签名。CheckSignature(cert, [true/false]) 根据证书中的私钥验证签名。

怎么可能一个有效而另一个无效?

0 投票
1 回答
2739 浏览

c# - 不带参数的 RSASSA-PSS 使用 SHA-256 .Net 4.5 支持

我正在尝试使用 System.Security.Cryptography(目标框架 .NET 4.5)创建 xml 数字签名,到目前为止,我设法使用以下方案创建和验证签名:RSA PKCS#1 v1.5 和 SHA-256:http://www.w3.org/2001/04/xmldsig-more#rsa-sha256

但是,我无法使用以下方案:“使用 SHA-256 没有参数的 RSASSA-PSS”[RFC6931]:http ://www.w3.org/2007/05/xmldsig-more#sha256-rsa- MGF1

显示的错误很明显“无法为提供的签名算法创建签名描述”。

对于“RSA PKCS#1 v1.5 和 SHA-256”,我添加了以下公共类作为其签名:

但是,我不知道 .Net 4.5 是否支持“没有使用 SHA-256 的参数的 RSASSA-PSS”,如果支持,如何设置其签名定义。

如果有人有类似的经历并能提供一些帮助,我将非常感激。

0 投票
2 回答
1840 浏览

xml - 键集不存在

我有一个证书文件并分配给X509Certificate2班级,

这只有我将用来签署我的文件cert的公钥。xml

然后我这样做,

线上signedXml.ComputeSignature()有问题。

“密钥集不存在”。

我不知道这个案子。我该如何解决这个问题?

0 投票
0 回答
407 浏览

.net - 使用 dsig 前缀验证 SignedXml

我正在尝试使用 dsig 前缀生成 SignedXML(感谢 George Dima 在xml 签名 DS 前缀中的回答?)。

问题是 CheckSignature 方法现在返回 false - 我认为这个方法可能也需要被覆盖,就像 ComputeSignature 方法一样,但是我不知道如何做到这一点。

是否有人对如何生成带前缀的 SignedXML 有完整的答案,但也可以使用 CheckSignature 进行验证?

我可以向您保证,我已经浏览了有关此主题的所有相关帖子,但我没有遇到任何提供完整解决方案的帖子:

.NET 不支持非标准 XMLDSIG 签名元素名称

生成带有“ds”前缀的xml签名

生成带有“ds”前缀的 XADES-BES

生成带有“ds”前缀的xml签名

.NET 签名的 XML 前缀

谢谢!