function ValidatePadesTrust(const Options: TPadesTrustValidationOptions): TPadesValidationResult;
function ValidatePadesTrustAsync(const Options: TPadesTrustValidationOptions; const Reply: TPadesTrustValidationReply): Boolean;
兩個方法都會擷取使用中元件所保留的原始檔案、記憶體緩衝區、自訂串流或已完成的漸進式來源,絕不驗證 PDFium 重新儲存的複本
每個一般簽章都會對照其原始 ByteRange、CMS 簽章屬性與簽章值、signing-certificate-v2 繫結、所設定後端目前的憑證鏈,以及選用的撤銷證據進行檢查
簽章時間戳記與文件時間戳記另外會驗證其 SHA-256 訊息印記、隨附的 CMS 簽章、TSA 鏈與選用的撤銷狀態
依 RFC 3161 第 2.3 節,時間戳記簽署者憑證的 Extended Key Usage 擴充必須標為 Critical,且僅包含 id-kp-timeStamping。即使權杖的 CMS 簽章與基本憑證鏈有效,缺少、非 Critical、混合或其他 EKU 都會產生無效的 TimeStampTrustStatus;外層文件簽章保留各自獨立的結果
非同步多載會在派發前擷取來源,並透過 TPadesTrustValidationReply 回報完成狀態
| NetworkPolicy | ptnpOffline 只使用快取的憑證資料,而 ptnpOnline 允許 Windows 鏈擷取 |
| CheckRevocation | 要求所設定後端的鏈撤銷評估;Windows 不含根憑證,而 OpenSSL 以設定的 CRL 對整條鏈檢查 |
| CheckTimeStamps | 在存在時驗證簽章時間戳記與文件時間戳記權杖 |
| UrlRetrievalTimeoutMs | 限制鏈與撤銷處理所用的原生 URL 擷取時間 |
| QualifiedTrustEvaluator | 可選擇針對已驗證的離線信任清單快照,評估簽署者與收集到的憑證鏈 |
| QualifiedValidationTime | 選擇 UTC 服務歷程評估時間,零值表示使用目前時間 |
| CancellationToken | 在下一個驗證階段邊界停止 |
| OnProgress | 接收階段、簽章索引、簽章數與整體百分比 |
TPadesValidationResult.Signatures 回報各自獨立的 ByteRangeStatus、CmsSignatureStatus、AlgorithmPolicyStatus、SigningCertificateStatus、CertificateTrustStatus、QualifiedTrustStatus、RevocationStatus、TimeStampStatus、TimeStampSignatureStatus、TimeStampTrustStatus 與 TimeStampRevocationStatus 值,而 QualifiedTrust 則指出符合的領域、提供者、服務、型別、狀態與開始時間
AlgorithmInfo 記錄 CMS 摘要與簽章 OID,加上簽署憑證的公鑰與具名曲線 OID,並在完整性被接受之前套用 ISO/TS 32002 的 NIST、Brainpool、Ed25519、Ed448 與曲線對摘要規則
不支援的演算法、無法使用的平台信任服務、不完整的撤銷證據與被取消的驗證,都不會被晉升為有效狀態
每個簽章條目都包含來自其 CMS 驗證的 RevocationReason 與 NativeRevocationError,以及來自時間戳權杖驗證、彼此獨立的 TimeStampRevocationReason 與 NativeTimeStampRevocationError。原因欄位使用 TPdfCmsRevocationReason;原生錯誤欄位是所選後端錯誤空間中的 Cardinal 值,例如 OpenSSL 的 X509_V_ERR_* 代碼,或原始的 Windows 提供者/GetLastError DWORD。Windows 的值原樣保留,不會轉換成共通的 HRESULT 空間
時間戳這一組描述內嵌的簽章時間戳或 Document Time-stamp,不會覆寫一般簽章的那一組。只有在權杖結構與訊息印記檢查允許 CMS 驗證執行後,時間戳診斷才會被填入
CheckRevocation = False 時,診斷原因保持 pcrrNone、錯誤保持零。檢查未執行到或後端未提供細部原因時,也是同樣的預設值,因此請一律讀取對應的狀態,不要把空的診斷當成成功
Active 為 True 且具備完整的原始來源快照ValidatePadesTrustAsync 呼叫時,OnProgress 在工作執行緒上執行,不得直接操作 UI 控制項TPdfFuture 主執行緒同步模式
var
Options: TPadesTrustValidationOptions;
Validation: TPadesValidationResult;
begin
Options := TPadesTrustValidationOptions.Default;
Options.NetworkPolicy := ptnpOnline;
Options.CheckRevocation := True;
Validation := Pdf1.ValidatePadesTrust(Options);
end;