2015-10-19 28 views
5

Mit der WebCrypto API, die von Chrome und Firefox entwickelt und unterstützt wird, möchte ich sie für die digitale Signatur eines PDF-Dokuments verwenden. Es gibt nicht viel Literatur, aber ich habe einige Beispiele [1] und eine Bibliothek namens PKI.js [2] gefunden. In den Beispielen wird der Signierungsprozess beschrieben, aber am Ende wird eine Signatur zurückgegeben. Ich würde erwarten, dass meine Base64-PDF-Datei wieder in einer signierten Base64-Zeichenfolge zurückgegeben wird, aber das passiert leider nicht. PKI.js bietet meines Wissens auch keine Möglichkeit, mein Base64-PDF zu signieren.PDF mit JavaScript signieren

Gibt es eine Möglichkeit, ein PDF nur mit JavaScript und der WebCrypto API zu signieren? Der private Schlüssel kann in einer <textarea> oder besser noch in den Zertifikatseinstellungen des Browsers gespeichert werden.

Base64 PDF (von REST API) → Zeichen mit JS & Zertifikat → Base64 PDF Signed (REST senden)

Antwort

5

Es Dies ist technisch möglich, in der Tat ist es eines der Szenarien, die wir bei der Erstellung von PKIjs in Betracht gezogen haben (weshalb es dieses Beispiel gibt) - https://pkijs.org/examples/PDFexample.html

Das Signieren erfordert das Arbeiten mit der PDF-Struktur selbst, die entweder einen benutzerdefinierten Parser oder Änderungen an einem vorhandenen benötigt (zB pdfjs).

Lange Rede, kurzer Sinn, das Unterschreiben eines PDFs im Browser wird eine Menge Arbeit erfordern, daran arbeiten wir jedoch.

+0

Ich möchte Klartext signieren, also ist das mit dieser Bibliothek möglich? Ich habe kein Beispiel gefunden, das einen p12 cert + privaten Schlüssel lesen und eine Signatur erzeugen kann. – Michael

+1

Sie können alles damit unterzeichnen. In diesem Beispiel werden beliebige Dateien signiert - https://pkijs.org/examples/CMSSigned_complex_example.html Dieses Beispiel zeigt das Importieren von PKCS # 12s - https://pkijs.org/examples/PKCS12SimpleExample.html siehe http://immitimatedrisk.com/? p = 543 für einige Einschränkungen und Implementierungshinweise. – rmhrisk

2

Es gibt PDFSign.js, eine Bibliothek, die eine PDF-Datei im Browser signieren kann. Es verwendet forge obwohl für die Unterschrift. Wenn PKI.js abgelöste PKCS7-Signaturen unterstützt, sollte es leicht sein, Forge zu ersetzen.