Semnături de certificare și blocări de câmpuri

HotPDF poate crea structurile de permisiuni PDF atașate semnăturilor de certificare și blocărilor de câmpuri semnate, apoi poate inspecta aceleași structuri într-un document încărcat

API de producător

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 combină crearea unui substituent semnat cu configurarea certificării

ConfigureCertificationSignature este destinat unui substituent semnat deja creat și necesită ca acel câmp să fie primul câmp care poartă un dicționar de semnătură

Un document poate conține o singură semnătură de certificare, deci a doua cerere de configurare este respinsă înainte ca graful de obiecte să fie modificat

Aceste API-uri negociază automat ieșirea PDF 1.5

Niveluri de permisiune DocMDP

Valoare Permisiune de certificare
dmpNoChangesDupă certificare nu sunt permise modificări
dmpFormFillAndSignSunt permise completarea formularelor, instanțierea șabloanelor și semnarea
dmpFormFillSignAndAnnotateSunt permise modificările anterioare plus crearea, ștergerea și modificarea adnotărilor

dmpNone este rezervat pentru rezultate de inspecție fără transformare DocMDP și este respins de metodele de producător

Domenii de blocare a câmpurilor

Valoare Argumentul Fields Efect după semnare
flaAllTrebuie să fie golBlochează fiecare câmp de formular
flaIncludeUnul sau mai multe nume unice de câmpBlochează doar câmpurile listate
flaExcludeUnul sau mai multe nume unice de câmpBlochează fiecare câmp cu excepția celor listate

AttachSignatureFieldLock respinge nume goale, nume duplicate, valori de acțiune nevalide, o formă Fields incompatibilă, un câmp țintă nesemnat sau un câmp care poartă deja o blocare sau o politică FieldMDP

Structura emisă

Exemplu 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;

Inspecție încărcată

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

Cititorul raportează permisiunea DocMDP, legătura Catalog, domeniul SigFieldLock, domeniul FieldMDP, numele câmpurilor, valabilitatea structurală și un șir de problemă de diagnostic

Verifică formele de obiecte directe și indirecte necesare și confirmă că Catalog /Perms /DocMDP vizează același dicționar de semnătură

Dacă sunt prezente atât SigFieldLock cât și FieldMDP, acțiunile și listele lor de câmpuri trebuie să coincidă

Cititorul efectuează inspecție limitată de dicționare și tablouri și nu execută JavaScript, acțiuni sau conținut de semnătură

Limită de validare

GetLoadedSignaturePermissions raportează doar structura politicii

VerifyLoadedSignature continuă să raporteze separat integritatea criptografică

Niciuna dintre metode nu susține că fiecare revizuire incrementală ulterioară respectă permisiunea DocMDP sau FieldMDP raportată, deoarece acest lucru necesită analiză a modificărilor semantice revizie cu revizie

Performanță

Validarea de producător scanează doar câmpurile AcroForm create și tabloul mic de referințe de semnătură, în timp ce inspecția încărcată citește doar semnătura selectată, blocarea ei, referințele ei și intrarea de permisiune din Catalog

Nu este decodat niciun conținut de pagină, flux de imagine, program de font sau obiect indirect fără legătură

Vezi și