Repository navigation
Adapt native TLS extensions to Boring 5.4.0 - #5
Merged
Merged
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
🟡 Changes recommended
The regression test verifies session reuse but never checks ClientHello padding presence or length, so incorrect or omitted padding on resumed connections would go undetected.
1 open issue
What changed in this PR
Adapts the fork’s opt-in native TLS extensions to the Boring 5.4.0 baseline while preserving the public C ABI and separating fixed-profile behavior from upstream defaults.
Changes:
- Updates native patches for
SSLImpl/FromOpaqueand the TLS 1.3 cipher configuration API. - Retains fixed-profile signature lists and conditional padding.
- Adds Chrome120 ticket-resumption coverage and updates baseline documentation.
| File | Description |
|---|---|
tokio-boring/tests/selected_fingerprint.rs |
Shares ticket-resumption checks across Chrome133 and Chrome120. |
docs/reality-client.md |
Updates the documented fork baseline. |
docs/client-fingerprint.md |
Documents the Boring and BoringSSL baselines. |
boring-sys/patches/shadow-tls-v3.patch |
Adapts ShadowTLS v3 to native handle changes. |
boring-sys/patches/reality-client.patch |
Rebases REALITY hooks onto updated native internals. |
boring-sys/patches/jls-client.patch |
Adapts JLS hooks and credential tests. |
boring-sys/patches/client-fingerprint.patch |
Updates cipher configuration, signature GREASE handling, and padding. |
.gitattributes |
Disables whitespace checks for native patch files. |
Review effort: Balanced
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.

Summary
The upstream 5.4.0 sync is already in
release, but its BoringSSL update makes the existing opt-in native patches fail to apply. This change restores the fork extensions on the new baseline.Adapt native handles to
SSLImpl/FromOpaquewhile retaining the public C ABI and existing authentication and cleanup behavior. Configure fixed TLS 1.3 cipher preferences through the new native API. Keep fixed-profile signature vectors and conditional padding, while leaving the unconfigured upstream path unchanged. Add a Chrome120 ticket-resumption regression for padding and the real PSK binder.The PR contains only the fork adaptation and can be squash merged; the upstream sync is already part of its base.
Evidence
After: the updated patches apply, compile and retain the existing wire assertions. Fixed-profile behavior and the unconfigured upstream behavior remain separate.
SSLTest.JlsCredentials*: 5 passed.-D warnings, rustfmt and diff checks passed.No container interoperability, pressure, full downstream ABI/TUN, independent Git-source build, cross-target or device validation is claimed.
Merge Danger
Door: two-way
The adaptation is isolated from the upstream-sync commit. Reverting it restores the known extension-build failure on that baseline.
Blast Radius: TLS
Named profiles, REALITY, ShadowTLS v3 and JLS share native handshake state. Keep downstream integration and platform validation separate from these memory-only checks.