boring2/boring-sys
Christopher Patton 2fa3d96966 Use features to set key exchange preferences
Overwrite boringSSL's default key exchange preferences with safe
defaults using feature flags:

* "kx-pq-supported" enables support for PQ key exchange algorithms.
  Classical key exchange is still preferred, but will be upgraded to PQ
  if requested.

* "kx-pq-preferred" enables preference for PQ key exchange,
  with fallback to classical key exchange if requested.

* "kx-nist-required" disables non-NIST key exchange.

Each feature implies "kx-safe-default". When this feature is enabled,
don't compile bindings for `SSL_CTX_set1_curves()` and `SslCurve`. This
is to prevent the feature flags from silently overriding curve
preferences chosen by the user.

Ideally we'd allow both: that is, use "kx-*" to set defaults, but still
allow the user to manually override them. However, this doesn't work
because by the time the `SSL_CTX` is constructed, we don't yet know
whether we're the client or server. (The "kx-*" features set different
preferences for each.) If "kx-sfe-default" is set, then the curve
preferences are set just before initiating a TLS handshake
(`SslStreamBuilder::connect()`) or waiting for a TLS handshake
(`SslStreamBuilder::accept()`).
2023-09-01 14:21:35 -07:00
..
cmake boring-sys: Add support for Linux ARM(v7) 2023-07-27 13:15:53 -07:00
deps Merge pull request #117 from nox/bump-boringssl 2023-05-11 16:23:28 +01:00
patches Reduce release bundle size by excluding PQ test data 2023-08-01 17:51:44 +01:00
src Update docs 2023-07-10 12:29:30 +01:00
Cargo.toml Use features to set key exchange preferences 2023-09-01 14:21:35 -07:00
LICENSE-MIT Rename stuff 2020-11-11 17:47:30 +00:00
README.md Rename stuff 2020-11-11 17:47:30 +00:00
build.rs Introduce `no-patches` feature 2023-09-01 09:28:27 +01:00

README.md

boring

crates.io

BoringSSL bindings for the Rust programming language and TLS adapters for tokio and hyper built on top of it.

Documentation

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed under the terms of both the Apache License, Version 2.0 and the MIT license without any additional terms or conditions.

Accolades

The project is based on a fork of rust-openssl.