Ich möchte in der Lage sein, PDF-Dateien mehrmals zu signieren mit itext. Aber ich habe den privaten Schlüssel nicht. Ich erstelle einen Hash, den der Client signieren muss, und rufe nach dem erneuten Signieren signDeferred()
auf. Ist es möglich, mehrere leere Container zu erstellen, einen Hash mit allen leeren Containern zu generieren und dann Signaturen hinzuzufügen, sobald diese erscheinen?
Ich habe versucht, mehr als einen leeren Container hinzuzufügen, den Hash generiert, vom Client signiert und zurückgegeben. Ich habe versucht, mehr als einen leeren Container hinzuzufügen, habe aber die Fehlermeldung erhalten, dass es nicht das letzte Feld ist. Sie können signDeferred
。但我不知道如何修复它,因为 signDetached
nur im letzten Feld aufrufen, was keine Option ist, da ich nicht über den privaten Schlüssel verfüge.
Nein, das ist nicht möglich, zumindest nicht für interoperable PDF-Signaturen.
Der Grund dafür ist, dass es für PDF kein wirkliches Konzept paralleler Signaturen (oder Gegensignaturen) gibt, sondern nur das Konzept serieller Signaturen, eine Signatur nach der anderen, wobei jede neue Signatur auch alle vorherigen Signaturen überschreibt:
(Siehe diese Antwort für weitere Details.)
Genau genommen verlangt die PDF-Spezifikation nicht Signaturen, um alle gesamten Revisionen abzudecken, mit Ausnahme der im Signaturcontainer selbst eingebetteten Platzhalter, sie empfiehlt diese lediglich. Daher ist es theoretisch möglich, ein PDF mit mehreren Signaturen zu erstellen, die jeweils das gesamte PDF mit Ausnahme aller eingebetteten Signaturwerte abdecken.
Aber in der Praxis lehnen PDF-Signaturvalidatoren solche Konstruktionen ab. Darüber hinaus erfordern modernere Signaturprofile (insbesondere das PAdES-Basisprofil)Signaturen, um alle gesamten Revisionen mit Ausnahme signierter Container-Platzhalter abzudecken.
Das obige ist der detaillierte Inhalt vonMehrere Vertragsverlängerungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!