Firme di certificazione e blocchi dei campi
HotPDF può creare le strutture di permesso PDF allegate alle firme di certificazione e ai blocchi di campi firmati, per poi ispezionare le stesse strutture in un documento caricato
API producer
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 combina la creazione del segnaposto firmato con la configurazione della certificazione
ConfigureCertificationSignature è destinata a un segnaposto firmato già creato e richiede che quel campo sia il primo campo a portare un dizionario di firma
Un documento può contenere una sola firma di certificazione, quindi una seconda richiesta di configurazione viene rifiutata prima che il grafo degli oggetti venga modificato
Queste API negoziano automaticamente l'output PDF 1.5
Livelli di permesso DocMDP
| Valore | Permesso di certificazione |
|---|---|
dmpNoChanges | Nessuna modifica è consentita dopo la certificazione |
dmpFormFillAndSign | Sono consentiti il riempimento dei moduli, la creazione di istanze di modello e la firma |
dmpFormFillSignAndAnnotate | Sono consentite le modifiche precedenti più la creazione, l'eliminazione e la modifica delle annotazioni |
dmpNone è riservato ai risultati di ispezione senza una trasformazione DocMDP e viene rifiutato dai metodi producer
Ambiti del blocco dei campi
| Valore | Argomento Fields | Effetto dopo la firma |
|---|---|---|
flaAll | Deve essere vuoto | Blocca ogni campo del modulo |
flaInclude | Uno o più nomi di campo univoci | Blocca solo i campi elencati |
flaExclude | Uno o più nomi di campo univoci | Blocca ogni campo tranne quelli elencati |
AttachSignatureFieldLock rifiuta nomi vuoti, nomi duplicati, valori di azione non validi, una forma Fields incompatibile, un campo di destinazione non firmato o un campo che porta già un blocco o una politica FieldMDP
Struttura emessa
- La firma di certificazione porta un array diretto
/Referencecontenente un dizionario diretto di riferimento firma DocMDP e parametri di trasformazione diretti - La voce Catalog
/Perms /DocMDPpunta allo stesso dizionario di firma indiretto - La voce del campo
/Lockpunta a un dizionario indiretto/Type /SigFieldLockdizionario - L'ambito del blocco viene copiato in un riferimento firma FieldMDP diretto e la sua voce
/Datapunta alla radice Catalog indiretta - Il dizionario di firma contrassegna i riferimenti di trasformazione come critici tramite
/V 1
Esempio in 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;
Ispezione caricata
function GetLoadedSignaturePermissions(
SigIndex: Integer;
out Info: THPDFSignaturePermissionInfo): Boolean;
Il lettore riporta il permesso DocMDP, il collegamento Catalog, l'ambito SigFieldLock, l'ambito FieldMDP, i nomi dei campi, la validità strutturale e una stringa di problema diagnostico
Verifica le forme dirette e indirette richieste, il Catalog /Perms target, versioni delle trasformazioni, riferimenti duplicati, restrizioni UR rispetto a UR3 e l'opzionale DocMDP /P 2 default
Se sono presenti sia SigFieldLock sia FieldMDP, le loro azioni e gli elenchi di campi devono coincidere
L'attraversamento degli ambiti Identity è sicuro dai cicli e limitato a 64 livelli e 100000 oggetti indiretti, mentre l'ispezione non esegue mai JavaScript, azioni o contenuto delle firme
Copertura delle trasformazioni standard
| Method | Policy riportata |
|---|---|
DocMDP | Permesso di certificazione e corrispondente Catalog /Perms /DocMDP target |
UR | Diritti di documento, annotazione, form, firma e file incorporato più i /UR o byte-range /UR3 source |
FieldMDP | Ambito di blocco campo All, Include o Exclude e accordo SigFieldLock copiato |
Identity | Numeri di oggetto transitivi sicuri dai cicli raggiungibili dal richiesto indiretto /Data root |
I nomi di metodo sconosciuti vengono conservati in UnknownTransformMethods e rendono invalida la struttura dei permessi così una trasformazione crittica non può essere trascurata
Limite di convalida
GetLoadedSignaturePermissions riporta solo la struttura della politica
VerifyLoadedSignature continua a riportare separatamente l'integrità crittografica
AnalyzeLoadedSignatureRevisions esegue analisi semantica delle modifiche revisione per revisione per le policy DocMDP, FieldMDP, UR3 e Identity a intervallo di byte, mentre le firme legacy UR a digest di oggetto senza intervallo di byte restano disponibili per l'ispezione strutturale
SaveIncrementalUpdateAuthenticated trasforma l'ispezione in applicazione: legge le policy dai loro snapshot firmati, autentica le firme di controllo, valida tutte le revisioni successive e pubblica tramite sostituzione atomica solo dopo che ogni policy è riuscita
Performance
La validazione lato producer scansiona solo i campi AcroForm scritti dall'autore e il piccolo array di riferimenti alla firma, mentre l'ispezione del caricato legge solo la firma selezionata, il suo lock, i suoi riferimenti e la voce di permesso del Catalog
Nessun contenuto di pagina, stream immagine, programma font o oggetto indiretto non correlato viene decodificato