2016-06-09 22 views
-1

Implementierung einer Client-Server-Signatur-Webapp, wie im B. Lowagie-Buch "Digital Sinatures for PDF document" (Version: Signieren eines Dokuments auf dem Server mit einer auf dem Client erstellten Signatur) beschrieben. Ich stoße auf dieses Problem: Wenn ich ein PDF-Dokument signiere (mit bereits vorhandenem leerem Unterschriftsfeld), ist die Signatur gültig (in Adobe Reader oder itext), die betroffene Revision dieser Signatur ist 1, aber die gesamte Revisionsnummer ändert sich von 0 bis 2 (Verhinderung der Signatur das gesamte Dokument zu bedecken.) (in der Adobe-Reader, hat das Dokument nur eine Revision)Warum wird meine Signaturrevisionsnummer nach dem Trennen der Signatur um 2 erhöht (in itext)?

Grüße

David L.

Output des Verifikationswerkzeuges (auch in das Buch)

===== systemed_certi fizierung =====

Unterschrift deckt gesamtes Dokument: false

Dokument Revision: 1 von 2

Integritätsprüfung OK? wahre

Versionen von itext: 5.5.6 und 5.5.9

original signedresult

Antwort

0

Ich fürchte, ich nicht das Problem mit dem Probenergebnis Dokument wiedergeben kann signedoutput.pdf Sie zur Verfügung gestellt. Ich bekomme

Signature name: systemed_certification 
Signature covers whole document: true 
Document revision: 1 of 1 
Subject: {SURNAME=[Leruse], C=[BE], CN=[David Leruse (Signature)], SN=[80110802537], GIVENNAME=[David Paul-Marie]} 
Document verifies: true 

PdfReader reader = new PdfReader(resource); 
AcroFields acroFields = reader.getAcroFields(); 

List<String> names = acroFields.getSignatureNames(); 
for (String name : names) { 
    System.out.println("Signature name: " + name); 
    System.out.println("Signature covers whole document: " + acroFields.signatureCoversWholeDocument(name)); 
    System.out.println("Document revision: " + acroFields.getRevision(name) + " of " + acroFields.getTotalRevisions()); 
    PdfPKCS7 pk = acroFields.verifySignature(name); 
    System.out.println("Subject: " + CertificateInfo.getSubjectFields(pk.getSigningCertificate())); 
    System.out.println("Document verifies: " + pk.verify()); 
} 

(VerifySignature.java Test testVerifySignedOutput)

manuelle Inspektion der PDF-Datei mit bestätigt, dass es definitiv nur eine einzige Revision.

0

Danke für Ihre Hilfe ... Ich fand endlich das Problem: Es war zwischen dem Client und dem Server ... Eine zusätzliche Feedline im http Post-Protokoll machte diese zusätzliche Revision.