PDFium Delphi Component Docs

BuildPadesEvidenceReport メソッド

コンポーネント: TPdf  ·  ユニット: PDFium
保持されている元の PDF 内のすべての PAdES 署名とドキュメントタイムスタンプにわたる、上限付きのエビデンスレポートを 1 つ作成します

構文

function BuildPadesEvidenceReport(const Options: TPadesEvidenceReportOptions): TPadesEvidenceReport;

説明

PDFium の署名ファクトに、CMS アルゴリズムとポリシーの検査、証明書のトラストと失効状態、RFC 3161 タイムスタンプの状態、DSS/VRI のカバレッジ、インクリメンタルリビジョンのポリシー分析を組み合わせます

このメソッドは不変のソースバイトキャプチャを 1 つ保持し、ドキュメントを再保存することなく、コンプライアンス、トラスト、DSS、リビジョンの各ステージでそれを再利用します

署名者と順序付き証明書パスの識別情報は、証明書本体をレポートへコピーする代わりに SHA-256 値として出力されます

オプション

結果

TPadesEvidenceReport には、検証とリビジョンのサマリー、ハッシュ化された DSS マテリアルレコード、VRI 参照グラフ、PDFium 署名数、切り詰め状態、および保持された各署名に対する 1 つの TPadesSignatureEvidence が含まれます

ToJson は入れ子のエビデンスドキュメントを出力し、ToCsv は保持されたリビジョン変更ごとに 1 行を、署名に保持された変更がない場合はサマリー行を 1 行出力します

TPadesSignatureEvidence.Validation は、署名の RevocationReason と NativeRevocationError を、タイムスタンプの TimeStampRevocationReason および NativeTimeStampRevocationError とは独立に保持します

失効エクスポート フィールド

signatures の各 JSON エントリには、revocationReason、nativeRevocationError、timeStampSignatureStatus、timeStampTrustStatus、timeStampRevocationStatus、timeStampRevocationReason、nativeTimeStampRevocationError が含まれます。既存のメンバーとその意味は変わらず、JSON 形式にはスキーマバージョンのメンバーがないため、コンシューマーはフィールドを名前で読み、追加のメンバーを許容するようにしてください

CSV は元の 40 列を元の順序のまま保持し、上記と同じ 7 フィールドを列挙順に追記して合計 47 列になります。サマリー行とリビジョン変更行のどちらにも診断が含まれ、既存の列位置は変わりません。読み取る側は、40 列ちょうどを要求するのではなく、ヘッダー名を使うか末尾の追加列を許容するようにしてください

reason の文字列は none、certificateRevoked、crlExpired、crlNotYetValid、crlUnavailable、crlSignatureInvalid、crlInvalid、chainUntrusted、unknown のいずれかです。ネイティブ エラーはバックエンド固有の数値コード(OpenSSL の X509 検証エラー、Windows のプロバイダーや GetLastError の生の DWORD 値など)で、0 はネイティブの診断情報がないことを意味します。Windows の値はそのまま出力されるため、集約チェーン トラスト マスクや共通の HRESULT 空間として解釈してはいけません

判定には revocationStatus と timeStampRevocationStatus を使ってください。チェックが無効だったり到達しなかったり、バックエンドの詳細診断が得られない場合にも、reason が none になったりエラーが 0 になったりします。エビデンスの出力時に追加の検証パスが実行されることはありません

備考

例

var
  Options: TPadesEvidenceReportOptions;
  Report: TPadesEvidenceReport;
begin
  Options := TPadesEvidenceReportOptions.Default;
  Report := Pdf1.BuildPadesEvidenceReport(Options);
  TFile.WriteAllText('signature-evidence.json', Report.ToJson);
end;

関連項目

ValidatePadesTrust AnalyzeSignatureRevisions