pdf-boxライブラリ(v2.0.8)を使用して、pdfドキュメントにデジタル署名を追加しようとしています。私はすでに署名されたコンテンツをWebサービスから受信しています(秘密鍵のみで署名されています)。今私はPDF文書に追加できるように、この署名されたデータに証明書情報を関連付ける必要があります。できれば弾力のあるキャッスルAPIを使用して、既に署名されたコンテンツに証明書を追加するにはどうすればよいですか?すでに署名されたデータに証明書情報を関連付けるにはどうすればよいですか?
// here content is data which has to be signed
public byte[] sign(InputStream content) throws IOException {
try {
CMSSignedDataGenerator gen = new CMSSignedDataGenerator();
List<Certificate> certList = new ArrayList<Certificate>();
certList.add(certificate);
Store certs = new JcaCertStore(certList);
gen.addCertificates(certs);
CMSProcessableInputStream msg = new CMSProcessableInputStream(signPrivate(content));
CMSSignedData signedData = gen.generate(msg, false);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DEROutputStream dos = new DEROutputStream(baos);
dos.writeObject(signedData.toASN1Structure());
return baos.toByteArray();
} catch (Exception e) {
throw new IOException(e);
}
}
ここではデジタル署名を生成できますが、証明書情報は含まれていません。私はすでにthisとthisの質問をチェックしていますが、コンテンツはすでに秘密鍵を使ってseperatlyで署名されており、証明書のみを関連付ける必要があります。
すべてのCMSシグネチャプロファイルで真剣に取り組むには、問題の証明書*が必要です。*署名は、署名された証明書への参照として作成されます。 – mkl
@mkl、後で証明書を関連付けることはできず、秘密鍵でコンテンツに署名するときにのみ行うことができますか? –