WPT details: https://wpt.fyi/results/webtransport/export-keying-material.https.any.html?label=experimental&label=master&aligned, https://wpt.fyi/results/webtransport/idlharness.https.sub.any.html?label=experimental&label=master&aligned
Adds WebTransport.exportKeyingMaterial(), which allows an application to derive cryptographic keying material bound to an established WebTransport session. The method accepts application provided binary label and context values and a requested output length and returns a Promise<Uint8Array>. Chromium supports label and context values up to 255 bytes and output lengths from 1 through 4096 bytes. For WebTransport over HTTP/3, Chromium includes the WebTransport CONNECT stream ID in the TLS exporter context. This ensures that separate WebTransport sessions derive different keying material even when they share the same underlying HTTP/3 connection.
Applications sometimes need cryptographic keying material bound to an authenticated transport session, for example to bind an application protocol, authentication exchange, or application-level encryption context to a WebTransport session without performing an additional key exchange. TLS exporters derive application-specific secret material without exposing the TLS traffic keys. WebTransport.exportKeyingMaterial() exposes this mechanism through application-provided binary label and context values and an explicit output length. Multiple WebTransport sessions can share one HTTP/3 connection. Chromium therefore includes the WebTransport CONNECT stream ID in the exporter context, ensuring that different sessions derive different keying material even when callers use identical application labels and contexts.
Explainers: https://github.com/w3c/webtransport/blob/main/explainer.md