Merge in upstream v5.0.0 - #41
Closed
jrose-signal wants to merge 112 commits into
Closed
Conversation
Per BoringSSL's FIPS policy, its `main` branch is the "update branch" for FedRAMP compliance's purposes. This means that we can stop using a specific BoringSSL branch when enabling FIPS, as well as a number of hacks that allowed us to build more recent BoringSSL versions with an older pre-compiled FIPS modules. This also required slightly updating the main BoringSSL submodule, as the previous version had an issue when building with the FIPS option enabled. This is turn required some changes to the PQ patch as well as some APIs that don't seem to be exposed publicly, as well as changing some paths in the other patches. In order to allow a smooth upgrade of internal projects, the `fips-compat` feature is reduced in scope and renamed to `legacy-compat-deprecated` so that we can incrementally upgrade internal BoringSSL forks. In practice this shouldn't really be something anyone else would need, since in order to work it requires a specific mix of BoringSSL version and backported patches.
SslStream::new() is fallible, but `SslStream::from_raw_parts()` and `SslStreamBuilder::new()` now unwrap. Upstream has also deprecated the `SslStreamBuilder`, maybe we should do the same.
The "kx-*" features control default key exchange preferences. Its implementation requires disabling APIs for manually setting curve preferences via `set_curves()` or `set_curves_list()`. In practice, most teams need to be able to override default preferences at runtime anyway, which means these features were never really used. This commit gets rid of them, thereby reducing some complexity in the API.
This is incompatible with the latest internal FIPS build. Namely, the various group identifiers have been renamed since the previous version.
Instead of returning an `SslCurve`, just return the `u16` returned by BoringSSL.
Add a wrapper for the `SSL_CTX_set_tlsext_ticket_key_cb`, which allows consumers to configure the EVP_CIPHER_CTX and HMAC_CTX used for encrypting/decrypting session tickets. See https://docs.openssl.org/1.0.2/man3/SSL_CTX_set_tlsext_ticket_key_cb/ for more details.
Users can override the new default behavior in the usual way. The expectation is that the build of BoringSSL they provide the feature set implemented by the patch.
This enables rust bindings for BoringSSL's ML-KEM pq key encapsulation including MLKEM758 and MLKEM1024
This method returns `None` for the GCM NIDs. It appears to be implemented incorrectly: It first calls `OBJ_nid2sn(nid)` to get the NID's short name, then calls `EVP_get_cipherbyname(name)`. The documentation isn't clear as to whether `name` should be the short or long name, but it appears to expect the long name. At least, changing to `OBJ_nid2sn()` to `OBJ_nid2ln()` makes the method work properly, To fix this, this commit calls `EVP_get_cipherbynid()`, which is is more direct. Note that the method still returns `None` on the 3DES NID, but we're not likely to encounter this one in practice.
jrose-signal
force-pushed
the
jrose/boring-5.0.0
branch
from
February 11, 2026 02:03
f422b9d to
ed051f3
Compare
This reverts commit a50a39f, which interferes with CMake's own support for these variables, at least how Signal has been using them.
jrose-signal
marked this pull request as draft
February 13, 2026 02:03
Author
|
Closing, we'll go to 5.0.1 instead. #44 |
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.
No description provided.