function ValidatePadesTrust(const Options: TPadesTrustValidationOptions): TPadesValidationResult;
function ValidatePadesTrustAsync(const Options: TPadesTrustValidationOptions; const Reply: TPadesTrustValidationReply): Boolean;
Entrambi i metodi catturano l'esatto file originale, buffer di memoria, stream personalizzato o sorgente progressiva completata conservati dal componente attivo e non validano mai una copia risalvata da PDFium
Ogni firma ordinaria viene verificata rispetto al suo ByteRange originale, agli attributi firmati CMS e al valore della firma, al binding signing-certificate-v2, alla catena di certificati corrente del backend configurato e alle evidenze di revoca facoltative
I timestamp delle firme e i Document Time-stamp validano inoltre il message imprint SHA-256, la firma CMS allegata, la catena TSA e lo stato di revoca facoltativo
Il certificato del firmatario del timestamp deve avere un'estensione Extended Key Usage critical contenente solo id-kp-timeStamping, come richiesto da RFC 3161 section 2.3. EKU mancante, noncritical, misto o diverso rende TimeStampTrustStatus non valido anche con firma CMS del token e catena di base validi; la firma esterna del documento mantiene risultati indipendenti
L'overload asincrono cattura la sorgente prima dell'invio e riporta il completamento tramite TPadesTrustValidationReply
| NetworkPolicy | ptnpOffline usa solo i dati dei certificati in cache mentre ptnpOnline consente il recupero della catena tramite Windows |
| CheckRevocation | Richiede la valutazione della revoca della catena del backend configurato; Windows esclude il certificato radice, mentre OpenSSL verifica le CRL configurate contro la catena |
| CheckTimeStamps | Valida i token timestamp delle firme e i Document Time-stamp quando presenti |
| UrlRetrievalTimeoutMs | Limita il recupero URL nativo usato dall'elaborazione della catena e della revoca |
| QualifiedTrustEvaluator | Valuta facoltativamente il firmatario e la catena raccolta rispetto a uno snapshot autenticato offline della trusted list |
| QualifiedValidationTime | Seleziona il tempo di valutazione UTC della cronologia del servizio, con zero che usa il tempo corrente |
| CancellationToken | Si ferma al confine della successiva fase di validazione |
| OnProgress | Riceve la fase, l'indice della firma, il numero di firme e la percentuale complessiva |
TPadesValidationResult.Signatures riporta valori indipendenti ByteRangeStatus, CmsSignatureStatus, AlgorithmPolicyStatus, SigningCertificateStatus, CertificateTrustStatus, QualifiedTrustStatus, RevocationStatus, TimeStampStatus, TimeStampSignatureStatus, TimeStampTrustStatus e TimeStampRevocationStatus, mentre QualifiedTrust identifica il territorio, il provider, il servizio, il tipo, lo stato e l'ora di inizio corrispondenti
AlgorithmInfo registra gli OID di digest e firma CMS più gli OID di chiave pubblica e curva denominata del certificato di firma, e applica le regole ISO/TS 32002 su NIST, Brainpool, Ed25519, Ed448 e sulla corrispondenza curva-digest prima che l'integrità venga accettata
Gli algoritmi non supportati, i servizi di trust della piattaforma non disponibili, le evidenze di revoca incomplete e la validazione annullata non vengono promossi a stati validi
Ogni voce di firma include RevocationReason e NativeRevocationError dalla sua verifica CMS, più TimeStampRevocationReason e NativeTimeStampRevocationError indipendenti dalla verifica del token di timestamp. I campi dei motivi usano TPdfCmsRevocationReason; i campi di errore nativo sono valori Cardinal nello spazio di errori del backend selezionato, come i codici X509_V_ERR_* di OpenSSL o un DWORD grezzo del provider Windows o di GetLastError. I valori Windows vengono preservati senza conversione in uno spazio HRESULT comune
La coppia del timestamp descrive un timestamp di firma incorporato o un Document Time-stamp, senza sovrascrivere la coppia della firma ordinaria. La diagnostica del timestamp viene popolata solo dopo che i controlli di struttura del token e di message imprint consentono l'esecuzione della verifica CMS
Con CheckRevocation = False, i motivi diagnostici restano pcrrNone e gli errori restano zero. Gli stessi default valgono quando un controllo non viene raggiunto o il suo backend non fornisce un motivo dettagliato, quindi leggere sempre lo stato corrispondente invece di trattare una diagnostica vuota come un successo
Active sia True e uno snapshot completo della sorgente originaleOnProgress viene eseguito sul thread di lavoro quando invocato da ValidatePadesTrustAsync e non deve manipolare direttamente i controlli UITPdfFuture
var
Options: TPadesTrustValidationOptions;
Validation: TPadesValidationResult;
begin
Options := TPadesTrustValidationOptions.Default;
Options.NetworkPolicy := ptnpOnline;
Options.CheckRevocation := True;
Validation := Pdf1.ValidatePadesTrust(Options);
end;