Windows 署名タイムスタンプ
Windows の sign 操作は、同期アプリケーションコールバックを通じて正規の RFC3161 タイムスタンプを要求し、応答の認証後にのみ PDF を公開できます
署名オプション
{"schemaVersion":1,"type":"sign","incremental":true,
"existingField":true,"fieldName":"ApprovalOne",
"pfxFile":"C:/keys/signer.pfx","pfxPassword":"password",
"cades":true,"digestMethod":"SHA384","timestamp":true,
"timestampURL":"https://tsa.example/service",
"timestampTrustedCAFile":"C:/trust/tsa-roots.pem",
"timestampTrustedCRLFile":"C:/trust/tsa-crls.pem",
"requireTimestampRevocation":true}
timestamp の既定は false です。true はアプリケーション転送コールバックと、信頼された PEM 証明書ルートを含む明示的な timestampTrustedCAFile を要求します
digestMethod は実際のドキュメント CMS ダイジェストとタイムスタンプインプリントアルゴリズムを SHA256、SHA384、SHA512 から選びます。messageImprint は実際の CMS 署名オクテットをちょうど 1 回ハッシュします
timestampTrustedCRLFile は省略可能で PEM CRL を供給します。requireTimestampRevocation はそのファイルを要求し、失効証明書や期限切れエビデンスを含む発行者と証明書の CRL 検査を有効にします
トラスト入力ファイルは署名中、書き込み共有を拒否したまま開かれ、OpenSSL がロードする前に合計サイズが memoryBytes の 8 分の 1 に制限されます
各リクエストは新しい暗号 nonce を含み TSA 証明書を要求します。応答検証は、リクエストの nonce、インプリント、完全な CMS 署名、ESS 署名証明書バインディング、証明書チェーン、critical なタイムスタンプ EKU を認証します
C ABI 転送
hpdf_document_execute_json_v1 に hpdf_signing_operation_v1 を渡し、operation.struct_size に sizeof(hpdf_signing_operation_v1) を設定し、timestamp_transport と timestamp_user_data を供給します
操作接頭辞は既存の hpdf_operation_v1 レイアウトと ABI バージョンを保ちます。通常の操作は元の構造を使い続けます
コールバックは完全な DER TimeStampReq と借用の response_io を受け取ります。response_io.write を通じて完全な DER TimeStampResp を書き込み、hpdf_status を返します
コールバックは呼び出しスレッドで実行され、リクエストと応答の IO ポインタはその呼び出しの間だけ有効です。ネットワーク転送、認証、タイムアウト、接続ポリシーはアプリケーションが所有します
response_io.is_cancelled は操作の input、output、result の各キャンセルコールバックをポーリングします。応答書き込みは 16 MiB の上限を強制し、コールバックメモリをコピーする前に memoryBytes の 8 分の 1 でさらに制限されます
応答書き込みやキャンセルの失敗は、コールバックが後で success を返しても操作に対して有効なままです。失敗した応答は PDF バイトを公開できません
Pascal サービスエントリ
THPDFJobProcessor.ExecuteLoadedSigningOperation は、ロード済みドキュメント、操作 JSON オブジェクト、出力ストリーム、チェックポイント、THPDFHeadlessTimestampTransport コールバック、不透明なコールバックコンテキストを受け取ります
Pascal のトランスポートはリクエスト DER を受け取り応答 DER を返します。ネストした同期署名は、内側の操作が返るとき外側のコールバックコンテキストを復元します
シード値と来歴
必須の SV TimeStamp 制約は実際の認証済み応答で満たされます。必須の TimeStamp 辞書が URL を指定する場合、timestampURL はその値と一致しなければなりません
timestampURL はアプリケーションが主張する転送の来歴です。宣言された URL の比較は HTTPS サーバーの同一性を確立せず、アプリケーションが選択したエンドポイントの認証はアプリケーションの責務です
アプリケーションコールバックのないスタンドアロンのファイルジョブはタイムスタンプリクエストを実行できません。URL 文字列だけでは必須タイムスタンプを満たせません
増分 PFX 署名とネイティブ RFC3161 検証を参照してください