Certifikační podpisy a zámky polí
HotPDF umí vytvářet struktury oprávnění PDF připojené k certifikačním podpisům a podepsaným zámkům polí a následně stejné struktury v načteném dokumentu kontrolovat
API producenta
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 kombinuje vytvoření podepsaného zástupného symbolu s konfigurací certifikace
ConfigureCertificationSignature je určeno pro existující vytvořený podepsaný zástupný symbol a vyžaduje, aby bylo toto pole prvním polem nesoucím slovník podpisu
Dokument může obsahovat pouze jeden certifikační podpis, a proto je druhý požadavek na konfiguraci odmítnut před změnou grafu objektů
Tato API automaticky vyjednávají výstup PDF 1.5
Úrovně oprávnění DocMDP
| Hodnota | Oprávnění certifikace |
|---|---|
dmpNoChanges | Po certifikaci nejsou povoleny žádné změny |
dmpFormFillAndSign | Povoleno je vyplňování formuláře, konkretizace šablony a podepisování |
dmpFormFillSignAndAnnotate | Povoleny jsou předchozí změny a také vytváření, mazání a úprava anotací |
dmpNone je rezervováno pro výsledky inspekce bez transformace DocMDP a je producentskými metodami odmítnuto
Rozsahy zámku polí
| Hodnota | Argument Fields | Účinek po podepsání |
|---|---|---|
flaAll | Musí být prázdný | Uzamkne každé pole formuláře |
flaInclude | Jeden nebo více unikátních názvů polí | Uzamkne pouze uvedená pole |
flaExclude | Jeden nebo více unikátních názvů polí | Uzamkne každé pole kromě uvedených |
AttachSignatureFieldLock odmítá prázdné názvy, duplicitní názvy, neplatné hodnoty akce, nekompatibilní tvar Fields, nepodepsané cílové pole nebo pole, které již nese zámek nebo politiku FieldMDP
Vyzařovaná struktura
- Certifikační podpis nese přímé pole
/Referenceobsahující přímý slovník odkazu podpisu DocMDP a přímé parametry transformace - Položka
/Perms /DocMDPkatalogu ukazuje na stejný nepřímý slovník podpisu - Položka
/Lockpole ukazuje na nepřímý slovník/Type /SigFieldLock - Rozsah zámku se kopíruje do přímého odkazu podpisu FieldMDP a jeho položka
/Dataukazuje na nepřímý kořen katalogu - Slovník podpisu označuje odkazy transformace jako kritické přes
/V 1
Příklad v Delphi
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;
Načtená inspekce
function GetLoadedSignaturePermissions(
SigIndex: Integer;
out Info: THPDFSignaturePermissionInfo): Boolean;
Čtečka hlásí oprávnění DocMDP, propojení s katalogem, rozsah SigFieldLock, rozsah FieldMDP, názvy polí, strukturální platnost a řetězec diagnostického problému
Ověřuje požadované přímé a nepřímé tvary objektů a potvrzuje, že /Perms /DocMDP katalogu ukazuje na stejný slovník podpisu
Pokud jsou přítomny jak SigFieldLock, tak FieldMDP, jejich akce a seznamy polí se musí shodovat
Čtečka provádí omezenou inspekci slovníků a polí a nespouští JavaScript, akce ani obsah podpisu
Hranice validace
GetLoadedSignaturePermissions hlásí pouze strukturu politiky
VerifyLoadedSignature nadále samostatně hlásí kryptografickou integritu
Žádná z metod netvrdí, že každá pozdější přírůstková revize dodržuje hlášené oprávnění DocMDP nebo FieldMDP, protože to vyžadá analýzu sémantických změn revizi po revizi
Výkon
Validace producenta skenuje pouze vytvořená pole AcroForm a malé pole odkazů na podpisy, zatímco načtená inspekce čte pouze vybraný podpis, jeho zámek, jeho odkazy a položku oprávnění katalogu
Nedekóduje se žádný obsah stránky, datový proud obrazu, program písma ani nesouvisející nepřímý objekt