Tanúsítási aláírások és mezőzárak

A HotPDF képes létrehozni a tanúsítási aláírásokhoz és az aláírt mezőzárakhoz csatolt PDF jogosultsági szerkezeteket, majd ugyanazokat a szerkezeteket egy betöltött dokumentumban megvizsgálni

Előállító 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);

Az AddCertificationSignatureField egyesíti az aláírt helyőrző létrehozását a tanúsítási konfigurációval

A ConfigureCertificationSignature már létrehozott aláírt helyőrzőhöz való, és megköveteli, hogy az a mező legyen az első olyan mező, amely aláírás-szótárt hordoz

Egy dokumentum csak egy tanúsítási aláírást tartalmazhat, így egy második konfigurációs kérelem már az objektumgráf módosítása előtt elutasításra kerül

Ezek az API-k automatikusan kezelik a PDF 1.5 kimenetet

DocMDP jogosultsági szintek

Érték Tanúsítási jogosultság
dmpNoChangesTanúsítás után nem engedélyezett módosítás
dmpFormFillAndSignŰrlapkitöltés, sablonpéldányosítás és aláírás engedélyezett
dmpFormFillSignAndAnnotateAz előző módosítások plusz jegyzetek létrehozása, törlése és módosítása engedélyezett

A dmpNone a DocMDP transzformáció nélküli vizsgálati eredmények számára van fenntartva, és az előállító metódusok elutasítják

Mezőzár-hatókörök

Érték Fields argumentum Aláírás utáni hatás
flaAllÜres kell legyenMinden űrlapmezőt zárol
flaIncludeEgy vagy több egyedi mezőnévCsak a felsorolt mezőket zárolja
flaExcludeEgy vagy több egyedi mezőnévA felsoroltakon kívül minden mezőt zárol

Az AttachSignatureFieldLock elutasítja az üres neveket, a duplikált neveket, az érvénytelen műveleti értékeket, az inkompatibilis Fields-alakot, az alááratlan célmezőt vagy azt a mezőt, amely már hordoz zárat vagy FieldMDP-házirendet

Kibocsátott szerkezet

Delphi példa

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;

Betöltött vizsgálat

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

Az olvasó jelenti a DocMDP jogosultságot, a Catalog kapcsolatot, a SigFieldLock hatókört, a FieldMDP hatókört, a mezőneveket, a szerkezeti érvényességet és egy diagnosztikai problémakarakterláncot

Ellenőrzi a szükséges közvetlen és közvetett objektumalakokat, és megerősíti, hogy a Catalog /Perms /DocMDP ugyanarra az aláírás-szótárra irányul

Ha mind a SigFieldLock, mind a FieldMDP jelen van, műveleteik és mezőlistáiknak egyezniük kell

Az olvasó korlátozott szótár- és tömbvizsgálatot végez, és nem hajt végre JavaScriptet, műveleteket vagy aláírás-tartalmat

Érvényesítési határ

A GetLoadedSignaturePermissions csak a házirend-szerkezetet jelenti

A VerifyLoadedSignature továbbra is külön jelenti a kriptográfiai épséget

Egyik metódus sem állítja, hogy minden későbbi növekményes revíció engedelmeskedik a jelentett DocMDP vagy FieldMDP jogosultságnak, mivel ez revíziónkénti szemantikai változáselemzést igényel

Teljesítmény

Az előállító érvényesítés csak a létrehozott AcroForm-mezőket és a kis aláírás-hivatkozási tömböt vizsgálja át, míg a betöltött vizsgálat csak a kiválasztott aláírást, annak zárát, hivatkozásait és a Catalog jogosultsági bejegyzést olvassa

Egyetlen oldaltartalom, képfolyam, betűtípus-program vagy rokonviszony nélküli közvetett objektum sem kerül dekódolásra

Lásd még