Sertifikavimo parašai ir laukų užraktai

HotPDF gali kurti PDF leidimų struktūras, pridėtas prie sertifikavimo parašų ir pasirašytų laukų užraktų, o paskui tikrinti tas pačias struktūras įkeltame dokumente

Gamyklinė 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 sujungia pasirašyto vietos žymeklio kūrimą su sertifikavimo konfigūracija

ConfigureCertificationSignature skirta jau sukurtam pasirašytam vietos žymikliui ir reikalauja, kad tas laukas būtų pirmasis laukas, nešantis parašo žodyną

Dokumentas gali turėti tik vieną sertifikavimo parašą, todėl antras konfigūracijos prašymas atmetamas dar prieš pakeičiant objektų grafą

Šios API automatiškai derasi dėl PDF 1.5 išvesties

DocMDP leidimų lygiai

Reikšmė Sertifikavimo leidimas
dmpNoChangesPo sertifikavimo pakeitimai neleidžiami
dmpFormFillAndSignLeidžiama formų užpildymas, šablonų instancijavimas ir pasirašymas
dmpFormFillSignAndAnnotateLeidžiami ankstesni pakeitimai plius anotacijų kūrimas, trynimas ir modifikavimas

dmpNone rezervuotas tikrinimo rezultatams be DocMDP transformacijos, o gamykliniai metodai jį atmeta

Laukų užraktų aprėptys

Reikšmė Fields argumentas Poveikis po pasirašymo
flaAllTuri būti tuščiasUžrakina kiekvieną formos lauką
flaIncludeVienas ar daugiau unikalių laukų vardųUžrakina tik išvardintus laukus
flaExcludeVienas ar daugiau unikalių laukų vardųUžrakina kiekvieną lauką, išskyrus išvardintus

AttachSignatureFieldLock atmeta tuščius vardus, pasikartojančius vardus, netinkamas veiksmų reikšmes, nesuderinamą Fields formą, nepasirašytą tikslinį lauką arba lauką, kuris jau nešioja užraktą arba FieldMDP strategiją

Išmetama struktūra

Delphi pavyzdys

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;

Įkeltas tikrinimas

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

Skaitytuvas praneša apie DocMDP leidimą, Catalog ryšį, SigFieldLock aprėptį, FieldMDP aprėptį, laukų vardus, struktūrinį tinkamumą ir diagnostikos problemos eilutę

Jis patikrina reikalingas tiesiogines ir netiesiogines objektų formas bei patvirtina, kad Catalog /Perms /DocMDP taiko tą patį parašo žodyną

Jei yra ir SigFieldLock, ir FieldMDP, jų veiksmai ir laukų sąrašai turi sutapti

Skaitytuvas atlieka ribotą žodynų ir masyvų tikrinimą ir nevykdo JavaScript, veiksmų arba parašo turinio

Tikrinimo riba

GetLoadedSignaturePermissions praneša tik apie strategijos struktūrą

VerifyLoadedSignature ir toliau atskirai praneša apie kriptografinį vientisumą

Nė vienas metodas neteigia, kad kiekviena vėlesnė prieauginė revizija paklūsta praneštam DocMDP ar FieldMDP leidimui, nes tai reikalauja revizijos po revizijos atliekamos semantinės pokyčių analizės

Našumas

Gamyklinis tikrinimas skenuoja tik sukurtus AcroForm laukus ir mažą parašo nuorodų masyvą, o įkeltas tikrinimas skaito tik pasirinktą parašą, jo užraktą, jo nuorodas ir Catalog leidimo įrašą

Nė vienas puslapio turinys, paveikslėlių srautas, šriftų programa ar nesusijęs netiesioginis objektas neiššifruojamas

Taip pat žiūrėkite