HPDFVerifyHeadlessCMS

HPDFHeadlessCMS verifiziert detached CMS-Signaturen gegen einen aufruferseitigen TStream unter Nutzung von OpenSSL 3 und dem gemeinsamen Signatur-ByteRange-Validator

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

Ein zweielementiger Bereich muss den vollständigen Stream abdecken; ein vierelementiger Bereich startet bei null und schließt ein nichtleeres Intervall aus, mit geordneten, begrenzten Paaren und overflow-sicherer Arithmetik

CMS muss detached Content und mindestens einen Signer enthalten; der Verifizierer authentifiziert den Content-Digest, die signierten Attribute und jeden Signer ohne Whole-Source-Aggregation, akzeptiert nachfolgendes Null-Padding und weist nonzero nachlaufende CMS-Daten zurück

Die Source-Ownership bleibt beim Aufrufer, seine Position wird wiederhergestellt, und der Aufrufer muss während der Verifikation exklusiven seriellen Zugriff liefern

SignatureValid beschreibt kryptografische Integrität; Zertifikats-Trust wird separat bewertet, nur wenn TrustedCAFile explizite PEM-Trust-Anker liefert

RequireCAdES verlangt eine authentifizierte ESS-v1- oder v2-Signing-Certificate-Bindung; ihr Zertifikatshash und optionale Issuer- und Serialnummer müssen den echten Signer identifizieren, unabhängig vom Zertifikats-Trust

Bestehende ESS-Attribute werden auch geprüft, wenn RequireCAdES false ist; doppelte Attribute, Mehrfachwerte, missgebildete Sequenzen und nachlaufende ASN.1-Bytes werden abgelehnt, während explizite Trust-Anker einen separaten Zertifikatsketten-Verifikationsdurchlauf ermöglichen

Die Funktion validiert die numerischen Bereiche, bindet aber keine ausgeschlossene Lücke an ein PDF-Contents-Token; nutzen Sie THPDFHeadlessDocument.VerifySignature für diese Dokumentebenen-Prüfung

Der Loader nutzt HOTPDF_OPENSSL_LIBRARY, wenn gesetzt, sonst libcrypto.so.3 auf Linux oder libcrypto-3.dll auf Windows; die Runtime-Library muss zur Prozessarchitektur passen, und die erste erfolgreich geladene Library bleibt bis zur Unit-Finalisierung aktiv

Missgebildetes CMS, Budgets, fehlende Runtime-Symbole, Quell-Lesefehler und Abbruch werfen EHPDFHeadlessCMSError; ungültige Signaturen und nicht vertrauenswürdige Zertifikatsketten liefern explizite false-Ergebnisfelder mit OpenSSL-Details

Diese Funktion holt keine Revocation-Evidenz, Trust-Anker, Timestamps oder entfernte Zertifikatsdaten und etabliert keine historische Signaturzeit