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
dmpNoChangesPo certifikaci nejsou povoleny žádné změny
dmpFormFillAndSignPovoleno je vyplňování formuláře, konkretizace šablony a podepisování
dmpFormFillSignAndAnnotatePovoleny 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í
flaAllMusí být prázdnýUzamkne každé pole formuláře
flaIncludeJeden nebo více unikátních názvů políUzamkne pouze uvedená pole
flaExcludeJeden 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

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

Viz také