Maison > interface Web > js tutoriel > Les API JavaScript et WebCrypto peuvent-elles signer à elles seules un PDF ?

Les API JavaScript et WebCrypto peuvent-elles signer à elles seules un PDF ?

Mary-Kate Olsen
Libérer: 2024-12-01 03:31:09
original
539 Les gens l'ont consulté

Can JavaScript and WebCrypto API Alone Sign a PDF?

Signer un PDF à l'aide de JavaScript et de l'API WebCrypto

L'évolution de l'API WebCrypto et sa prise en charge dans les principaux navigateurs comme Chrome et Firefox ont soulevé la possibilité de l'exploiter pour la signature numérique de PDF. Cependant, le manque de documentation et d’exemples précis pose des problèmes. Bien qu'il existe des exemples expliquant le processus de signature, le résultat souhaité – une chaîne PDF Base64 signée – reste insaisissable.

Pouvons-nous signer un PDF en utilisant uniquement JavaScript et l'API WebCrypto ?

Actuellement, l'API WebCrypto n'a pas accès aux magasins de clés ou aux dispositifs cryptographiques externes. Pour répondre aux exigences courantes de signature de PDF, où le PDF doit être protégé dans les limites du serveur, l'envoi de l'intégralité du document au navigateur ou au serveur API de signature est déconseillé.

Approche optimale

Une solution efficace consiste à créer un hachage du PDF pour la signature, à envoyer ce hachage au navigateur et à utiliser JavaScript via une extension de navigateur pour accéder à un magasin de clés local (ou USB/Smartcard) afin de générer la signature. La signature résultante (par exemple, PKCS7 ou conteneur CMS) peut être renvoyée au serveur, où elle peut être injectée dans le PDF original à partir duquel le hachage a été créé.

Signer.Extension numérique pour navigateur Extensions

Pour faciliter les scénarios de signature basés sur un navigateur, une extension de navigateur appelée Signer.Digital et une bibliothèque .NET qui l'accompagne sont disponibles. L'extension fonctionne de manière transparente avec les principaux navigateurs (Chrome et Firefox), en tirant parti de Signer.Digital Browser Host pour interagir avec les magasins de certificats Windows et les CSP sous-jacents pour signer les hachages.

Exemple de code JavaScript

Pour invoquer la fonction de signature depuis l'extension, le code JavaScript peut être utilisé comme suit :

// 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.
    }
  );
Copier après la connexion

Diagramme : signature numérique à partir du navigateur

[Image de la signature numérique à partir du navigateur]

  1. Le serveur envoie le hachage de le document au navigateur.
  2. Le navigateur utilise l'API JavaScript de l'extension de navigateur Signer.Digital pour appeler une action de l'hôte de l'extension.
  3. L'hôte de l'extension du navigateur interagit avec le magasin de certificats ou le périphérique de chiffrement pour obtenir le hachage signé.
  4. La signature est renvoyée au navigateur par l'hôte de l'extension.
  5. Le navigateur renvoie la signature au serveur, qui peut ensuite l'intégrer dans le PDF.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal