HPDFVerifyHeadlessCMS
HPDFHeadlessCMS verifikuje detached CMS podpisy vůči streamu vlastněnému volajícím (TStream) přes OpenSSL 3 a sdílený ByteRange validátor podpisů
function HPDFVerifyHeadlessCMS(Source: TStream; const ByteRange: array of Int64; const CMSDER: SysUtils.TBytes; const Options: THPDFHeadlessCMSOptions): THPDFHeadlessCMSResult;
Dvouprvkový rozsah musí pokrýt kompletní stream; čtyřprvkový rozsah začíná na nule a vylučuje jeden neprázdný interval, s uspořádanými, ohraničenými páry i aritmetikou bezpečnou vůči přetečení
CMS musí obsahovat detached obsah a alespoň jednoho podepsávajícího; verifikátor autentizuje digest obsahu, podepsané atributy i každého podepsávajícího bez agregace celého zdroje, přijímá závěrečný nulový padding a odmítá nenulová závěrečná CMS data
Vlastnictví zdroje zůstává u volajícího, jeho pozice se obnoví a volající musí během verifikace poskytnout výhradní sériový přístup
SignatureValid popisuje kryptografickou integritu; důvěra certifikátů se vyhodnocuje odděleně, jen když TrustedCAFile dodá explicitní PEM trust ukotvení
RequireCAdES vyžaduje autentizovanou vazbu signing-certificate ESS v1 či v2; její certifikátový hash a volitelné issuer i sériové číslo musí identifikovat skutečného podepsávajícího, nezávisle na důvěře certifikátu
Existující ESS atributy se kontrolují i když je RequireCAdES false; duplicitní atributy, vícenásobné hodnoty, poškozené sekvence i závěrečné ASN.1 bajty se odmítají, zatímco explicitní trust ukotvení umožní samostatný průchod verifikací certifikátového řetězce
Funkce validuje číselné rozsahy, ale neprováže vyloučenou mezeru s PDF tokenem Contents; pro tu dokumentovou kontrolu použijte THPDFHeadlessDocument.VerifySignature
Loader použije HOTPDF_OPENSSL_LIBRARY, když je nastavené, jinak libcrypto.so.3 na Linuxu či libcrypto-3.dll na Windows; runtime knihovna se musí shodovat s architekturou procesu a první úspěšně načtená knihovna zůstává aktivní až do finalizace jednotky
Poškozené CMS, rozpočty, chybějící runtime symboly, chyby čtení zdroje i zrušení vyhazují EHPDFHeadlessCMSError; neplatné podpisy a nedůvěryhodné certifikátové řetězce vrací explicitní false výsledková pole s detaily OpenSSL
Tato funkce nestahuje revokační důkazy, trust ukotvení, timestampy ani vzdálená certifikátová data a nezakládá historický čas podpisu