【发布时间】:2013-07-19 09:54:02
【问题描述】:
我做过类似的事情。对吗?
我已经:
PDDocumentCatalog catalog = template.getDocumentCatalog();
COSDictionary catalogDictionary = catalog.getCOSDictionary();
COSDictionary dssDictionary = new COSDictionary();
COSArray certDSS = getCertificateCosArray(certChainList);
dssDictionary.setItem(COSName.getPDFName("Cert"), certDSS);
catalogDictionary.setItem(COSName.getPDFName("DSS"), dssDictionary);
and code to fill:
public static COSArray getCertificateCosArray( List<X509Certificate> certChainList) {
COSArray certDSS = new COSArray();
for (X509Certificate x509Certificate : certChainList) {
PDStream certificateStream = new PDStream(new COSStream(new RandomAccessBuffer()));
appendRawCommands(certificateStream.createOutputStream(), x509Certificate.getEncoded());
PDObjectStream pd = new PDObjectStream(certificateStream.getStream());
certDSS.add(pd);
}
return certDSS;
}
我想它已经完成了。这是正确的方法吗?你觉得呢?
【问题讨论】:
-
DSS 字典中证书的 PDF 密钥是 Certs,而不是 Cert。密钥 Cert 用于单个签名的 VRI 字典。
-
写下该评论,作为答案,我会检查作为答案。
标签: pdf digital-signature pdfbox