0

私はそのようなことをしました。それが正しいか?

私は:

        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;
}

できたと思います。それは正しい方法ですか?どう思いますか?

4

1 に答える 1

1

すでにコメントとして書かれているように:

DSSディクショナリ内の証明書の PDF キーは、CertではなくCertsです。キーCertは、単一の署名の VRI ディクショナリで使用されます。

詳細は、ETSI TS 102 778-4 (別名 PAdES パート 4) の Annex A.1 Document Security Store に記載れています。ISO 32000-2 にも含まれます。

于 2013-07-19T12:08:45.563 に答える