gpt4 book ai didi

java - 如何使用离线签名和 OCSP 响应创建 PADES

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:22:27 26 4
gpt4 key购买 nike

我很难尝试仅从文档和源代码中找出 Esig DSS Java 套件。(eu.europa.esig.dss.* 树)

我们连接到 Swedish BankID 以签署 PDF 和简单的纯文本。响应是带有签名字段和 OCSP 响应的 SOAP XML。

最终目标是将这两个部分组合成一个对象“有效签名”,该对象可以嵌入到 PDF 中(使用 DSS 和 PDFbox)。

BankID Soap 字段的内容似乎具有适用于 DSS 工具的正确格式:

签名可以加载

DSSDocument sigDoc = new InMemoryDocument(xmlSignature)
SignedDocumentValidator documentValidator = SignedDocumentValidator.fromDocument(sigDoc);
// ...
AdvancedSignature advancedSignature = documentValidator.getSignatures().get(0);

OCSP 响应可以用

读取
ExternalResourcesOCSPSource source = new ExternalResourcesOCSPSource(ocspBytes);
BasicOCSPResp basicOCSPResp = source.getContainedOCSPResponses().get(0);

我可以从对象中打印出各种信息,找到嵌入的证书等,所以格式看起来是合法的。

问题:如何从 ExternalResourcesOCSPSource 获取有效的 OCSPToken?

我一直在兜圈子,试图将两者组合成一个 AdvancedSignature(如果这是我可以用来嵌入到 PDF 中的东西)。

最佳答案

第三方系统提供的高级数字签名不能用于创建有效的签名 PDF

PAdES 签名始终包含在 PDF 文档中,因此签名服务不可能返回 DSS 认为有效的分离 PAdES 签名。

它可能在 DSS 可以处理的 SOAP 消息中提供分离的 CAdES 或 XAdES 签名(DSS 提供高级 API 以使用 XAdES、CAdES、PAdES 和 aSiCS 格式签署文档)。

两种格式都支持嵌入 OCSP 响应,但都需要添加时间戳,这使得构建最终格式更加困难。这可能是在 SOAP 消息中使用自定义字段以返回 OCSP 响应的原因

XAdES 和 PAdES 在概念上相似但在结构上不同。 XAdES 签名是 XML,而 PAdES 是二进制的。无法将 XML 签名转换为 PAdES

PAdES 和 CAdES 使用 CMS,两者都是二进制的,并且使用 ASN.1 语法。但签名的消息不同,CAdES 签名是在整个文档(和一些其他属性)上计算的,而 PAdes 使用 PDF 文档的某些数据。因此,cades 签名也无法转换为 PAdes。

关于java - 如何使用离线签名和 OCSP 响应创建 PADES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52275630/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com