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
dmpNoChangesNessuna modifica è consentita dopo la certificazione
dmpFormFillAndSignSono consentiti il riempimento dei moduli, la creazione di istanze di modello e la firma
dmpFormFillSignAndAnnotateSono 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
flaAllDeve essere vuotoBlocca ogni campo del modulo
flaIncludeUno o più nomi di campo univociBlocca solo i campi elencati
flaExcludeUno o più nomi di campo univociBlocca 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

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

MethodPolicy riportata
DocMDPPermesso di certificazione e corrispondente Catalog /Perms /DocMDP target
URDiritti di documento, annotazione, form, firma e file incorporato più i /UR o byte-range /UR3 source
FieldMDPAmbito di blocco campo All, Include o Exclude e accordo SigFieldLock copiato
IdentityNumeri 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

Vedi anche