问题标签 [pades]

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

pdf - 更新现有 PDF 以添加签名

我的项目是在 Windows 中添加数字签名到现有 PDF,使用 C++,支持 PAdES。通过研究 PDF 格式的基本方面和 jSignPdf 的输出,我成功地签署了任何现有的 PDF 文件,并且 Adob​​e Acrobat 成功找到了 PAdES BT 级签名。

我现在的问题是保留现有的 PDF 信息。据我了解,向现有 PDF 添加额外信息需要:

  • 创建新闻部分 %%EOF、startxref、预告片、外部参照表。
  • 创建一些新对象来描述签名。

jSignPDF(和我的工具)创建了 9 个新对象,其中 8 个是自描述的(即它们引用同一部分的部分:

问题是其中的对象 9。

此对象引用原始 PDF 部分。我的问题是,如何创建对它的正确引用。

原始文件是这样的:

现在我用 C++ 创建了一个简单的 PDF 解析器,据我所知,我需要:

  • 找到根对象(来自预告片)
  • 从根对象中查找页面描述符(在本例中为 /Pages 2 0 R)
  • 从页面描述符中找到第一个 (?) 儿童对象(在本例中为 /Kids [ 3 0 R ]
  • 从引用的对象中,获取内容(在本例中为 5)
  • 在我的 PDF 部分构建 obj 9 对象。

不过,这只是实验性的。我需要的是对 PDF 文档的一些参考,它可以解释参考文件的前一个 PDF 部分的正确程序,或者一些有效的 C++ PDF-add-a-new-document 更新。

如果有,我会查看 PDF 规范和/或 iText 源代码,但我希望可以避免这种情况。

非常感谢。

0 投票
1 回答
780 浏览

pdf - 创建 PAdES 签名

我正在尝试使用以下工作流程创建 PAdES 签名:

  • PDF 已准备好进行签名并在浏览器中计算哈希
  • 哈希被发送到后端
  • 在后端形成分离的 CAdES 签名
  • 分离的 CAdES 被发送回组装 PAdES 签名的浏览器

我们有一个 PDF 签名的工作示例,其工作方式如下:

  • 准备好 PDF 并在浏览器中计算哈希
  • 哈希被发送到后端
  • 在后端制作分离的 PKCS7 签名(通过使用 BouncyCastle 库)
  • 分离的 PKCS7 被发送回组装 PDF 签名的浏览器

这工作正常。

但是,现在我们在后端使用DSS库而不是 BouncyCastle,因为我们正在尝试创建 PAdES 签名。因此,DSS lib 正在创建分离的 CAdES(应该与分离的 PAdES 相同)而不是 PKCS7。但是,当在浏览器中组装签名时,签名无效(即使证书信息也不可见)。

据我了解,CAdES 是 PKCS7 的扩展,因此这种方法应该可行。

我首先尝试了解我们的方法是否有问题,如果没有,我将尝试分享我们用来制作分离的 CAdES 签名的代码,看看那里是否有问题。

0 投票
1 回答
727 浏览

pdf - PDF 文件中的可见签名

我正在尝试在 PDF 文件中创建可见签名。

获取一个简单的 PDF“hello world”文件:

并在第一页的某个位置使用文本签名以显示“Yolo”会产生以下结果:

所以 PDF 中有一个对象在第一页显示一些文本:

我现在的问题是,这个对象在 adobe reader 中被视为常见的文本对象。我希望它在单击时转到数字签名,就像 Adob​​e Acrobat 如何签署文档一样。

我想念什么?数字签名(6 或 8 数字对象)或我的应用程序放入新 PDF 中的任何其他对象中是否有参数将文本对象与签名链接?

非常感谢。

0 投票
1 回答
1134 浏览

java - DSSException:吊销数据丢失

我正在使用 DSS 签署 Pdf 文档。我需要为这些文档添加时间戳并启用 LTV(启用 PAdES LTV)。

我遇到了一些关于撤销数据的问题。

我对这个领域有点陌生,所以请耐心等待。

我正在遵循 DSS 本身提供的说明和演示,但无济于事。

我已经成功地使用 PAdES B 和 PAdES T 签署了 Pdf,所以我的 TSA 服务设置正确。

我遇到的问题是,每次我尝试使用 LTV 签署 Pdf 时,都会收到以下错误: “eu.europa.esig.dss.DSSException : Revocation data is missing”,我不知道为什么.. . 调用“service.signDocument(...)”时抛出此异常,并且在调试后立即抛出

“eu.europa.esig.dss.validation.SignatureValidationContext -未找到证书的吊销数据:(...)”

这是我的主要签名方法:

一些次要的辅助方法:

相关的Maven依赖:

0 投票
0 回答
63 浏览

java - IText 是否支持 PAdES 签名承诺类型?

我有一个使用 IText 的工作软件,它使用所有 PAdES 配置文件签署文档,但我需要添加承诺类型字段,我该怎么做?

它与签名 Reason 有点相同,但在 PAdES 结构中。

0 投票
1 回答
882 浏览

pdf - 尝试创建 PDF 可见签名时出现“对象标签格式错误”

我正在尝试务实地创建一个可见的 PDF 签名。不可见的签名有效,但是当我添加 AP(外观)对象时,我在 Acrobat Reader 中收到错误消息:“对象标签格式错误”。

我制作的相关 XObject 如下所示:

我似乎找不到其中的错误,但我一定遗漏了一些东西。我阅读Adob​​e 的整个文档以及其他一些博客,并据此编写了我的代码。

**更新: **

我根据 mkl 的评论更改了代码:

在这里你可以下载我的PDF。

更新 2:我的外部参照表似乎存在错误,它们没有指向正确的 XObjects,这就是我收到错误的原因。但是,现在即使我的 PDF 没有损坏并且签名正常(adobe 会告诉签名无法验证,因为证书是自签名的,但没关系)。

但是现在,我有另一个问题:图像没有出现。它是可点击的并且可以工作,但它都是空白的。

此处提供了 PDF 的新版本。

0 投票
0 回答
314 浏览

pdf - XAdES 等效于 PAdES 时间戳

XAdES 中是否存在与 TSA“签署”PDF 的 PAdES 时间戳的等效项?

我不是指 XAdES-T,如果我理解正确,时间戳会添加到现有签名中,我正在寻找这样的东西(A.2 第 15 页):

https://www.etsi.org/deliver/etsi_ts/102700_102799/10277804/01.01.01_60/ts_10277804v010101p.pdf

这看起来像这样: https ://1drv.ms/b/s!AlQKaiJaXUDNgxZwz3QxR2CaaORm?e=TnA0uX

例如,如果您下载 PDF 并使用 Adob​​e Reader 打开它,您会看到 TSA 制作的“签名”。

谢谢!

0 投票
1 回答
392 浏览

c# - iText 使用外部签名 WebService 创建签名 PDF

我尝试在 iText 中使用外部签名 webService 实现对 PDF 的签名。我使用 iText ( https://raw.githubusercontent.com/itext/i5ns-tutorial/master/signatures/chapter4/C4_07_ClientServerSigning/C4_07_ClientServerSigning.cs ) 提供的示例客户端-服务器签名作为蓝图。

在方法 public byte[] sign(byte[] message) 我使用以下请求将收到的消息上传到网络服务

从收到的响应中,我返回 dsig:SignatureValue 的 base64 解码值。但是生成的 pdf 中的签名无效。

有人知道我需要如何修改我的代码以生成有效的签名 pdf 文件吗?

0 投票
2 回答
241 浏览

pdf - PDF 签名被 Acrobat 忽略,但在其他验证工具中可见

我们正在制作一个 webapp,其功能之一是制作 PaDES 签名。代码太大,无法在此处分享,但工作流程如下所示:

  • 通过在浏览器中进行所有必要的转换,PDF 已准备好进行签名
  • 使用所选算法计算摘要
  • 如果使用DSS库生成分离的 CaDES 签名,则摘要会发送到后端
  • 在后端生成的分离签名被发送回浏览器以插入到准备好的 PDF 中以制作 PaDES 签名

对于大多数 PDF 文件,该解决方案运行良好。但是,在某些文件中,Acrobat 不会显示签名,就好像它不存在一样,但是当尝试使用我们的 web 应用程序(在后端使用 DSS 进行验证)进行验证时,一切都显示正常。使用DSS在线验证工具检查时也显示正常。

以下是签名 PDF 中最相关的部分:

一切似乎都很好,但由于某种原因,Acrobat 忽略了签名。如果您想看一下,这是整个文件:https ://easyupload.io/2lrfg8

0 投票
1 回答
172 浏览

javascript - 当我使用我的代码创建 PAdES LT 签名时,Adobe 显示 PKCS7 解析错误

我正在开发制作 PAdES 签名的 webapp。我已成功实施 PAdES Baseline-B。但是,当我尝试通过添加此处描述的所有必要信息(包括 OCSP 响应、CRL 和证书)来创建 PAdES Baseline-LT 时,文件似乎已损坏并且 Adob​​e 显示以下错误:签名验证期间出错:PKCS7解析错误

如果您想查看,这里是签名的 PDF:https ://easyupload.io/fxkzvs

我在签署 PDF 后附加 DSS,所以我附加以获取 LT 子类型的那些附加对象不会影响签名本身,所以我不确定为什么我会收到 PKCS7 错误,如果我制作的签名相同(创建时基线-B) 似乎很好。

这是创建和插入这些附加数据的代码部分:

编辑:我按照@mkl 的建议修复了所有问题。Adobe 不再抛出此错误,但我的签名仍被视为 Baseline-T 而不是 Baseline-LTA,可以在此处检查:https ://ec.europa.eu/cefdigital/DSS/webapp-demo/validation

这是新版本的 singed pdf:https ://easyupload.io/i5bs9k