PDFium Delphi Component Docs

Métodos ValidatePadesTrust

Componente: TPdf  ·  Unidad: PDFium
Valida la integridad de las firmas PAdES, la confianza actual del sistema, la evidencia de revocación opcional y los tokens de marca de tiempo RFC 3161

Sintaxis

function ValidatePadesTrust(const Options: TPadesTrustValidationOptions): TPadesValidationResult;

function ValidatePadesTrustAsync(const Options: TPadesTrustValidationOptions; const Reply: TPadesTrustValidationReply): Boolean;

Descripción

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

Opciones

NetworkPolicyptnpOffline usa solo datos de certificados en caché, mientras que ptnpOnline permite la recuperación de cadenas de Windows
CheckRevocationSolicita 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
CheckTimeStampsValida los tokens de marca de tiempo de firma y de marca de tiempo de documento cuando están presentes
UrlRetrievalTimeoutMsAcota la recuperación nativa de URL usada por el procesamiento de cadena y revocación
QualifiedTrustEvaluatorEvalúa opcionalmente el firmante y la cadena recopilada contra una instantánea autenticada sin conexión de listas de confianza
QualifiedValidationTimeSelecciona la hora UTC de evaluación del historial de servicios; con cero se usa la hora actual
CancellationTokenSe detiene en el siguiente límite de etapa de validación
OnProgressRecibe la etapa, el índice de firma, el recuento de firmas y el porcentaje global

Resultado

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

Observaciones

Ejemplo

var
  Options: TPadesTrustValidationOptions;
  Validation: TPadesValidationResult;
begin
  Options := TPadesTrustValidationOptions.Default;
  Options.NetworkPolicy := ptnpOnline;
  Options.CheckRevocation := True;
  Validation := Pdf1.ValidatePadesTrust(Options);
end;

Véase también

ValidatePades FPdfTrustedList AnalyzeSignatureRevisions RenewPadesArchiveTimestamp