HPDFVerifyHeadlessCMS
HPDFHeadlessCMS verifica assinaturas CMS detached contra um TStream de posse do chamador usando OpenSSL 3 e o validador compartilhado de ByteRange de assinaturas
function HPDFVerifyHeadlessCMS(Source: TStream; const ByteRange: array of Int64; const CMSDER: SysUtils.TBytes; const Options: THPDFHeadlessCMSOptions): THPDFHeadlessCMSResult;
Uma faixa de dois elementos precisa cobrir o stream completo; uma faixa 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
O CMS precisa conter conteúdo detached e pelo menos um signer; o verifier autentica o digest do conteúdo, os signed attributes e cada signer sem agregação da origem inteira, aceita padding final de zeros e rejeita dados CMS finais não nulos
A posse da origem permanece com o chamador, sua posição é restaurada, e o chamador precisa 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 trust anchors PEM explícitos
RequireCAdES exige um binding autenticado ESS v1 ou v2 de signing-certificate; o hash do certificado e o issuer e número de série opcionais precisam identificar o signer real, independentemente da confiança no certificado
Atributos ESS existentes são checados mesmo quando RequireCAdES é false; atributos duplicados, múltiplos valores, sequências malformadas e bytes ASN.1 finais são rejeitados, enquanto trust anchors explícitos habilitam uma passada separada de verificação da cadeia de certificados
A função valida as faixas numéricas, mas não vincula um gap excluído a um token de Contents do PDF; use THPDFHeadlessDocument.VerifySignature para essa checagem de nível de documento
O loader usa HOTPDF_OPENSSL_LIBRARY quando definida, caso contrário libcrypto.so.3 no Linux ou libcrypto-3.dll no Windows; a biblioteca de runtime precisa corresponder à arquitetura do processo, e a primeira biblioteca carregada com sucesso permanece ativa até a finalização da unit
CMS malformado, orçamentos, símbolos de runtime ausentes, falhas de leitura da origem e cancelamento disparam EHPDFHeadlessCMSError; assinaturas inválidas e cadeias de certificados não confiáveis retornam campos de resultado explicitamente false com detalhes do OpenSSL
Esta função não busca evidências de revogação, trust anchors, timestamps nem dados remotos de certificados, e não estabelece um horário histórico de assinatura