HPDFVerifyHeadlessCMS

HPDFHeadlessCMS は、OpenSSL 3 と共有署名 ByteRange バリデーターを使って、呼び出し側所有の TStream に対して分離 CMS 署名を検証します

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

2 要素の範囲はストリーム全体をカバーしなければなりません。4 要素の範囲は 0 から始まり、空でない 1 区間を除外します。順序付けられた有界なペアとオーバーフロー安全な算術を使います

CMS は分離内容と少なくとも 1 人の署名者を含まなければなりません。検証器は、ソース全体を集約せずに内容ダイジェスト、署名属性、すべての署名者を認証し、後続のゼロパディングは受け入れ、ゼロでない後続 CMS データは拒否します

ソースの所有権は呼び出し側に残り、位置は復元されます。検証の間、呼び出し側は排他的な逐次アクセスを提供しなければなりません

SignatureValid は暗号学的完全性を表します。証明書トラストは、TrustedCAFile が明示的な PEM トラストアンカーを供給するときにだけ、別途評価されます

RequireCAdES は、認証済み ESS v1 または v2 の signing-certificate バインディングを要求します。その証明書ハッシュと省略可能な発行者・シリアル番号は、証明書トラストとは独立に、実際の署名者を特定しなければなりません

既存の ESS 属性は、RequireCAdES が false でも確認されます。重複属性、複数値、不正なシーケンス、後続 ASN.1 バイトは拒否され、明示的なトラストアンカーがあれば別の証明書チェーン検証パスが有効になります

この関数は数値範囲を検証しますが、除外区間を PDF Contents トークンに結び付けません。ドキュメントレベルのそのチェックには THPDFHeadlessDocument.VerifySignature を使ってください

ローダーは、設定されていれば HOTPDF_OPENSSL_LIBRARY を、なければ Linux では libcrypto.so.3、Windows では libcrypto-3.dll を使います。ランタイムライブラリーはプロセスアーキテクチャと一致しなければならず、最初に読み込みに成功したライブラリーがユニット終了まで有効のままです

不正な CMS、予算、欠落ランタイムシンボル、ソース読み取り失敗、キャンセルは EHPDFHeadlessCMSError を発生させます。無効な署名と信頼できない証明書チェーンは、OpenSSL の詳細付きで明示的な false の結果フィールドを返します

この関数は失効エビデンス、トラストアンカー、タイムスタンプ、リモート証明書データを取得せず、過去の署名時刻を確定しません