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 |
|---|---|
dmpNoChanges | Po sertifikavimo pakeitimai neleidžiami |
dmpFormFillAndSign | Leidžiama formų užpildymas, šablonų instancijavimas ir pasirašymas |
dmpFormFillSignAndAnnotate | Leidž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 |
|---|---|---|
flaAll | Turi būti tuščias | Užrakina kiekvieną formos lauką |
flaInclude | Vienas ar daugiau unikalių laukų vardų | Užrakina tik išvardintus laukus |
flaExclude | Vienas 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
- Sertifikavimo parašas nešioja tiesioginį
/Referencemasyvą, kuriame yra tiesioginis DocMDP parašo nuorodos žodynas ir tiesioginiai transformacijos parametrai - Catalog
/Perms /DocMDPįrašas rodo į tą patį netiesioginį parašo žodyną - Lauko
/Lockįrašas rodo į netiesioginį/Type /SigFieldLockžodyną - Užrakto aprėptis nukopijuojama į tiesioginę FieldMDP parašo nuorodą, o jos
/Dataįrašas rodo į netiesioginę Catalog šaknį - Parašo žodynas per
/V 1pažymi transformacijos nuorodas kaip kritines
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