问题标签 [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.
pdf - 更新现有 PDF 以添加签名
我的项目是在 Windows 中添加数字签名到现有 PDF,使用 C++,支持 PAdES。通过研究 PDF 格式的基本方面和 jSignPdf 的输出,我成功地签署了任何现有的 PDF 文件,并且 Adobe 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 源代码,但我希望可以避免这种情况。
非常感谢。
pdf - 创建 PAdES 签名
我正在尝试使用以下工作流程创建 PAdES 签名:
- PDF 已准备好进行签名并在浏览器中计算哈希
- 哈希被发送到后端
- 在后端形成分离的 CAdES 签名
- 分离的 CAdES 被发送回组装 PAdES 签名的浏览器
我们有一个 PDF 签名的工作示例,其工作方式如下:
- 准备好 PDF 并在浏览器中计算哈希
- 哈希被发送到后端
- 在后端制作分离的 PKCS7 签名(通过使用 BouncyCastle 库)
- 分离的 PKCS7 被发送回组装 PDF 签名的浏览器
这工作正常。
但是,现在我们在后端使用DSS库而不是 BouncyCastle,因为我们正在尝试创建 PAdES 签名。因此,DSS lib 正在创建分离的 CAdES(应该与分离的 PAdES 相同)而不是 PKCS7。但是,当在浏览器中组装签名时,签名无效(即使证书信息也不可见)。
据我了解,CAdES 是 PKCS7 的扩展,因此这种方法应该可行。
我首先尝试了解我们的方法是否有问题,如果没有,我将尝试分享我们用来制作分离的 CAdES 签名的代码,看看那里是否有问题。
pdf - PDF 文件中的可见签名
我正在尝试在 PDF 文件中创建可见签名。
获取一个简单的 PDF“hello world”文件:
并在第一页的某个位置使用文本签名以显示“Yolo”会产生以下结果:
所以 PDF 中有一个对象在第一页显示一些文本:
我现在的问题是,这个对象在 adobe reader 中被视为常见的文本对象。我希望它在单击时转到数字签名,就像 Adobe Acrobat 如何签署文档一样。
我想念什么?数字签名(6 或 8 数字对象)或我的应用程序放入新 PDF 中的任何其他对象中是否有参数将文本对象与签名链接?
非常感谢。
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依赖:
java - IText 是否支持 PAdES 签名承诺类型?
我有一个使用 IText 的工作软件,它使用所有 PAdES 配置文件签署文档,但我需要添加承诺类型字段,我该怎么做?
它与签名 Reason 有点相同,但在 PAdES 结构中。
pdf - 尝试创建 PDF 可见签名时出现“对象标签格式错误”
我正在尝试务实地创建一个可见的 PDF 签名。不可见的签名有效,但是当我添加 AP(外观)对象时,我在 Acrobat Reader 中收到错误消息:“对象标签格式错误”。
我制作的相关 XObject 如下所示:
我似乎找不到其中的错误,但我一定遗漏了一些东西。我阅读了Adobe 的整个文档以及其他一些博客,并据此编写了我的代码。
**更新: **
我根据 mkl 的评论更改了代码:
在这里你可以下载我的PDF。
更新 2:我的外部参照表似乎存在错误,它们没有指向正确的 XObjects,这就是我收到错误的原因。但是,现在即使我的 PDF 没有损坏并且签名正常(adobe 会告诉签名无法验证,因为证书是自签名的,但没关系)。
但是现在,我有另一个问题:图像没有出现。它是可点击的并且可以工作,但它都是空白的。
此处提供了 PDF 的新版本。
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 并使用 Adobe Reader 打开它,您会看到 TSA 制作的“签名”。
谢谢!
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 文件吗?
pdf - PDF 签名被 Acrobat 忽略,但在其他验证工具中可见
我们正在制作一个 webapp,其功能之一是制作 PaDES 签名。代码太大,无法在此处分享,但工作流程如下所示:
- 通过在浏览器中进行所有必要的转换,PDF 已准备好进行签名
- 使用所选算法计算摘要
- 如果使用DSS库生成分离的 CaDES 签名,则摘要会发送到后端
- 在后端生成的分离签名被发送回浏览器以插入到准备好的 PDF 中以制作 PaDES 签名
对于大多数 PDF 文件,该解决方案运行良好。但是,在某些文件中,Acrobat 不会显示签名,就好像它不存在一样,但是当尝试使用我们的 web 应用程序(在后端使用 DSS 进行验证)进行验证时,一切都显示正常。使用DSS在线验证工具检查时也显示正常。
以下是签名 PDF 中最相关的部分:
一切似乎都很好,但由于某种原因,Acrobat 忽略了签名。如果您想看一下,这是整个文件:https ://easyupload.io/2lrfg8
javascript - 当我使用我的代码创建 PAdES LT 签名时,Adobe 显示 PKCS7 解析错误
我正在开发制作 PAdES 签名的 webapp。我已成功实施 PAdES Baseline-B。但是,当我尝试通过添加此处描述的所有必要信息(包括 OCSP 响应、CRL 和证书)来创建 PAdES Baseline-LT 时,文件似乎已损坏并且 Adobe 显示以下错误:签名验证期间出错: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