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 |
|---|---|
dmpNoChanges | După certificare nu sunt permise modificări |
dmpFormFillAndSign | Sunt permise completarea formularelor, instanțierea șabloanelor și semnarea |
dmpFormFillSignAndAnnotate | Sunt 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 |
|---|---|---|
flaAll | Trebuie să fie gol | Blochează fiecare câmp de formular |
flaInclude | Unul sau mai multe nume unice de câmp | Blochează doar câmpurile listate |
flaExclude | Unul sau mai multe nume unice de câmp | Blochează 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ă
- Semnătura de certificare poartă un tablou direct
/Referencecare conține un dicționar direct de referință a semnăturii DocMDP și parametri direcți de transformare - Intrarea Catalog
/Perms /DocMDPindică același dicționar indirect de semnătură - Intrarea
/Locka câmpului indică un dicționar indirect/Type /SigFieldLock - Domeniul de blocare este copiat într-o referință directă de semnătură FieldMDP, iar intrarea sa
/Dataindică rădăcina indirectă Catalog - Dicționarul de semnătură marchează referințele de transformare ca fiind critice prin
/V 1
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ă