iText7이 포함 된 pdf 문서에서 여러 서명을 수행하려고하지만 한 번 서명하면 문제가됩니다. 두 번 서명하면 첫 번째 서명이 유효하지 않습니다.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.
그리고 또 하나의 질문은 서명 필드를 만드는 데 실패 했습니까?
Hmmm, hmmm이 동작은 추가 모드가없는 서명과 일치하지만 'PdfSigner'가 올바르게 구성되어있는 것으로 보입니다. 외부 서명 용기에서 뭔가 잘못하고있는 것 같습니까? 그것의 구현을 공유 할 수 있습니까? –
유효성 확인 세부 정보를 공유 할 수도 있습니까? 표준 ETSI TS 102 853에 따라 서명을 검증하려 했습니까? (이를위한 몇 가지 온라인 도구가 있습니다.Google "dss signature validation") – veebee
또는 단순히 분석을 위해 서명 된 두 번 PDF를 공유하십시오. – mkl