PDFium Delphi Component Docs

ValidatePadesTrust メソッド

コンポーネント: TPdf  ·  ユニット: PDFium
PAdES 署名の完全性、現在のシステムトラスト、任意の失効エビデンス、RFC 3161 タイムスタンプトークンを検証します

構文

function ValidatePadesTrust(const Options: TPadesTrustValidationOptions): TPadesValidationResult;

function ValidatePadesTrustAsync(const Options: TPadesTrustValidationOptions; const Reply: TPadesTrustValidationReply): Boolean;

説明

両方のメソッドは、アクティブなコンポーネントが保持する正確な元のファイル、メモリバッファ、カスタムストリーム、または完成済みプログレッシブソースを取り込み、PDFium が再保存したコピーを決して検証しません

すべての通常の署名は、元の ByteRange、CMS 署名属性と署名値、signing-certificate-v2 バインディング、構成されたバックエンドの現在の証明書チェーン、任意の失効エビデンスに対して検査されます

署名タイムスタンプと Document Time-stamp は、さらに SHA-256 メッセージインプリント、添付された CMS 署名、TSA チェーン、任意の失効状態を検証します

RFC 3161 section 2.3 が要求するように、タイムスタンプ署名者の証明書には id-kp-timeStamping だけを含む critical な Extended Key Usage 拡張が必要です。EKU がない、critical でない、他用途も含む、用途が異なる場合は、token の CMS 署名と基本的な証明書チェーンが有効でも TimeStampTrustStatus は invalid になります。外側の文書署名は独立した結果を維持します

非同期オーバーロードはディスパッチの前にソースを取り込み、TPadesTrustValidationReply を通じて完了を報告します

オプション

NetworkPolicyptnpOffline はキャッシュされた証明書データのみを使用し、ptnpOnline は Windows のチェーン取得を許可します
CheckRevocation構成されたバックエンドのチェーン失効評価を要求します。Windows はルート証明書を除外し、OpenSSL は設定された CRL をチェーンに対してチェックします
CheckTimeStamps存在する場合、署名タイムスタンプと Document Time-stamp トークンを検証します
UrlRetrievalTimeoutMsチェーン処理と失効処理が使うネイティブ URL 取得の時間的な上限を設定します
QualifiedTrustEvaluator署名者と収集したチェーンを、認証済みオフラインのトラステッドリストスナップショットに対して任意に評価します
QualifiedValidationTimeUTC のサービス履歴評価時刻を選択します。ゼロの場合は現在時刻を使用します
CancellationToken次の検証ステージ境界で停止します
OnProgressステージ、署名インデックス、署名数、全体の進捗率を受け取ります

結果

TPadesValidationResult.Signatures は、ByteRangeStatus、CmsSignatureStatus、AlgorithmPolicyStatus、SigningCertificateStatus、CertificateTrustStatus、QualifiedTrustStatus、RevocationStatus、TimeStampStatus、TimeStampSignatureStatus、TimeStampTrustStatus、TimeStampRevocationStatus の各値を独立して報告します。一方 QualifiedTrust は一致した地域、プロバイダー、サービス、タイプ、ステータス、開始時刻を特定します

AlgorithmInfo は CMS のダイジェスト OID と署名 OID、および署名証明書の公開鍵 OID と名前付き曲線 OID を記録し、完全性を受け入れる前に ISO/TS 32002 の NIST、Brainpool、Ed25519、Ed448、曲対ダイジェストの規則を適用します

未サポートのアルゴリズム、利用できないプラットフォームのトラストサービス、不完全な失効エビデンス、キャンセルされた検証は、有効な状態へ昇格されません

各署名エントリには、CMS 検証からの RevocationReason と NativeRevocationError に加え、タイムスタンプトークン検証からの独立した TimeStampRevocationReason と NativeTimeStampRevocationError が含まれます。reason フィールドは TPdfCmsRevocationReason を使い、ネイティブ エラー フィールドは選択されたバックエンドのエラー空間(OpenSSL の X509_V_ERR_* コードや、Windows のプロバイダーや GetLastError の生の DWORD 値など)における Cardinal 値です。Windows の値は共通の HRESULT 空間へ変換されずにそのまま保持されます

タイムスタンプのペアは、埋め込まれた署名タイムスタンプまたは Document Time-stamp を記述するもので、通常の署名のペアを上書きしません。タイムスタンプの診断は、トークン構造とメッセージインプリントのチェックが CMS 検証の実行を許した後でのみ設定されます

CheckRevocation = False の場合、診断 reason は pcrrNone、エラーは 0 のままです。チェックに到達しなかった場合やバックエンドが詳細な reason を返さない場合も同じ既定値が適用されるため、空の診断を成功と見なさず、必ず対応するステータスを読んでください

備考

例

var
  Options: TPadesTrustValidationOptions;
  Validation: TPadesValidationResult;
begin
  Options := TPadesTrustValidationOptions.Default;
  Options.NetworkPolicy := ptnpOnline;
  Options.CheckRevocation := True;
  Validation := Pdf1.ValidatePadesTrust(Options);
end;

関連項目

ValidatePades FPdfTrustedList AnalyzeSignatureRevisions RenewPadesArchiveTimestamp