Lily Chen e651545da6 Make SSL_OP_CIPHER_SERVER_PREFERENCE behavior default for TLS curves
Previously, servers could set SSL_OP_CIPHER_SERVER_PREFERENCE to
configure behavior where the server's own preferences for TLS curves
(supported_groups) are prioritized over the client's. Since servers can
configure equipreference groups in their own preference lists to allow
client preferences to be partially respected, there is little reason not
to always prioritize the server's preference.

This CL makes the SSL_OP_CIPHER_SERVER_PREFERENCE behavior always
enabled for TLS curves, and setting the SSL_OP_CIPHER_SERVER_PREFERENCE
option is now a no-op for TLS curves (supported_groups).

There is no change yet to TLS 1.2 ciphers, which still require
SSL_OP_CIPHER_SERVER_PREFERENCE to enable prioritization of server
preference.

Update-Note: SSL_OP_CIPHER_SERVER_PREFERENCE is now a no-op for TLS
curves (supported_groups), and its behavior is always enabled. That is,
for a server, the server's own preferences are prioritized over the
client's. Callers that want the old default behavior for TLS curves can
use `SSL_CTX_set1_group_ids_with_flags` and configure every group into a
single equipreference group, but this is not recommended.

Bug: 550356540
Change-Id: If1655413e62dea779f3c970aa6cfff4e6a6a6964
Reviewed-on: https://boringssl-review.googlesource.com/c/boringssl/+/104728
Commit-Queue: Lily Chen <chlily@google.com>
Reviewed-by: David Benjamin <davidben@google.com>
2026-10-26 15:35:15 -07:00
2026-09-29 10:24:43 -07:00
2026-07-08 11:33:30 -07:00
2026-04-09 00:32:57 -07:00
2025-01-15 17:02:35 -08:00
2026-02-11 13:22:42 -08:00
2026-10-23 15:11:38 -07:00
2026-10-23 15:11:38 -07:00
2025-10-25 17:16:07 -07:00
2025-04-14 16:16:31 -07:00
2026-06-05 11:29:31 -07:00
2026-05-01 15:08:45 -07:00
2025-12-08 11:14:35 -08:00

BoringSSL

BoringSSL is a fork of OpenSSL that is designed to meet Google's needs.

Although BoringSSL is an open source project, it is not intended for general use, as OpenSSL is. We don't recommend that third parties depend upon it. Doing so is likely to be frustrating because there are no guarantees of API or ABI stability.

Programs ship their own copies of BoringSSL when they use it and we update everything as needed when deciding to make API changes. This allows us to mostly avoid compromises in the name of compatibility. It works for us, but it may not work for you.

BoringSSL arose because Google used OpenSSL for many years in various ways and, over time, built up a large number of patches that were maintained while tracking upstream OpenSSL. As Google's product portfolio became more complex, more copies of OpenSSL sprung up and the effort involved in maintaining all these patches in multiple places was growing steadily.

Currently BoringSSL is the SSL library in Chrome/Chromium, Android (but it's not part of the NDK) and a number of other apps/programs.

Project links:

To file a security issue, use the Chromium process and mention in the report this is for BoringSSL. You can ignore the parts of the process that are specific to Chromium/Chrome.

There are other files in this directory which might be helpful:

Languages
C++ 51%
C 16.9%
Go 12.1%
Raku 5.6%
Rust 5.3%
Other 9.1%