HPDFVerifyHeadlessCMS

HPDFHeadlessCMS verifica firmas CMS detached contra un TStream propiedad del llamador usando OpenSSL 3 y el validador compartido de ByteRange de firmas

function HPDFVerifyHeadlessCMS(Source: TStream;
  const ByteRange: array of Int64; const CMSDER: SysUtils.TBytes;
  const Options: THPDFHeadlessCMSOptions): THPDFHeadlessCMSResult;

Un rango de dos elementos debe cubrir el stream completo; un rango de cuatro elementos empieza en cero y excluye un intervalo no vacío, con pares ordenados y acotados y aritmética segura contra overflow

El CMS debe contener contenido detached y al menos un firmante; el verificador autentica el digest del contenido, los atributos firmados y cada firmante sin agregar todo el source, acepta padding de ceros final y rechaza datos CMS finales distintos de cero

La propiedad del source permanece en el llamador, su posición se restaura, y el llamador debe proporcionar acceso serial exclusivo durante la verificación

SignatureValid describe la integridad criptográfica; el trust de certificados se evalúa por separado solo cuando TrustedCAFile suministra anclas de trust PEM explícitas

RequireCAdES exige un binding de signing-certificate ESS v1 o v2 autenticado; su hash de certificado y el issuer y número de serie opcionales deben identificar al firmante real, independientemente del trust de certificados

Los atributos ESS existentes se verifican incluso cuando RequireCAdES es false; los atributos duplicados, los valores múltiples, las secuencias malformadas y los bytes ASN.1 finales se rechazan, mientras que las anclas de trust explícitas habilitan una pasada separada de verificación de cadenas de certificados

La función valida los rangos numéricos pero no vincula un hueco excluido a un token Contents del PDF; usa THPDFHeadlessDocument.VerifySignature para esa verificación a nivel de documento

El loader usa HOTPDF_OPENSSL_LIBRARY cuando está asignada; de lo contrario, libcrypto.so.3 en Linux o libcrypto-3.dll en Windows; la librería de runtime debe coincidir con la arquitectura del proceso, y la primera librería cargada con éxito permanece activa hasta la finalización de la unit

El CMS malformado, los presupuestos, los símbolos de runtime faltantes, los fallos de lectura del source y la cancelación lanzan EHPDFHeadlessCMSError; las firmas inválidas y las cadenas de certificados no confiables devuelven campos de resultado false explícitos con detalles de OpenSSL

Esta función no obtiene evidencia de revocación, anclas de trust, timestamps ni datos de certificados remotos, y no establece un tiempo de firma histórico