Security

Security

Deze pagina behandelt wachtwoorden, encryptie en digitale handtekeningen. Document.OpenFile() / Document.Open() accepteren een wachtwoord om een beschermd document te openen, Document.Save() accepteert een encrypt optie om er één te beschermen, en Document.Sign() / Document.Certify() / Document.VerifySignatures() voegen digitale handtekeningen toe en controleren ze.


Openen en ontcijferen van wachtwoordbeveiligde documenten

Geef { password: '...' } door aan Document.OpenFile() of Document.Open() om een document te openen dat beveiligd is met een gebruikerswachtwoord. Als het wachtwoord ontbreekt of onjuist is, gooit de aanroep InvalidPasswordError.

import { Document, InvalidPasswordError } from '@asposefoss/pdf';

try {
  const doc = Document.OpenFile('secret.pdf', { password: 'hunter2' });
  doc.WriteTo('decrypted.pdf');    // output is plaintext
} catch (e) {
  if (e instanceof InvalidPasswordError) console.error('wrong password');
  else throw e;
}

Versleutelen bij opslaan

Document.Save() (en Document.WriteTo()) accepteren een encrypt optie. Wachtwoordgebaseerde encryptie is het gangbare geval; de bibliotheek ondersteunt ook openbare-sleutel encryptie naar één of meer ontvangercertificaten, die opnieuw worden geopend met de privésleutel van de ontvanger.

// Encrypt to one or more recipient certificates (PEM string or DER bytes):
const bytes = doc.Save({
  encrypt: {
    recipients: [{ certificate: recipientCertPem }],
    algorithm: 'aes256',                 // 'aes256' (default) | 'aes128' | 'rc4'
    permissions: { copying: false },     // shared across all recipients
  },
});

// Open with the recipient's private key + certificate, or a PKCS#12 bundle:
const opened = Document.Open(bytes, {
  recipient: { privateKey, certificate: recipientCertPem },
});
console.log(opened.Permissions);         // recovered permission flags (not enforced)

Ondertekenen en certificeren

Document.Certify() voegt een certificeringshandtekening (author) toe die een DocMDP transformatie draagt die aangeeft welke latere wijzigingen zijn toegestaan; Document.Sign() voegt een verdere, gewone goedkeuringshandtekening toe die incrementeel bovenop kan worden aangebracht. Beide nemen een { certificate, privateKey } ondertekenaar en een opties-object (reason, location, name, fieldName, en — voor Certify() — permissions).

const certifying = Document.OpenFile('report.pdf');
await certifying.Certify(
  { certificate: author.certificate, privateKey: author.privateKey },
  { permissions: 'form-fill', reason: 'Certifying the report', fieldName: 'Certification' },
);
const certifiedBytes = certifying.Save();

const approving = Document.Open(certifiedBytes);
await approving.Sign(
  { certificate: approver.certificate, privateKey: approver.privateKey },
  { reason: 'Approved for publication', fieldName: 'Approval' },
);
approving.WriteTo('signed.pdf');

Handtekeningen verifiëren

Document.VerifySignatures() controleert elke handtekening in het document: het herberekent elke /ByteRange digest, verifieert de losgekoppelde CMS, en rapporteert wat er veranderde na elke handtekening. Het retourneert een SignatureReport[], één item per handtekening.

const reports = await Document.OpenFile('signed.pdf').VerifySignatures();
for (const r of reports) {
  console.log(r.name, 'integrity:', r.integrity, 'signature:', r.signature);
}

Tips en beste praktijken

  • Vang InvalidPasswordError specifiek op vóór een bredere algemene vangst bij het openen van onbetrouwbare invoer, zodat je anders kunt reageren op een slecht wachtwoord dan op een beschadigd bestand.
  • Roep Certify() aan vóór alle Sign()-aanroepen — een certificeringshandtekening stelt de DocMDP-permissies vast waar latere goedkeuringshandtekeningen bovenop worden gelegd.
  • Document.Open() retourneert herstelde Permissions na publieke-sleutelontsleuteling, maar de bibliotheek handhaaft ze zelf niet — behandel ze als informatief.
  • VerifySignatures() is async — await het (of verwerk de geretourneerde Promise) voordat je de rapportarray leest.

Veelvoorkomende problemen

ProbleemOorzaakOplossing
Document.OpenFile() / Document.Open() gooit InvalidPasswordErrorHet document is beveiligd met een wachtwoord en er is geen wachtwoord, of het verkeerde, opgegevenGeef { password: '...' } aan Document.OpenFile() / Document.Open()
Decryptie met openbare sleutel misluktDe verkeerde privésleutel of certificaat werd doorgegeven, of geen van beide komt overeen met een recipients-vermelding die bij het versleutelen werd gebruiktBevestig dat de recipient optie’s privateKey / certificate (of PKCS#12-bundel) overeenkomt met één van de oorspronkelijke ontvangers
Een goedkeuringshandtekening maakt de certificering ongeldigSign() werd aangeroepen met rechten die de certificerende DocMDP transformatie niet toestaatStel een permissions waarde in op Certify() (bijv. 'form-fill') breed genoeg voor de wijzigingen die latere ondertekenaars zullen aanbrengen
VerifySignatures() meldt een gefaalde integriteitscontroleDe ondertekende bytes zijn na ondertekening gewijzigd, buiten een incrementele update die de handtekening dektOnderteken het document opnieuw na eventuele verdere bewerkingen

FAQ

Wat is het verschil tussen Sign en Certify?

Certify() voegt de eerste certificeringshandtekening toe en verklaart (via een DocMDP transformatie) welke latere wijzigingen zijn toegestaan. Sign() voegt een gewone goedkeuringshandtekening toe, incrementeel toegevoegd bovenop wat er daarvoor was.

Hoe open ik een wachtwoordbeveiligde PDF?

Geef { password: '...' } door aan Document.OpenFile() of Document.Open(), en vang InvalidPasswordError op als het wachtwoord mogelijk onjuist is.

Handhaaft deze bibliotheek PDF-permissievlaggen?

Nee. Document.Open() herstelt de Permissions vlaggen uit een versleuteld document zodat je ze kunt inspecteren, maar beperkt zelf niet wat je code kan doen met het geopende document.

Hoe controleer ik of de handtekeningen van een ondertekende PDF nog geldig zijn?

Roep Document.VerifySignatures() aan (een async methode) en inspecteer de integrity en signature velden van elk geretourneerde SignatureReport.


API Reference Samenvatting

Klasse/MethodeBeschrijving
Document.OpenFile() / Document.Open()Open een document, optioneel wachtwoord- of openbare-sleutelbeveiligd
InvalidPasswordErrorWordt gegooid wanneer een wachtwoord ontbreekt of onjuist is
Document.Save() / Document.WriteTo()Sla een document op, optioneel met een encrypt-optie
PermissionsHerstelde permissievlaggen van een versleuteld document
Document.Certify()Voeg een certificering (auteur)handtekening toe met een DocMDP transformatie
Document.Sign()Voeg een goedkeuringshandtekening toe
Document.VerifySignatures()Verifieer elke handtekening in het document
SignatureReportVerificatieresultaat van één handtekening: name, integrity, signature

Zie ook

 Nederlands