Certificeringsunderskrifter og feltlåse

HotPDF kan oprette de PDF-tilladelsesstrukturer, der hænger på certificeringsunderskrifter og underskrevne feltlåse, og derefter inspicere de samme strukturer i et indlæst dokument

Producer-API

procedure AddCertificationSignatureField(
  const FieldName: AnsiString;
  Rectangle: TRect;
  Permission: THPDFDocMDPPermission;
  ContentsBytes: Integer = 8192;
  const SubFilter: AnsiString = 'adbe.pkcs7.detached';
  const Reason: AnsiString = '';
  const Location: AnsiString = '';
  const ContactName: AnsiString = '';
  Flags: THPDFFormFieldFlags = []);

procedure ConfigureCertificationSignature(
  const FieldName: AnsiString;
  Permission: THPDFDocMDPPermission);

procedure AttachSignatureFieldLock(
  const FieldName: AnsiString;
  Action: THPDFFieldLockAction;
  const Fields: array of AnsiString);

AddCertificationSignatureField kombinerer oprettelsen af en underskrevet pladsholder med certificeringskonfiguration

ConfigureCertificationSignature er til en allerede oprettet underskrevet pladsholder og kræver, at det felt er det første felt, der bærer et underskriftsordbog

Et dokument kan kun indeholde én certificeringsunderskrift, så en anden konfigurationsanmodning afvises, før objektgrafen ændres

Disse API'er forhandler automatisk PDF 1.5-output

DocMDP-tilladelsesniveauer

Værdi Certificeringstilladelse
dmpNoChangesIngen ændringer er tilladt efter certificering
dmpFormFillAndSignFormularudfyldning, skabeloninstantiering og underskrivning er tilladt
dmpFormFillSignAndAnnotateDe forudgående ændringer plus oprettelse, sletning og ændring af annotationer er tilladt

dmpNone er reserveret til inspektionsresultater uden en DocMDP-transformation og afvises af producer-metoder

Omfang af feltlåse

Værdi Fields-argument Effekt efter underskrift
flaAllSkal være tomLåser hvert formularfelt
flaIncludeEt eller flere entydige feltnavneLåser kun de anførte felter
flaExcludeEt eller flere entydige feltnavneLåser hvert felt undtagen de anførte felter

AttachSignatureFieldLock afviser tomme navne, dubletnavne, ugyldige handlingsværdier, en inkompatibel Fields-form, et ikke-underskrevet målfelt eller et felt, der allerede bærer en lås eller FieldMDP-politik

Udsendt struktur

Delphi-eksempel

var
  LockedFields: THPDFAnsiStringArray;
begin
  HotPDF.CurrentPage.AddTextField(
    'InternalCode', '', Rect(40, 80, 220, 108));

  HotPDF.CurrentPage.AddCertificationSignatureField(
    'CertSig', Rect(40, 140, 260, 190),
    dmpFormFillAndSign, 8192,
    'adbe.pkcs7.detached', 'Document approval');

  SetLength(LockedFields, 1);
  LockedFields[0] := 'InternalCode';
  HotPDF.CurrentPage.AttachSignatureFieldLock(
    'CertSig', flaInclude, LockedFields);
end;

Indlæst inspektion

function GetLoadedSignaturePermissions(
  SigIndex: Integer;
  out Info: THPDFSignaturePermissionInfo): Boolean;

Læseren rapporterer DocMDP-tilladelse, Catalog-kobling, SigFieldLock-omfang, FieldMDP-omfang, feltnavne, strukturel gyldighed og en diagnostisk problemstreng

Den verificerer de krævede direkte og indirekte objektformer og bekræfter, at Catalog /Perms /DocMDP peger på det samme underskriftsordbog

Hvis både SigFieldLock og FieldMDP er til stede, skal deres handlinger og feltlister stemme overens

Læseren udfører afgrænset ordbogs- og arrayinspektion og udfører ikke JavaScript, handlinger eller underskriftsindhold

Valideringsgrænse

GetLoadedSignaturePermissions rapporterer udelukkende politikstrukturen

VerifyLoadedSignature fortsætter med særskilt at rapportere kryptografisk integritet

Ingen af metoderne påstår, at enhver senere inkrementel revision overholder den rapporterede DocMDP- eller FieldMDP-tilladelse, da det kræver revisions-for-revision semantisk ændringsanalyse

Ydeevne

Producentvalidering scanner kun oprettede AcroForm-felter og det lille underskriftsreference-array, mens indlæst inspektion kun læser den valgte underskrift, dens lås, dens referencer og Catalog-tilladelsesposten

Der afkodes intet sideindhold, billedstrøm, skriftprogram eller urelateret indirekte objekt

Se også