问题标签 [xades]

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

java - Xades 签名创建和验证端到端工作示例?

我需要在 Java 项目中创建和验证 Xades BT 签名。我找到了 DSS 和 xades4j 项目,但我无法设置它们。例如,使用 DSS 创建签名很容易,但在验证过程中会出现各种错误。

甚至 DSS 的官方验证示例在这里也不起作用,simpleReport.getErrors()给出:

我需要一个端到端的工作示例,涵盖:

  • 自签名密钥和证书创建(我还没有受信任的证书)
  • 使用密钥和证书生成 Xades 签名
  • 使用密钥和证书进行 Xades 签名验证
0 投票
2 回答
1156 浏览

java - 如何使用 XAdES4j 对 xml 进行签名,并引用 URI (#DatosEmision)?

我正在使用此代码尝试使用签名 xades-bes 签署 xml:

这将返回有关未找到 ID 的错误:

提前感谢您的帮助

0 投票
1 回答
449 浏览

javascript - XAdES 验证失败,带有样式表处理指令的文档的 Reference URI=""

我签署的文件是这样的。

我正在使用xadesjs以下代码对此 XML 进行签名:

仅当我删除 xml 声明和样式表指令时,生成的签名才有效。因此,仅签署此文件会返回正确签署的文档:

签署这个

错误消息说不是整个文档都已签名。

我认为问题出在URI=""参考上。它只签名并<ClinicalDocument>留下不签名。<?xml version><?xml-stylesheet>

我如何签署所有内容?

0 投票
0 回答
260 浏览

c# - C# 如何在引用中没有 URI 属性的情况下为 xml 签名创建完整的引用?

我正在尝试对 XML 文档进行签名,但一个引用 URI 属性不得构成签名的一部分。这可能吗?如果我尝试在没有定义 uri 的情况下进行引用,则 xml 不会被签名。利用https://github.com/Caliper/Xades用 Xades 签署我的 xml 我想要实现的目标:

我得到了什么

0 投票
1 回答
84 浏览

xml - 在 XaDeS XML Signature(C++) 中处理 SignedProperties 节点

所以我试图根据 XaDeS-EPES 签名标准计算 SignedProperties 元素的摘要值,但我总是得到一个不正确的摘要值。

我知道要遵循的步骤,即节点的规范化(根据 XML Canonicalization V1.0 https://www.w3.org/TR/xml-exc-c14n/),然后计算 sha-256 二进制摘要,最后是 base64 编码并在指向 SignedProperties 的 Reference 节点中插入。

由于我目前正在使用相同的函数计算其他正确的值,我认为错误出在规范化步骤上,目前我正在使用属于 libxml2 的 c14n 函数,但如果我按原样传递节点,它会抛出一个错误,因为节点中未定义命名空间,我尝试在 SignedProperties 节点中添加声明,但无法获得正确的摘要。

有没有人有任何线索?

感谢您的时间和知识,最好的问候;D

0 投票
0 回答
107 浏览

c# - C# 方法 CheckSignature 为有效的 XAdES 签名文档返回 false

我尝试在 C# 中实现 XAdES 签名验证。它适用于像这样的示例文档。然而,在像这种方法 CheckSignature 这样的实际文档上,即使它是一个有效的文档,它也会返回 false(在此处进行了额外验证)。

这是我的代码

我尝试过加载带有和不保留空格的 xml,甚至尝试从文档中删除命名空间,但没有任何效果。

编辑
我已经打开了诊断日志,它说

不幸的是,它并没有对我说太多,我仍然不知道为什么这里的参考验证失败,而在线验证服务似乎还可以。

0 投票
1 回答
126 浏览

java - 使用 Google Cloud KMS 的 XAdES 签名

有没有办法使用 Google Cloud KMS 制作 XAdES 签名?我找不到任何有关它的信息。

0 投票
1 回答
170 浏览

pki - 它可以用 asn1js 和 pki.js 解码一个 .p12 文件吗?

p12 文件,我想从中提取公钥和私钥以及带有 pki.js 的 x509 证书但是我的 .p12 文件有密码,我该如何解码它。例如:

0 投票
0 回答
336 浏览

xml - 是否可以从封装的 XaDES 签名中剥离内容以获得分离的签名

我正在使用DSS库来验证数字签名。最近,DSS 引入了仅发送被验证文档的哈希值和签名而不发送实际内容的功能。这对隐私来说可能是一件好事,因为您可能会避免将文档发送到服务器(在我们的系统上,验证组件在后端运行)。为了做到这一点,我们需要从签名中剥离内容,计算其哈希值并将其发送到 DSS 进行验证。

这一切听起来都不错,但是当我们实际尝试剥离内容并将创建的“分离”签名连同哈希一起发送以进行验证时,我们会从 DSS 中得到一个异常: WARN [eu.europa.esig.dss.xades.validation.XAdESSignature] (default task-7) Determining signing certificate from certificate candidates list failed: [Certificate #1: Signature verification failed, Certificate #2: Signature length not correct: got 256 but was expecting 512

这没有多大意义,因为所有证书摘要都是 256 位长,而不是 512 位。

这是实际剥离的签名:

编辑:由于问题似乎与实际签名和用作输入的摘要值有关,就像 dave_thompson_085 指出的那样,我尝试手动从 SignatureValue 获取摘要以试图弄清楚发生了什么。

因此,我获取了证书 #1 的值并运行以下命令来提取公钥:

然后我从 SignatureValue 标记中获取值并运行以下命令来解密签名并获取摘要:

但是,当我使用一些在线工具对结果进行 base64 编码以将其与我传递的摘要进行比较并包含在实际签名中时,我得到了以下'MDEwDQYJYIZIAWUDBAIBBQAEIDBaM9z9ZgShg0Ev6X38gyfjQXHlWsyRTbJ3RBUvMeNB'. 这很奇怪,因为它比我预期的实际 32 字节摘要更长,并且与我预期的任何东西都不相似(当我检查文件的二进制版本时,我得到它实际上是 64 字节长)。我究竟做错了什么?

0 投票
1 回答
402 浏览

xml - 将封装的 XaDES 转换为分离的

我们有一个在云中运行的文档签名服务。这个想法是用户上传他想要签名的文档,然后使用保存在 HSM 上的用户私钥在后端对文档进行签名。但是,为了保护文档的隐私,我们只发送文档的哈希值,我们做同样的事情进行验证。我们已经成功地为 PaDES 和 CaDES 文档做到了这一点,但无法为 XaDES 文档做到这一点。

这就是我们在验证中面临的问题。这是一个签名的 XaDES 文档:

这是需要发送到后端的哈希 VkPkiQYDbE3NZ2fQv7pwDInIY0YjQAbVJvulFHITSoI=,它位于第一个引用中。但是请注意该引用标记内的URI=''属性。这基本上意味着摘要是在包含<ds:Signature>标记的整个标记上计算的,这意味着当您应用转换以排除签名标记本身时的内容。

但是,当您使用分离签名对相同的 xml 进行签名时,它看起来像这样:

请注意,摘要值不同,并且缺少URI="" 。

因此,问题在于执行验证(DSS)的库忽略了我们发送给它的哈希,因为URI=""并且验证失败。

而且我们不能删除 URI="" 因为 SignedData 值会改变并且验证也会失败。

所以,似乎我们必须从信封中构建真正的分离签名,但我们不知道如何。有什么解决办法吗?