Expose TLS exporter keying material - #2577
Open
davidtorcivia wants to merge 3 commits into
Open
Conversation
davidtorcivia
force-pushed
the
vot-tls-exporter
branch
from
August 11, 2026 17:04
6138b4d to
45b53b9
Compare
davidtorcivia
marked this pull request as ready for review
August 11, 2026 17:05
Author
|
Rebased onto current master and removed the unrelated recovery commit from the branch. Review identified that BoringSSL can derive the TLS 1.3 exporter secret before quiche marks the connection established; the public method now returns InvalidState in that interval, with a server-side partial-handshake regression. Final validation: 1,090 crate tests, 45 doctests, focused exporter and handshake-state tests, and Clippy clean with only the current upstream uninlined_format_args baseline allowed. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Adds Connection::export_keying_material, backed by SSL_export_keying_material, with caller-owned output, an explicit label, and optional context. This lets application protocols derive channel-binding material without exposing the TLS session or allocating in quiche.\n\nThe public operation returns InvalidState until quiche marks the TLS handshake established, preventing access during the server interval after its Finished message but before the peer Finished is authenticated.\n\nTests verify pre-handshake and partial-handshake rejection, matching client/server output, label and non-empty-context separation, and peer agreement for an explicitly empty context.\n\nValidated with nightly rustfmt, 1,090 quiche tests, 45 doctests, and deny-warnings Clippy with only the current upstream uninlined_format_args baseline allowed. The change introduces no new Clippy warning.