例¶
英語版の参考訳です(25/10/2026 更新)。内容が異なる場合は英語版が優先されます。識別子、コマンド、コードブロックは翻訳せずにそのまま掲載しています。
どちらも、共有のアドミッションのベクター(tests/interop/v2/admission_vectors.json)を使ってオフラインで動きます。
合成した鍵とバンドル、オペレーターの信頼セットと strict-v1 のプロファイル、そしてベクターの時刻に固定した時計です。
リポジトリのルートから、次のコマンドが引き続きそのルートから始まるよう、まずサブシェルでワークスペースの SDK をビルドします。
(cd sdks/typescript && npm install && npm run build)
cd integrations/express && npm install && npm run build
node examples/strict-v1-body.mjs # the recommended transport, checked over real HTTP
node examples/strict-v1.mjs # the shortest strict-v1 setup
strict-v1-body.mjs:JSON のボディに入れたバンドル¶
127.0.0.1 のサーバーに実際の HTTP リクエストを送り、各結果を確認してサーバーを閉じ、想定どおりでない結果があれば 1 で
終了します。--report FILE は結果を JSON として書き出します。
| リクエスト | 想定される結果 |
|---|---|
ボディの signed_bundle に入れた、信頼するハイブリッドのバンドル |
200。ルートは req.dcpAgent.admission、actionAuthorized: false で実行される |
| 未知のプリンシパルのバンドル | 403、TRUST_PRINCIPAL_UNKNOWN。ルートは実行されない |
| 別の検証者に向けて署名されたバンドル | 403、PROFILE_AUDIENCE_MISMATCH と VERIFICATION_FAILED。ルートは実行されない |
| 予算を超えるボディ | ボディのパーサーによる 413。ミドルウェア、検証、信頼、失効は一切実行されない |
X-DCP-Bundle に入れた同じハイブリッドのバンドル |
Express がリクエストを見る前に Node が返す 431(バンドルが http.maxHeaderSize を超える場合のみ) |
カウンターが各リクエストがどこまで進んだか(Express、ボディのパーサーの後、信頼のソース、失効のソース、ルート)を記録する
ため、413 がルートの前だけでなく、検証の前に止まることが示されます。
アドミッションを通ったバンドルは証拠です。本物であり、あなたが信頼するプリンシパルのために署名されています。行動を
実行する許可ではありません。actionAuthorized は常に false で、リクエストに何を許すかはあなた自身の認可が決めます。
なぜボディなのか¶
ハイブリッドの V2 のバンドルは、Ed25519 と ML-DSA-65 の鍵と署名を持ちます。ベクターの基本のバンドルは 32,996 バイト
({"signed_bundle": …} では 33,014 バイト)です。Node のリクエストヘッダー全体の既定の上限は 16 KiB
(http.maxHeaderSize)なので、X-DCP-Bundle に入れたバンドルは、どのミドルウェアが動く前にも 431 で拒否されます。
プロキシやロードバランサーにもそれぞれヘッダーの上限があります。経路上のすべての上限に収まるバンドルについては、ヘッダーも
引き続きサポートされます。この例は maxHeaderSize を引き上げませんし、ハイブリッドのバンドルを収めるためにあなたも
そうすべきではありません。
ボディの予算¶
BODY_BUDGET_BYTES(64 KiB)はこの例での選択であり、プロトコルの上限ではありません。最大のバンドルのおよそ 2 倍です。
あなたのデプロイに合わせて設定してください。
- 受け付ける最大のバンドルを測定してください。監査証跡(ベクターのバンドルの各エントリは約 530 バイト)と PQ チェックポイントに応じて大きくなり、リクエストのボディのほかのフィールドもそれに加わります。
dcpVerifyの前に、予算をボディのパーサーに渡し(express.json({ limit }))、サーバーの前にあるすべてのプロキシで 同じかそれ以上の上限を保ってください。- 予算を超えるものはすべて、検証の前に
413を受け取ります。予算が小さすぎると有効な証拠を拒否し、大きすぎると クライアントがサーバーに大きなボディを解析させられるようになります。