iText7でpdf文書で複数の署名を行いたいのですが、問題は一度署名しても問題ありません。私が2回署名した場合、最初の署名は無効です。iText7複数の署名
を、ここに私のコードです:それはこのようになります
@Test
public void testMutiSign() {
iTextSignerUtil1.SignMultPDF(getBytes(unsignedPath), destPath1);
iTextSignerUtil2.SignMultPDF(getBytes(destPath1), destPath2);
}
IExternalSignatureContainer externalP7DetachSignatureContainer = new IExternalSignatureContainer() {
@Override
public byte[] sign(InputStream data) throws GeneralSecurityException {
//byte[] hashData = HashUtil.hash(data , "SHA256");
byte signData = null;
signData = signUtil.signP7DetachData(data);
return signData;
}
@Override
public void modifySigningDictionary(PdfDictionary signDic) {
signDic.put(PdfName.Filter, PdfName.Adobe_PPKLite);
signDic.put(PdfName.SubFilter, PdfName.Adbe_pkcs7_detached);
}
};
public void SignMultPDF(byte[] pdfFile , String destPath , String name , String fname , String value){
boolean success = false;
int estimatedSize = 300000;
while (!success) {
try {
PdfReader pdfReader = new PdfReader(new ByteArrayInputStream(pdfFile));
PdfSigner pdfSigner = new PdfSigner(pdfReader, new FileOutputStream(destPath), true);
pdfSigner.signExternalContainer(externalP7DetachSignatureContainer, estimatedSize);
success = true;
} catch (IOException e) {
e.printStackTrace();
estimatedSize += 1000;
} catch (GeneralSecurityException e) {
e.printStackTrace();
}
}
}
上記はすべて私のサンプルタラですe。
もう1つの質問ですが、署名フィールドを作成するのに失敗しましたか?
Hmmm、hmmm、この動作は追加モードなしの署名と一致しますが、 'PdfSigner'は正しく構築されているように見えます。外部の署名用のコンテナで何か問題が起きている可能性がありますか?実装を分かち合えますか? –
検証の詳細を共有することはできますか?標準のETSI TS 102 853に従って署名を検証しようとしましたか? (そのためのオンラインツールがいくつかあります。Google "dss signature validation") – veebee
また、分析のために2回署名したPDFを共有するだけです。 – mkl