Skip to content

Conversation

@maddeleine
Copy link
Contributor

@maddeleine maddeleine commented Aug 24, 2023

Resolved issues:

N/A

Description of changes:

This PR introduces server-side session resumption. To get this working I transitioned the server tx_phase when the one RTT keys are created. This works because at that point the server has already sent its last handshake message (Server Finished.) I also added a CryptoStream to the ApplicationSpace so that Crypto frames can be sent there. Basically I just copied how the HandshakeSpace handles its CryptoStream.

Call-outs:

Session resumption is gated under the unstable_resumption flag. I manually tested that the server doesn't send tickets unless the flag is on.

Testing:

This PR includes an example of a server that can successfully do session resumption. I tested that that example can resume using a Quiche client since it already has client-side session resumption. If I need more tests please comment.

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

@maddeleine maddeleine changed the title feat(s2n-quic-tls): adds server session resumption feat(s2n-quic-tls): adds server session resumption functionality Aug 24, 2023
camshaft
camshaft previously approved these changes Aug 28, 2023
Copy link
Contributor

@camshaft camshaft left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This would ideally have the resumption tests enabled for the interop tests. But I'm fine to merge this and do that separate.

camshaft
camshaft previously approved these changes Aug 30, 2023
@maddeleine maddeleine requested review from camshaft and removed request for camshaft August 30, 2023 20:50
@maddeleine maddeleine merged commit 2a16d86 into main Aug 30, 2023
@maddeleine maddeleine deleted the server_resumption branch August 30, 2023 21:28
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.

2 participants