function ValidatePadesTrust(const Options: TPadesTrustValidationOptions): TPadesValidationResult;
function ValidatePadesTrustAsync(const Options: TPadesTrustValidationOptions; const Reply: TPadesTrustValidationReply): Boolean;
Ambos métodos capturan el archivo original exacto, búfer de memoria, flujo personalizado u origen progresivo completado retenido por el componente activo, y nunca validan una copia reguardada por PDFium
Cada firma ordinaria se comprueba contra su ByteRange original, los atributos firmados y el valor de firma CMS, el enlace signing-certificate-v2, la cadena de certificados actual del backend configurado y la evidencia de revocación opcional
Las marcas de tiempo de firma y las marcas de tiempo de documento validan además su impronta de mensaje SHA-256, la firma CMS adjunta, la cadena de la TSA y el estado de revocación opcional
El certificado del firmante del timestamp debe tener una extensión Extended Key Usage crítica que contenga únicamente id-kp-timeStamping, como exige RFC 3161, sección 2.3. Una EKU ausente, no crítica, mixta o distinta produce un TimeStampTrustStatus inválido incluso si la firma CMS del token y su cadena básica son válidas; la firma exterior del documento conserva sus resultados independientes
La sobrecarga asíncrona captura el origen antes del despacho e informa de la finalización a través de TPadesTrustValidationReply
| NetworkPolicy | ptnpOffline usa solo datos de certificados en caché, mientras que ptnpOnline permite la recuperación de cadenas de Windows |
| CheckRevocation | Solicita al backend configurado la evaluación de revocación de la cadena; Windows excluye el certificado raíz, mientras que OpenSSL comprueba las CRL configuradas contra la cadena |
| CheckTimeStamps | Valida los tokens de marca de tiempo de firma y de marca de tiempo de documento cuando están presentes |
| UrlRetrievalTimeoutMs | Acota la recuperación nativa de URL usada por el procesamiento de cadena y revocación |
| QualifiedTrustEvaluator | Evalúa opcionalmente el firmante y la cadena recopilada contra una instantánea autenticada sin conexión de listas de confianza |
| QualifiedValidationTime | Selecciona la hora UTC de evaluación del historial de servicios; con cero se usa la hora actual |
| CancellationToken | Se detiene en el siguiente límite de etapa de validación |
| OnProgress | Recibe la etapa, el índice de firma, el recuento de firmas y el porcentaje global |
TPadesValidationResult.Signatures informa de valores independientes de ByteRangeStatus, CmsSignatureStatus, AlgorithmPolicyStatus, SigningCertificateStatus, CertificateTrustStatus, QualifiedTrustStatus, RevocationStatus, TimeStampStatus, TimeStampSignatureStatus, TimeStampTrustStatus y TimeStampRevocationStatus, mientras que QualifiedTrust identifica el territorio, proveedor, servicio, tipo, estado y hora de inicio coincidentes
AlgorithmInfo registra los OID de resumen y firma CMS más los OID de clave pública y curva con nombre del certificado de firma, y aplica las reglas ISO/TS 32002 de NIST, Brainpool, Ed25519, Ed448 y de curva a resumen antes de aceptar la integridad
Los algoritmos no admitidos, los servicios de confianza de plataforma no disponibles, la evidencia de revocación incompleta y la validación cancelada no se promueven a estados válidos
Cada entrada de firma incluye RevocationReason y NativeRevocationError de su verificación CMS, más TimeStampRevocationReason y NativeTimeStampRevocationError independientes de la verificación del token de timestamp. Los campos de reason usan TPdfCmsRevocationReason; los campos de error nativo son valores Cardinal en el espacio de errores del backend seleccionado, como los códigos X509_V_ERR_* de OpenSSL o un DWORD sin procesar de un proveedor de Windows o de GetLastError. Los valores de Windows se conservan sin conversión a un espacio HRESULT común
El par del timestamp describe un timestamp de firma incrustado o una marca de tiempo de documento, sin sobrescribir el par de la firma ordinaria. Los diagnósticos del timestamp se rellenan solo cuando la estructura del token y la comprobación de la impronta de mensaje permiten ejecutar la verificación CMS
Con CheckRevocation = False, los reasons de diagnóstico quedan en pcrrNone y los errores en cero. Los mismos valores por defecto se aplican cuando no se llega a una comprobación o su backend no aporta un reason detallado, así que lea siempre el estado correspondiente en lugar de dar por bueno un diagnóstico vacío
Active sea True y que exista una instantánea completa del origen originalOnProgress se ejecuta en el subproceso de trabajo cuando lo invoca ValidatePadesTrustAsync y no debe manipular directamente controles de interfaz de usuarioTPdfFuture
var
Options: TPadesTrustValidationOptions;
Validation: TPadesValidationResult;
begin
Options := TPadesTrustValidationOptions.Default;
Options.NetworkPolicy := ptnpOnline;
Options.CheckRevocation := True;
Validation := Pdf1.ValidatePadesTrust(Options);
end;