Sertifiseringsunderskrifter og feltlåser

HotPDF kan opprette de PDF-tillatelsesstrukturene som henger på sertifiseringsunderskrifter og underskrevne feltlåser, for deretter å inspisere de samme strukturene i et innlastet dokument

Produsent-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 opprettelsen av en underskrevet plassholder med sertifiseringskonfigurasjon

ConfigureCertificationSignature er for en allerede opprettet underskrevet plassholder og krever at det feltet er det første feltet som bærer en underskriftsordbok

Et dokument kan kun inneholde én sertifiseringsunderskrift, slik at en andre konfigurasjonsforespørsel avvises før objektgrafen endres

Disse API-ene forhandler automatisk PDF 1.5-utmatning

DocMDP-tillatelsesnivåer

Verdi Sertifiseringstillatelse
dmpNoChangesIngen endringer er tillatt etter sertifisering
dmpFormFillAndSignSkjemautfylling, malinstansiering og underskrivning er tillatt
dmpFormFillSignAndAnnotateDe foregående endringene pluss opprettelse, sletting og endring av annotasjoner er tillatt

dmpNone er reservert for inspeksjonsresultater uten en DocMDP-transformasjon og avvises av produsent-metoder

Omfang for feltlåser

Verdi Fields-argument Effekt etter underskrift
flaAllMå være tomLåser hvert skjemafelt
flaIncludeEt eller flere unike feltnavnLåser kun de oppførte feltene
flaExcludeEt eller flere unike feltnavnLåser hvert felt unntatt de oppførte feltene

AttachSignatureFieldLock avviser tomme navn, duplikatnavn, ugyldige handlingsverdier, en inkompatibel Fields-form, et ounderskrevet målfelt eller et felt som allerede bærer en lås eller en FieldMDP-policy

Utsendt 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;

Innlastet inspeksjon

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

Leseren rapporterer DocMDP-tillatelse, Catalog-kobling, SigFieldLock-omfang, FieldMDP-omfang, feltnavn, strukturell gyldighet og en diagnostisk problemstreng

Den verifiserer de påkrevde direkte og indirekte objektformene og bekrefter at Catalog /Perms /DocMDP peker på samme underskriftsordbok

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

Leseren utfører avgrenset ordboks- og arrayinspeksjon og utfører ikke JavaScript, handlinger eller underskriftsinnhold

Valideringsgrense

GetLoadedSignaturePermissions rapporterer utelukkende policystrukturen

VerifyLoadedSignature fortsetter å separat rapportere kryptografisk integritet

Ingen av metodene påstår at enhver senere inkrementell revisjon overholder den rapporterte DocMDP- eller FieldMDP-tillatelsen, ettersom det krever revisjon-for-revisjon semantisk endringsanalyse

Ytelse

Produsentvalidering skanner kun opprettede AcroForm-felter og den lille underskriftsreferens-arrayen, mens innlastet inspeksjon kun leser den valgte underskriften, dens lås, dens referanser og Catalog-tillatelsesoppføringen

Det dekodes ikke noe sideinnhold, bildestrøm, skriftprogram eller urelatert indirekte objekt

Se også