Closed Bug 2007200 Opened 8 months ago Closed 1 month ago

Support ExportKeyingMaterial for WebTransport

Categories

(Core :: Networking, enhancement, P2)

enhancement

Tracking

()

RESOLVED FIXED
155 Branch
Tracking Status
firefox155 --- fixed

People

(Reporter: jesup, Assigned: jesup)

References

(Blocks 2 open bugs)

Details

(Keywords: dev-doc-complete, Whiteboard: [necko-triaged], [wptsync upstream])

Attachments

(6 files, 3 obsolete files)

48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
Depends on: 2007201
Severity: -- → N/A
Priority: -- → P2
Whiteboard: [necko-triaged]
Assignee: nobody → rjesup
Status: NEW → ASSIGNED
Attachment #9534319 - Attachment description: WIP: Bug 2007200: Implement exportKeyingMaterial() method r=#necko-reviewers!,#dom-reviewers! → Bug 2007200: Implement exportKeyingMaterial() method r=saschanaz!
Attachment #9534319 - Attachment description: Bug 2007200: Implement exportKeyingMaterial() method r=saschanaz! → WIP: Bug 2007200: Implement exportKeyingMaterial() method r=saschanaz!
Attachment #9534319 - Attachment description: WIP: Bug 2007200: Implement exportKeyingMaterial() method r=saschanaz! → Bug 2007200: Implement exportKeyingMaterial() method r=saschanaz!

Per w3c/webtransport#774, exportKeyingMaterial(label, context, outputLength)
takes all three arguments as required (context is no longer optional and the
prose no longer says "if context is given"). Implement outputLength end to end:
the DOM validates it (RangeError if 0 or > 4096) and plumbs it through IPC, the
necko nsIWebTransport interface, the Http3/Http2 sessions, and the neqo glue,
which now sizes the exporter output to outputLength instead of a hardcoded 32.

Rewrite the WPTs to the 3-argument form (asserting the output is outputLength
bytes, plus outputLength RangeError coverage) and drop the now-passing
idlharness exportKeyingMaterial expected-FAIL.

Per w3c/webtransport#774, exportKeyingMaterial(label, context, outputLength)
takes all three arguments as required (context is no longer optional and the
prose no longer says "if context is given"). Implement outputLength end to end:
the DOM validates it (RangeError if 0 or > 4096) and plumbs it through IPC, the
necko nsIWebTransport interface, the Http3/Http2 sessions, and the neqo glue,
which now sizes the exporter output to outputLength instead of a hardcoded 32.

Rewrite the WPTs to the 3-argument form (asserting the output is outputLength
bytes, plus outputLength RangeError coverage) and drop the now-passing
idlharness exportKeyingMaterial expected-FAIL.

Pushed by smolnar@mozilla.com: https://github.com/mozilla-firefox/firefox/commit/78a5278d9691 https://hg.mozilla.org/integration/autoland/rev/daa7a7b4892e Revert "Bug 2007200, 2007206: apply code formatting via Lando" for causing wpt lint failures & build bustages @ TestHttp3ConnectUDPStream.cpp

Created web-platform-tests PR https://github.com/web-platform-tests/wpt/pull/61501 for changes under testing/web-platform/tests

Whiteboard: [necko-triaged] → [necko-triaged], [wptsync upstream]

Upstream PR was closed without merging

Attachment #9615207 - Attachment is obsolete: true

Upstream PR merged by moz-wptsync-bot

Attachment #9615357 - Attachment description: WIP: Bug 2007200: make WebTransport exportKeyingMaterial args required and implement outputLength → Bug 2007200: make WebTransport exportKeyingMaterial args required and implement outputLength r=#necko-reviewers!,#webidl!,#dom-core!
Attachment #9626050 - Attachment is obsolete: true
Attachment #9615357 - Attachment description: Bug 2007200: make WebTransport exportKeyingMaterial args required and implement outputLength r=#necko-reviewers!,#webidl!,#dom-core! → Bug 2007200: make WebTransport exportKeyingMaterial args required and implement outputLength r=#webidl!,#necko-reviewers!,#dom-core!

A patch has been attached on this bug, which was already closed. Filing a separate bug will ensure better tracking. If this was not by mistake and further action is needed, please alert the appropriate party. (Or: if the patch doesn't change behavior -- e.g. landing a test case, or fixing a typo -- then feel free to disregard this message)

QA Whiteboard: [qa-triage-done-c156/b155]
Blocks: 2063706

Comment on attachment 9626051 [details]
Bug 2007200: reject ExportKeyingMaterial's promise on failure instead of resolving with an empty array r=#dom-core!

Revision D318354 was moved to bug 2063706. Setting attachment 9626051 [details] to obsolete.

Attachment #9626051 - Attachment is obsolete: true
Keywords: dev-doc-needed

FF155 MDN work for this can be tracked in https://github.com/mdn/content/issues/45216

Can I get a tehncial review of the doc part please: https://github.com/mdn/content/pull/45411

Specifically, I understand from https://github.com/w3c/webtransport/issues/411 that the mechanism allows an application level handshake to verify that two peers are on the same TLS connection. This stops replay attacks in the case where an MITM opens a connection to each peer and forwards between them, since the ends won't calculate the same exported material.

I think it doesn't prevent the MITM spoofing both endpoints, unless they have some other shared secret.
However with no "real world experience" would be good to get some independent technical eyes on this.

Flags: needinfo?(rjesup)

I can only assume I am right ^^^^. If I'm not let me know and we can fix up the docs as a post-process

You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: