Heim > Web-Frontend > js-Tutorial > Können JavaScript und die WebCrypto-API allein ein PDF signieren?

Können JavaScript und die WebCrypto-API allein ein PDF signieren?

Mary-Kate Olsen
Freigeben: 2024-12-01 03:31:09
Original
539 Leute haben es durchsucht

Can JavaScript and WebCrypto API Alone Sign a PDF?

PDF mit JavaScript und der WebCrypto-API signieren

Die Weiterentwicklung der WebCrypto-API und ihre Unterstützung in wichtigen Browsern wie Chrome und Firefox haben die Möglichkeit eröffnet es für die digitale PDF-Signatur zu nutzen. Der Mangel an Dokumentation und detaillierten Beispielen stellt jedoch eine Herausforderung dar. Es gibt zwar Beispiele, die den Signiervorgang erläutern, das gewünschte Ergebnis – eine signierte Base64-PDF-Zeichenfolge – bleibt jedoch schwer zu fassen.

Können wir ein PDF allein mit JavaScript und der WebCrypto-API signieren?

Derzeit hat die WebCrypto-API keinen Zugriff auf Schlüsselspeicher oder externe kryptografische Geräte. Um allgemeine PDF-Signaturanforderungen zu erfüllen, bei denen das PDF innerhalb der Servergrenzen geschützt werden sollte, wird davon abgeraten, das gesamte Dokument an den Browser oder den Signierungs-API-Server zu senden.

Optimaler Ansatz

Eine effektive Lösung besteht darin, einen Hash der PDF-Datei zum Signieren zu erstellen, diesen Hash an den Browser zu senden und JavaScript über eine Browsererweiterung zu verwenden, um auf einen lokalen Schlüsselspeicher (oder USB/Smartcard) zuzugreifen, um den zu generieren Unterschrift. Die resultierende Signatur (z. B. PKCS7- oder CMS-Container) kann an den Server zurückgesendet werden, wo sie in das Original-PDF eingefügt werden kann, aus dem der Hash erstellt wurde.

Signer.Digital Extension for Browser Erweiterungen

Um browserbasierte Signaturszenarien zu erleichtern, stehen eine Browsererweiterung namens Signer.Digital und eine zugehörige .NET-Bibliothek zur Verfügung. Die Erweiterung funktioniert nahtlos mit den wichtigsten Browsern (Chrome und Firefox) und nutzt den Signer.Digital Browser Host, um mit Windows-Zertifikatspeichern und zugrunde liegenden CSPs zu interagieren, um Hashes zu signieren.

JavaScript-Codebeispiel

Um die Signaturfunktion aus der Erweiterung aufzurufen, kann JavaScript-Code verwendet werden als folgt:

// Calculate Sign for the Hash by Calling function from Extension SignerDigital
SignerDigital.signPdfHash(hash, $("#CertThumbPrint").val(), "SHA-256")  // or "SHA256"
  // SignerDigitial.signHashCAdESBr method may be used for producing ICP-Brazil Signature

  .then(
    function (signDataResp) {
      // Send signDataResp to Server
    },
    function (errmsg) {
      // Send errmsg to server or display the result in browser.
    }
  );
Nach dem Login kopieren

Diagramm: Digitales Signieren vom Browser

[Bild des digitalen Signierens vom Browser]

  1. Server sendet Hash von das Dokument an den Browser.
  2. Der Browser verwendet die JavaScript-API der Signer.Digital Browser Extension, um eine Aktion von der Erweiterung aufzurufen Host.
  3. Der Browser-Erweiterungshost interagiert mit dem Zertifikatspeicher oder dem Kryptogerät, um den signierten Hash zu erhalten.
  4. Die Signatur wird vom Erweiterungshost an den Browser zurückgegeben.
  5. Der Browser sendet die Signatur zurück an den Server, der sie dann in das PDF einbinden kann.

Das obige ist der detaillierte Inhalt vonKönnen JavaScript und die WebCrypto-API allein ein PDF signieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage