PDFium Delphi Component Docs

FPdfTsaPosix ユニット

ユニット: FPdfTsaPosix
RFC 3161 タイムスタンプ要求向けのネイティブ Delphi POSIX HTTP 通信

構文

function TsaHttpAvailable: Boolean;
function TsaHttpBackendName: string;
function PostTimeStampQuery(const TsaUrl: string; const ReqDer: TBytes; out RespDer: TBytes): Boolean;

説明

FPdfTsa は Delphi の POSIX 環境でこの通信経路を選びます。System.Net.HttpClient を使い、Content-Type: application/timestamp-query と Accept: application/timestamp-reply を付けた実際の HTTP/HTTPS POST を送ります

facade は Windows では FPdfTsaWin、ネイティブ Free Pascal では FPdfTsaFpc に委譲します。この分岐により、旧 Windows Delphi パッケージは POSIX HTTP 実装に依存しません

通信経路の利用可否は選ばれた HTTP バックエンドを示します。TSA への到達、署名証明書の信頼、タイムスタンプの有効性を保証するものではありません

関数

関数説明
TsaHttpAvailable選択されたプラットフォームの HTTP 通信経路が利用できるかを返します
TsaHttpBackendNameDelphi POSIX では System.Net.HttpClient、それ以外は委譲先の Windows/Free Pascal 通信が返す名前です
PostTimeStampQuery呼び出し側の DER 要求を TsaUrl に POST し、空でなくサイズ制限内の 2xx 応答を受け付けて RespDer に返します。要求失敗時は出力を消去して False を返します

制限と検証

Delphi 通信では要求/応答の body は 4 MiB、URL は文字列のコード単位 8192 までです。HTTP と HTTPS の URL だけを受け付け、redirect は無効です

接続、送信、応答の timeout は 30000 ミリ秒です。期限監視 worker は全体の 30000 ミリ秒を過ぎるとネイティブ HTTP 要求のキャンセルを要求します。サイズ制限付き応答ストリームの書き込みと完了応答の検査でも、期限超過を拒否します。ネイティブ要求のキャンセルがどれだけ速く反映されるかは OS の HTTP 実装に依存します

HTTPS ではプラットフォームの証明書と hostname 検証を維持します。POST 成功は通信の成功だけで、FPdfTsa が RFC 3161 応答の解析、要求した imprint と nonce の確認、token 抽出を行います。PAdES 信頼検証では、元の token の CMS 署名、証明書チェーン、失効証拠、タイムスタンプの役割を別々に検証します

2xx 応答でも TSA の DER 拒否応答が含まれる場合があり、上位の応答パーサーはタイムスタンプ要求の失敗として報告します

関連項目

FPdfTsa, FPdfTsaFpc, FPdfTsaWin, TPdf.ValidatePadesTrust