Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement compatible version negotiation #524

Merged
merged 3 commits into from
Jun 30, 2024

Conversation

jlaine
Copy link
Contributor

@jlaine jlaine commented Jun 29, 2024

No description provided.

Copy link

codecov bot commented Jun 29, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 100.00%. Comparing base (c6eeedc) to head (bfb070f).

Additional details and impacted files
@@            Coverage Diff            @@
##              main      #524   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files           25        25           
  Lines         5047      5092   +45     
=========================================
+ Hits          5047      5092   +45     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@jlaine jlaine force-pushed the compatible-version-neg branch 4 times, most recently from 9bb0b38 to da213ab Compare June 30, 2024 00:13
jlaine added 2 commits June 30, 2024 02:24
A QUIC server must not accept a Version Information transport parameter
whose chosen version is not included in the available versions.
We currently try to find the right moment to parse transport parameters
inside the CRYPTO frame handler. Instead, we can rely on a clearer
signal from the TLS engine: the remote party's TLS extensions become
available at the same time as ALPN negotiation completes.

This will become needed to implement compatible version negotiation,
since we need to determine the negotiated version *before* updating the
traffic keys.
@jlaine jlaine force-pushed the compatible-version-neg branch from da213ab to a488d21 Compare June 30, 2024 00:25
Enable compatible version negotiation according to RFC 9368. Unlike
incompatible negotiation which uses a Version Negotiation packet, this
allows a switch between compatible versions without an additional
roundtrip.

As an example we support switching between version 1 (RFC 9000) and
version 2 (RFC 9369) and vice versa.

On the server side we honour the client's preferences.
@jlaine jlaine force-pushed the compatible-version-neg branch from a488d21 to bfb070f Compare June 30, 2024 00:26
@jlaine jlaine merged commit bb5a03d into aiortc:main Jun 30, 2024
29 checks passed
@jlaine jlaine deleted the compatible-version-neg branch June 30, 2024 07:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant