Я предполагаю, что вы имеете в виду добавление «документа магазин безопасности» и «на уровне документа метку времени» (RFC 3161), как определено в стандарте Падес-5. Это объясняется в section 5.4 of my book.
Это пример метода, который можно добавить как:
public void addLtv(
String src, String dest,
OcspClient ocsp, CrlClient crl, TSAClient tsa)
throws IOException, DocumentException, GeneralSecurityException {
PdfReader r = new PdfReader(src);
FileOutputStream fos = new FileOutputStream(dest);
PdfStamper stp = PdfStamper.createSignature(r, fos, '\0', null, true);
LtvVerification v = stp.getLtvVerification();
AcroFields fields = stp.getAcroFields();
List<String> names = fields.getSignatureNames();
String sigName = names.get(names.size() - 1);
PdfPKCS7 pkcs7 = fields.verifySignature(sigName);
if (pkcs7.isTsp())
System.out.println("TIMESTAMP!");
for (String name : names) {
v.addVerification(name, ocsp, crl,
LtvVerification.CertificateOption.WHOLE_CHAIN,
LtvVerification.Level.OCSP_CRL,
LtvVerification.CertificateInclusion.NO);
}
PdfSignatureAppearance sap = stp.getSignatureAppearance();
LtvTimestamp.timestamp(sap, tsa, null);
}
Обратите внимание, что этот метод пишет «TIMESTAMP» в System.out
, если последняя подпись, которая была добавлена была на уровне документа временной метки.
Важно: После ответа на этот вопрос, я увидел замечание: MKL Добавление информации об отзыве впоследствии только возможно с использованием механизмов за пределами текущего стандарта PDF I SO 32000-1, например, PAdES, часть 4. В моем ответе очевидно, что вы говорите о подписях, применяемых с использованием стандартов PAdES. Возможно, это было не ясно в моем первом предложении, начиная с «Я предполагаю».
Добавление информации об отзыве впоследствии возможно только с использованием механизмов, выходящих за пределы текущего стандарта PDF I SO 32000-1, например. PAcES часть 4. Это нормально для вас? – mkl
... Конечно, ISO должен быть написан без пространства, а PAcES должен был быть PAdES. *вздох* – mkl