2014-09-05 2 views
0

У меня есть существующий подписанный PDF-файл, и я хотел бы добавить отметку времени для этой подписи и, необязательно, добавить информацию об отзыве (CRL/OCSP).Добавление метки времени на существующую подпись PDF

Кто-нибудь знает, как я могу это сделать на Java (желательно, используя библиотеку iTextpdf)?

Спасибо заранее!

Микаэль

+1

Добавление информации об отзыве впоследствии возможно только с использованием механизмов, выходящих за пределы текущего стандарта PDF I SO 32000-1, например. PAcES часть 4. Это нормально для вас? – mkl

+0

... Конечно, ISO должен быть написан без пространства, а PAcES должен был быть PAdES. *вздох* – mkl

ответ

1

Я предполагаю, что вы имеете в виду добавление «документа магазин безопасности» и «на уровне документа метку времени» (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. Возможно, это было не ясно в моем первом предложении, начиная с «Я предполагаю».

Смежные вопросы