HPDFVerifyHeadlessCMS
HPDFHeadlessCMS verifica firme CMS detached contro un TStream di proprietà del chiamante usando OpenSSL 3 e il validatore condiviso dei ByteRange di firma
function HPDFVerifyHeadlessCMS(Source: TStream; const ByteRange: array of Int64; const CMSDER: SysUtils.TBytes; const Options: THPDFHeadlessCMSOptions): THPDFHeadlessCMSResult;
Un range a due elementi deve coprire lo stream completo; un range a quattro elementi parte da zero ed esclude un intervallo non vuoto, con coppie ordinate e limitate e aritmetica sicura da overflow
Il CMS deve contenere contenuto detached e almeno un firmatario; il verifier autentica il digest del contenuto, gli attributi firmati e ogni firmatario senza aggregare l'intera sorgente, accetta padding a zero in coda e rifiuta dati CMS finali non nulli
La proprietà della sorgente resta al chiamante, la sua posizione è ripristinata e il chiamante deve fornire accesso serial esclusivo durante la verifica
SignatureValid descrive l'integrità crittografica; il trust dei certificati è valutato separatamente solo quando TrustedCAFile fornisce trust anchor PEM espliciti
RequireCAdES richiede un binding signing-certificate ESS v1 o v2 autenticato; il suo hash del certificato e i facoltativi issuer e numero di serie devono identificare il vero firmatario, indipendentemente dal trust del certificato
Gli attributi ESS esistenti sono controllati anche quando RequireCAdES è false; attributi duplicati, valori multipli, sequenze malformate e byte ASN.1 finali vengono rifiutati, mentre trust anchor espliciti abilitano una passata separata di verifica della catena di certificati
La funzione valida i range numerici ma non lega un gap escluso a un token Contents PDF; usa THPDFHeadlessDocument.VerifySignature per quel controllo a livello documento
Il loader usa HOTPDF_OPENSSL_LIBRARY quando impostata, altrimenti libcrypto.so.3 su Linux o libcrypto-3.dll su Windows; la runtime library deve corrispondere all'architettura del processo e la prima libreria caricata con successo resta attiva fino alla finalizzazione dell'unità
CMS malformati, budget, simboli runtime mancanti, fallimenti di lettura della sorgente e cancellazione sollevano EHPDFHeadlessCMSError; firme non valide e catene di certificati non trusted restituiscono campi risultato false espliciti con dettagli OpenSSL
Questa funzione non recupera evidenze di revoca, trust anchor, timestamp né dati certificato remoti e non stabilisce un tempo di firma storico