4

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

我们连接到瑞典银行 ID 以签署 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 的话)。

4

1 回答 1

0

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

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

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

Both formats support embedding the OCSP responses, but it requires to add a TimeStamp too, which make more difficult to build the final format. It could be the reason to use a custom field into the SOAP message to return the OCSP response

XAdES and PAdES are conceptually similar but structurally different. A XAdES signature is XML and PAdES is binary. A XML signature can not be converted to PAdES

PAdES and CAdES use CMS, both are binary and they use ASN.1 syntax. But the signed message is different, CAdES signature is calculated on the entire document (and some othe attributes) and PAdes use certain data of the PDF document. Therefore a cades signature could not be converted to PAdes either.

于 2018-09-12T19:59:08.867 回答