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 |
|---|---|
dmpNoChanges | Ingen ændringer er tilladt efter certificering |
dmpFormFillAndSign | Formularudfyldning, skabeloninstantiering og underskrivning er tilladt |
dmpFormFillSignAndAnnotate | De 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 |
|---|---|---|
flaAll | Skal være tom | Låser hvert formularfelt |
flaInclude | Et eller flere entydige feltnavne | Låser kun de anførte felter |
flaExclude | Et eller flere entydige feltnavne | Lå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
- Certificeringsunderskriften bærer et direkte
/Reference-array, der indeholder en direkte DocMDP-underskriftsreferenceordbog og direkte transformationsparametre - Catalog
/Perms /DocMDP-posten peger på det samme indirekte underskriftsordbog - Feltets
/Lock-post peger på et indirekte/Type /SigFieldLock-ordbog - Låseomfanget kopieres ind i en direkte FieldMDP-underskriftsreference, og dens
/Data-post peger på den indirekte Catalog-rod - Underskriftsordbogen markerer transformationsreferencer som kritiske via
/V 1
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