HPDFVerifyHeadlessCMS

HPDFHeadlessCMS verifica assinaturas CMS detached contra um TStream próprio de quem chama usando OpenSSL 3 e o validador partilhado de ByteRanges de assinaturas

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

Um intervalo de dois elementos tem de cobrir a stream completa; um intervalo de quatro elementos começa em zero e exclui um intervalo não vazio, com pares ordenados e delimitados e aritmética segura contra overflow

CMS tem de conter conteúdo detached e pelo menos um signer; o verificador autentica o digest do conteúdo, os atributos assinados e todos os signers sem agregação de toda a fonte, aceita padding final de zeros e rejeita dados CMS finais diferentes de zero

A propriedade da fonte permanece com quem chama, a posição dela é restaurada, e quem chama tem de fornecer acesso serial exclusivo durante a verificação

SignatureValid descreve a integridade criptográfica; a confiança em certificados é avaliada separadamente apenas quando TrustedCAFile fornece âncoras de confiança PEM explícitas

RequireCAdES exige um binding autenticado de ESS v1 ou v2 signing-certificate; o hash de certificado dele e o emissor e número de série opcionais têm de identificar o signer real, independentemente da confiança em certificados

Atributos ESS existentes são verificados mesmo quando RequireCAdES é false; atributos duplicados, valores múltiplos, sequências malformadas e bytes ASN.1 finais são rejeitados, enquanto âncoras de confiança explícitas ativam uma passagem separada de verificação de cadeias de certificados

A função valida os intervalos numéricos mas não vincula um intervalo excluído a um token de Contents PDF; use THPDFHeadlessDocument.VerifySignature para essa verificação ao nível do documento

O loader usa HOTPDF_OPENSSL_LIBRARY quando definida, caso contrário libcrypto.so.3 em Linux ou libcrypto-3.dll em Windows; a biblioteca de runtime tem de corresponder à arquitetura do processo, e a primeira biblioteca carregada com sucesso permanece ativa até a finalização da unidade

CMS malformado, orçamentos, símbolos de runtime em falta, falhas de leitura da fonte e cancelamento levantam EHPDFHeadlessCMSError; assinaturas inválidas e cadeias de certificados não fidedignas devolvem campos de resultado explícitos false com detalhes OpenSSL

Esta função não vai buscar evidência de revogação, âncoras de confiança, timestamps nem dados remotos de certificados, e não estabelece um tempo histórico de assinatura