Wie erstelle ich GlobalSign Timestamp Digest?

409
Austin

Ich versuche, die Global Sign Digital Signing Service-API zum Signieren eines PDF-Dokuments zu verwenden. Ich habe einige ihrer Unterlagen erhalten. Aber ich kann ihre Forderung nach einer "Verdauung" nicht verstehen. Die Dokumentation schlägt vor, dass ich den Digest mit SHA256 mache, ihn mit HEX codiere und in Großbuchstaben schreibe. Ich bin mir jedoch nicht sicher, was sie verschlüsseln wollen. Alles, was es sagt, ist ein "Objekt", aber nicht das, was in das Objekt geht.

Dokumentationsseite:

https://downloads.globalsign.com/acton/media/2674/digital-signing-service-api-documentation#timestamp__digest__get

Sie haben zwei Referenzen in ihrer Signatur-API:

  • / identity / / sign / ; Signieren eines Hashes: Sobald ein privater Schlüssel und ein Zertifikat erstellt wurden und während einer einzelnen Signatursitzung gültig sind, können sie für mehrere Signaturvorgänge verwendet werden. Der Digest muss ein Hex-codierter SHA256-Message-Digest in Großbuchstaben sein. Die zurückgegebene Signatur wird ebenfalls Hex-codiert.
  • / Zeitstempel / ; Request Timestamp (Zeitstempel anfordern): Diese API stellt einen Zeitstempel bereit, der mit RFC3161 in die Signatur aufgenommen werden kann.

Ich habe Zeugnisse, um mit GlobalSign zu arbeiten. Ich konnte ihren "/ login" -API-Aufruf erfolgreich verwenden. Der nächste Schritt war die Verwendung des "/ timestamp / " - API. Was geht in der Verdauung?

1

2 Antworten auf die Frage

1
Tyler Dacus

Um einen Digest erstellen zu können, müssen Sie die PDF-Datei markieren, die Sie signieren möchten. Es wird erwartet, dass es Großbuchstaben ist. So habe ich es gemacht.

$pdf = file_get_contents("chicken.pdf"); $digest = strtoupper(hash('sha256', $pdf)); 

Stellen Sie außerdem sicher, dass Ihre Header korrekt sind. Es sollte das vom / login-Aufruf erhaltene Trägertoken wie folgt enthalten:

$headers = array('Authorization: Bearer '. $access_token); 

Wenn Sie unnötige Informationen in den Kopfzeilen lassen, erhalten Sie ein Timeout von 504.

Eine Verbesserung dieser akzeptierten Antwort könnte "hash_file ()" anstelle einer Kombination aus "file_get_contents ()" und "hash ()" sein. Jan Slabon vor 5 Jahren 0
0
grawity

Sie müssen den größten Teil des Signaturvorgangs lokal ausführen. Der einzige Unterschied besteht darin, dass Sie die API aufrufen, anstatt eine lokale CRT / PEM / Schlüsseldatei (oder eine Smartcard) zu verwenden.

Wenn Sie versuchen, eine Signatur zu erstellen, die in Apps wie Adobe Reader (in ihrem Fenster "Signatures") sichtbar ist, müssen Sie dies gemäß den folgenden Dokumenten tun:

Das erste Dokument (die PDF-Spezifikation) gibt an, welche Bytebereiche im Digest enthalten sind und wie die resultierende Signatur wieder in das PDF-Dokument eingebettet wird.

Beachten Sie, dass PDF erfordert Zeitstempel mit einer digitalen Signatur gekoppelt werden - Sie nicht haben können nur den Zeitstempel.

Eine PDF-Datei kann nur mit einem Zeitstempel in PDF 2.0 (ISO / DIS 32000-2 - 12.8.5.2) und in PDF 1.7 signiert sein. durch eine Erweiterungsebene (siehe zB PAdES LTV-Profil). Die Frage, auf die Sie sich beziehen, erfordert eine PAdES-Signatur mit nur einem Zeitstempel. Jan Slabon vor 5 Jahren 1