function ValidatePadesTrust(const Options: TPadesTrustValidationOptions): TPadesValidationResult;
function ValidatePadesTrustAsync(const Options: TPadesTrustValidationOptions; const Reply: TPadesTrustValidationReply): Boolean;
Ambos métodos capturan el archivo original exacto, el búfer de memoria, el flujo personalizado o la fuente progresiva completada que retiene el componente activo, y nunca validan una copia guardada de nuevo por PDFium
Cada firma ordinaria se comprueba contra su ByteRange original, los atributos firmados CMS y el valor de la firma, 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 adicionalmente su huella 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 sello de tiempo 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, aunque la firma CMS del token y la cadena básica de certificados sean válidas; la firma externa del documento conserva sus resultados independientes
La sobrecarga asincrónica captura la fuente antes del despacho y reporta la finalización mediante TPadesTrustValidationReply
| NetworkPolicy | ptnpOffline usa solo datos de certificados en caché, mientras que ptnpOnline permite la recuperación de cadenas de Windows |
| CheckRevocation | Solicita la evaluación de revocación de la cadena del backend configurado; 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 que usan el procesamiento de cadena y de revocación |
| QualifiedTrustEvaluator | Opcionalmente evalúa el firmante y la cadena recolectada contra una instantánea autenticada sin conexión de lista de confianza |
| QualifiedValidationTime | Selecciona la hora de evaluación UTC del historial de servicio; 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 conteo de firmas y el porcentaje general |
TPadesValidationResult.Signatures reporta valores independientes de ByteRangeStatus, CmsSignatureStatus, AlgorithmPolicyStatus, SigningCertificateStatus, CertificateTrustStatus, QualifiedTrustStatus, RevocationStatus, TimeStampStatus, TimeStampSignatureStatus, TimeStampTrustStatus y TimeStampRevocationStatus, mientras que QualifiedTrust identifica el territorio, el proveedor, el servicio, el tipo, el estado y la hora de inicio coincidentes
AlgorithmInfo registra los OID de resumen y de firma CMS, además de los OID de clave pública y de curva con nombre del certificado de firmante, y aplica las reglas de ISO/TS 32002 para NIST, Brainpool, Ed25519, Ed448 y de curva a resumen antes de aceptar la integridad
Los algoritmos no soportados, los servicios de confianza de la 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 razón 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 del proveedor de Windows o de GetLastError. Los valores de Windows se preservan sin conversión a un espacio HRESULT común
El par de 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 de timestamp se llenan solo después de que las comprobaciones de estructura del token y de huella de mensaje permiten ejecutar la verificación CMS
Con CheckRevocation = False, las razones de diagnóstico permanecen en pcrrNone y los errores en cero. Los mismos valores por omisión aplican cuando una comprobación no se alcanza o su backend no suministra una razón detallada, así que lea siempre el estado correspondiente en lugar de tratar un diagnóstico vacío como éxito
Active sea True y una instantánea completa de la fuente originalOnProgress se ejecuta en el hilo de trabajo cuando lo llama ValidatePadesTrustAsync y no debe manipular controles de la interfaz de usuario directamenteTPdfFuture
var
Options: TPadesTrustValidationOptions;
Validation: TPadesValidationResult;
begin
Options := TPadesTrustValidationOptions.Default;
Options.NetworkPolicy := ptnpOnline;
Options.CheckRevocation := True;
Validation := Pdf1.ValidatePadesTrust(Options);
end;