原生簽章驗證證據

HPDFHeadlessLTV 會在把 document security store 加入已簽署 PDF 之前,驗證憑證鏈與 DER OCSP 或 CRL 證據

AddSignatureValidationEvidence 會驗證原始 PDF ByteRange、CMS 簽章、受信任的簽署者鏈與必要的 RFC3161 簽章時間戳,然後檢查簽署者與 TSA 鏈中每個非錨點憑證的撤銷涵蓋

OCSP 驗證會檢查 responder 簽章、鏈與授權、完整的發行者名稱與發行者金鑰憑證識別、序號、good 狀態、producedAt、thisUpdate、nextUpdate 與設定的時效視窗;已撤銷、未知、無關、重複、過期、未來或未驗證的回應都會被拒絕

CRL 驗證為每個提供的發行者清單使用隔離的 store,並檢查其發行者、簽章、範圍、有效期視窗與憑證撤銷狀態;從其他來源載入的較舊 CRL 無法取代實際提供的證據

catalog 的 DSS 包含全域的 Certs、OCSPs 與 CRLs 陣列,並有 VRI 條目參照所選簽章的已驗證證據;其大寫 SHA-1 金鑰涵蓋完整的 Contents 字串,包括保留的零填充,符合 PDF VRI 索引的要求

SHA-1 只用於規定的 VRI 索引或提供的 OCSP 憑證識別;不用來選擇 PDF 簽署者、TSA、responder 或憑證簽章演算法

寫入器保留原始已簽署位元組與既有 DSS 條目,並附加增量修訂;Standard AES-256 來源對新產生的證據 stream 保留加密,前提是具備修改權限或通過 owner 認證

信任與證據檢查使用目前的驗證時鐘;此 API 不會在憑證過期後建立歷史驗證,也不會加入保護後續 DSS 修訂的文件時間戳

簽章之後加入的 DSS 資料在該簽章的 ByteRange 之外;每次使用內嵌證據都要獨立驗證,需要已驗證的封存修訂時,請使用較晚的簽章或文件時間戳

資源與失敗行為

必須明確提供呼叫端的信任根,時間戳要求預設為 True;請以 Default 初始化 THPDFHeadlessLTVOptions

位元組、物件、解碼 stream、輸出與取消限制會在物件圖發布之前檢查;被拒的證據不會改變文件,SaveToFile 透過既有的原子寫入器發布

驗收

Run-HeadlessLTVTests.sh、Run-HeadlessLTVTests-Windows.cmd 與 Run-HeadlessLTVTests-Delphi.ps1 在 Linux 與 Windows 上實測真實的 OpenSSL OCSP、CRL、CMS 與本機 RFC3161 回應,過程不需要桌面或 PDF 閱讀器

Verify-HeadlessLTV.py 以 cryptography 獨立檢查證據簽章與識別、以 pypdf 檢查 DSS/VRI 參照、以 MuPDF 檢查簽章 Contents 加密例外,並以 OpenSSL 檢查精確的 PDF ByteRange