问题标签 [xml-dsig]

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 回答
709 浏览

java - 代码无法验证摘要上的 SAML 响应

更新

我已经弄清楚为什么参考验证失败了。不幸的是,我不知道该怎么做。

将“sigString”字符串变量解析为“doc”文档变量时,LINEFEED 字符被转换为空格字符。我通过手动生成摘要值并将其与 Java 代码计算的值进行比较来确认这一点。

有人知道在将 XML 字符串解析为 org.w3c.dom.Document 变量时如何保留 LINEFEED 字符吗?


原帖

我正在尝试编写一些 java 代码来验证 SAML 响应的 XML 数字签名。我已经用其他工具验证了 SAML 响应,所以我知道它是有效的(不包括时间问题,不是数字签名的一个因素)。下面是我使用的代码,我认为应该能够进行此验证以及我要验证的签名。

当我运行代码时,我得到以下输出

我不知道为什么参考摘要id14167335278088961501144300没有验证。谁能阐明我做错了什么?

注意:在此示例中,我从 URL 加载 XSD,因此我不必在我的问题中包含 4 个 XSD 文件。但是,正因为如此,该程序可能需要一分钟才能运行。我知道可以使用本地 XSD 文件消除这种减速,但使用发布的代码这样做是不可行的

XMLDSigVerifier.java:

签名.xml

0 投票
2 回答
4080 浏览

php - XML 签名 - PHP 中的不同签名值?

我想在 PHP 中实现 XML 数字签名。我正在这个验证者测试签名的正确性。

我得到了错误的签名值,所以我将逐步解释我在做什么,并请纠正我做错了什么。

我要签名的 XML (没有新行)

首先,我将 XML 规范化,然后使用 sha256 对其进行哈希处理,从而产生正确的摘要值。

其次,创建 SignedInfo XML 元素并将其规范化(无需换行)

最后,使用 RSA-SHA256 对 SignedInfo 元素进行签名。这是产生不正确结果的部分。

使用以下代码行计算签名:

但它会产生不正确的签名值,如验证者所述。如果我使用相同的私钥在 C# 中签署相同的 XML,我会得到正确的签名。那么,我做错了什么?我错过了什么?很明显,我签错了,但我应该签什么?我应该在签名之前对 SignedInfo 元素进行哈希处理吗?

这是我的最终结果(不正确)

这是正确的结果(除签名值外,一切都相同)

要测试这两个结果或了解更多详细信息,只需将它们复制到此处并单击“验证签名”。

0 投票
1 回答
89 浏览

java - 在 Windows 中使用 java 8u121 签署 XML 的问题

我已经用java 8签署了一个XML文档没有问题,直到我升级到Java 8u121版本,代码是:

错误在代码行中:

错误是:

……

对于 Java 8u121 之前的版本,不会出现任何错误。

0 投票
0 回答
247 浏览

java - 当文件可以存储在任何地方时,如何使用 XML 分离签名?

当文件被签名的 URI 与文件被验证时不同时,如何在 Java 中使用 XML 分离的数字签名?具体来说,要签名的文件是在一台服务器上创建和签名的,然后发送到另一台服务器上进行验证。URI 是 file:///....

与 RFC 5485 类似,需要对文件进行签名“在不妨碍签名验证的情况下存储在任何地方”。与 RFC 5485 不同,需要 XML 格式的分离签名。Java 实现似乎要求完整的 URI 在签名时和验证时相同。

0 投票
1 回答
1073 浏览

c# - 带有 C# .NET Core 1.1 的 Xml 数字签名

我正在使用 .NET Core(目前的最新版本 1.1.)和 C#(实际上是 Omnisharp)与 SOAP Web 服务进行客户端通信。请求应该使用封装签名进行数字签名,使用 RSA-SHA1 签名方法,最终结构如下:

我能找到的所有文档都是指使用 .NET Core 中不可用的 SignedXml 类。有没有人有建议或链接来分享我如何在没有 SignedXml 类的情况下制作这个签名(以及所需的规范化)?或者也许有一些我不知道的非官方版本的 SignedXml?

0 投票
0 回答
174 浏览

ruby - 如何为 sgining XML doc 生成模数和指数?

我想要签署 XML 文档。我正在为生成签名(红宝石)做以下工作。

请参阅下面的 signature.xml 和输出,

签名.xml

输出.xml

但是,在 XML 有效负载上方发布时,第 3 方服务会返回SIGNATURE MISMATCHING 。我认为问题是由于 output.xml 中缺少模数和指数。

我的问题是如何生成模数和指数?

0 投票
0 回答
1333 浏览

c# - 使用 PKCS11 互操作对 Xml 进行签名

我想使用 pkcs11Interop 库对 XML 进行签名,我正在使用以下代码对 XML 进行签名,但签名验证失败。

当我System.Security.Cryptography.Xml.SignedXml用来签名时,它通过了签名验证。

我的方法生成的 DigestValue 和 SignedXml 相同,但签名不同,即使我使用相同的证书进行签名。

遵循的步骤

  1. 生成 XmlDsigC14NTransform 并创建 sha1 哈希。
  2. 使用 pkcs11interop 对哈希进行签名。

代码

0 投票
1 回答
511 浏览

node.js - 如何更改规范化方法

有谁知道如何更改 CanonicalizationMethod 属性xadesjs?我知道它xmldsigjs在下面使用,但我找不到改变它的解决方案。我的意思是整个 SignedInfo 属性的 CanonicalizationMethod(不是引用的转换)。目前(默认情况下)我得到一个将 CanonicalizationMethod 设置为 C14N 的文档:

我想把它改成 EXC-C14N:

甚至可能吗?

0 投票
1 回答
545 浏览

x509certificate - 如何检查公共 X509Certificate 是否受信任

我已经签署了我通过下面的代码验证的 XML

验证xml签名

一切都很好,但我应该检查公钥是否可信。XML 由不同的发行者签名。我有包含 14 个根 CA 的 jssecacerts。如何验证此公钥是否已签署此 CA 之一。谢谢你的建议

0 投票
0 回答
900 浏览

xml-validation - 签名验证假

我正在尝试验证这样的签名(它是来自万事达卡的 PARes)并且每次都收到错误消息,但是来自 VISA 的 xml 工作正常

万事达

我的验证码

我添加了额外的代码以获得失败的原因

并得到了这个结果

如何避免签名验证错误或如何调试原因。在标准页面有信息

请注意,可能存在某些签名应用程序无法验证的有效签名。造成这种情况的原因包括未能实现本规范的可选部分,无法或不愿执行指定的算法,或无法或不愿取消引用指定的 URI(某些 URI 方案可能会导致不良副作用)等。

但是如何避免这个问题。我知道签名是有效的,但是......好的和错误的验证 xml 之间的一个区别是格式参考 id 在好的 xml 中没有 - 只是数字或字母

RAW 传入数据

//签证

//万事达

解码代码