Skip to content

Commit b70d263

Browse files
committed
Add the rustls-core feature flag to provide backwards compatibility
1 parent 66ab640 commit b70d263

File tree

7 files changed

+32
-50
lines changed

7 files changed

+32
-50
lines changed

Cargo.toml

+14-4
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@ license = "Apache-2.0"
99

1010
[features]
1111
default = ["tokio-net"]
12-
rustls = ["tokio-rustls"]
13-
rustls-aws-lc = ["rustls", "tokio-rustls/aws-lc-rs"]
12+
rustls-core = ["tokio-rustls"]
13+
rustls-aws-lc = ["rustls-core", "tokio-rustls/aws-lc-rs"]
1414
rustls-fips = ["rustls-aws-lc", "tokio-rustls/fips"]
15-
rustls-ring = ["rustls", "tokio-rustls/ring"]
15+
rustls-ring = ["rustls-core", "tokio-rustls/ring"]
16+
rustls = ["rustls-aws-lc", "tokio-rustls/default"]
1617
native-tls = ["tokio-native-tls"]
1718
openssl = ["tokio-openssl", "openssl_impl"]
1819
rt = ["tokio/rt"]
@@ -63,5 +64,14 @@ name = "http-change-certificate"
6364
path = "examples/http-change-certificate.rs"
6465

6566
[package.metadata.docs.rs]
66-
features = ["rustls", "native-tls", "openssl", "rt"]
67+
features = [
68+
"rustls-core",
69+
"rustls",
70+
"rustls-aws-lc",
71+
"rustls-fips",
72+
"rustls-ring",
73+
"native-tls",
74+
"openssl",
75+
"rt"
76+
]
6777
rustdoc-args = ["--cfg", "docsrs"]

README.md

+6-34
Original file line numberDiff line numberDiff line change
@@ -13,39 +13,11 @@ It can be used to easily create a `Stream` of TLS connections from a listening s
1313

1414
See examples for examples of usage.
1515

16-
You must enable either one of the `rustls[-xyz]` (more details below), `native-tls`, or `openssl`
16+
You must enable either one of the `rustls` (more details below), `native-tls`, or `openssl`
1717
features depending on which implementation you would like to use.
1818

19-
When enabling the `rustls` feature, the `rustls` crate will be added as a dependency through
20-
the `tokio-rustls` crate without any
21-
[cryptography providers](https://docs.rs/rustls/latest/rustls/#cryptography-providers)
22-
included by default. To include one, do either of the following:
23-
24-
1. Enable at least one of the additional `rustls-aws-lc`, `rustls-fips`, or `rustls-ring` features.
25-
By doing this, you can also remove the `rustls` feature flag since it will be enabled
26-
automatically by any of the `rustls-xyz` features.
27-
28-
```toml
29-
# Replace `rustls-xyz` with one of the features mentioned above.
30-
tls-listener = { version = "x", features = ["rustls-xyz"] }
31-
```
32-
33-
These features will enable their relevant [`rustls` features](https://docs.rs/rustls/latest/rustls/#crate-features).
34-
35-
1. Keep the `rustls` feature flag, but directly add the [`rustls`](https://crates.io/crates/rustls)
36-
and/or [`tokio-rustls`](https://crates.io/crates/tokio-rustls) crates to your project's
37-
dependencies and enable your preferred flags on them instead of adding additional flags on
38-
this crate (`tls-listener`).
39-
40-
```toml
41-
# Replace `xyz` with one of the features mentioned in the crate's documentation.
42-
# for example: `aws-lc-rc`, `fips` or `ring`
43-
rustls = { version = "x", default-features = false, features = ["xyz"]}
44-
# And/or
45-
tokio-rustls = { version = "x", default-features = false, features = ["xyz"]}
46-
```
47-
48-
You can also enable the default features by removing `default-features = false`, which will
49-
enable the [AWS-LC crypto provider](https://github.com/aws/aws-lc-rs). However, their
50-
default features are not enable by `tls-listener` because doing so will make disabling
51-
them very hard for dependent crates.
19+
When enabling the `rustls` feature, the `rustls` crate will be added as a dependency along
20+
with it's default [cryptography provider](https://docs.rs/rustls/latest/rustls/#cryptography-providers).
21+
To avoid this behaviour and use other cryptography providers, the `rustls-core` feature can be used instead.
22+
Additional feature flags for other [rustls built-in cryptography providers](https://docs.rs/rustls/latest/rustls/#built-in-providers) are also available:
23+
`rustls-aws-lc` (default), `rustls-fips` and `rustls-ring`

examples/echo-threads.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ use tls_listener::{SpawningHandshakes, TlsListener};
44
use tokio::io::{copy, split};
55
use tokio::net::{TcpListener, TcpStream};
66
use tokio::signal::ctrl_c;
7-
#[cfg(all(feature = "native-tls", not(feature = "rustls")))]
7+
#[cfg(all(feature = "native-tls", not(feature = "rustls-core")))]
88
use tokio_native_tls::TlsStream;
9-
#[cfg(feature = "rustls")]
9+
#[cfg(feature = "rustls-core")]
1010
use tokio_rustls::server::TlsStream;
1111

1212
mod tls_config;

examples/echo.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@ use tokio::signal::ctrl_c;
77

88
#[cfg(all(
99
feature = "native-tls",
10-
not(any(feature = "rustls", feature = "openssl"))
10+
not(any(feature = "rustls-core", feature = "openssl"))
1111
))]
1212
use tokio_native_tls::TlsStream;
1313
#[cfg(all(
1414
feature = "openssl",
15-
not(any(feature = "rustls", feature = "native-tls"))
15+
not(any(feature = "rustls-core", feature = "native-tls"))
1616
))]
1717
use tokio_openssl::SslStream as TlsStream;
18-
#[cfg(feature = "rustls")]
18+
#[cfg(feature = "rustls-core")]
1919
use tokio_rustls::server::TlsStream;
2020

2121
mod tls_config;

examples/test_examples.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ def build_examples():
5656
"build",
5757
"--examples",
5858
"--features",
59-
"rustls-aws-lc,rt,tokio/rt-multi-thread",
59+
"rustls,rt,tokio/rt-multi-thread",
6060
]
6161
)
6262
proc.check_returncode()

examples/tls_config/mod.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#[cfg(feature = "rustls")]
1+
#[cfg(feature = "rustls-core")]
22
mod config {
33
use std::sync::Arc;
44
use tokio_rustls::rustls::{
@@ -39,7 +39,7 @@ mod config {
3939

4040
#[cfg(all(
4141
feature = "native-tls",
42-
not(any(feature = "rustls", feature = "openssl"))
42+
not(any(feature = "rustls-core", feature = "openssl"))
4343
))]
4444
mod config {
4545
use tokio_native_tls::native_tls::{Identity, TlsAcceptor};
@@ -65,7 +65,7 @@ mod config {
6565

6666
#[cfg(all(
6767
feature = "openssl",
68-
not(any(feature = "rustls", feature = "native-tls"))
68+
not(any(feature = "rustls-core", feature = "native-tls"))
6969
))]
7070
mod config {
7171
use openssl_impl::ssl::{SslContext, SslFiletype, SslMethod};

src/lib.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ use tokio::time::{timeout, Timeout};
3030
pub use tokio_native_tls as native_tls;
3131
#[cfg(feature = "openssl")]
3232
pub use tokio_openssl as openssl;
33-
#[cfg(feature = "rustls")]
33+
#[cfg(feature = "rustls-core")]
3434
pub use tokio_rustls as rustls;
3535

3636
#[cfg(feature = "rt")]
@@ -270,8 +270,8 @@ where
270270
}
271271
}
272272

273-
#[cfg(feature = "rustls")]
274-
#[cfg_attr(docsrs, doc(cfg(feature = "rustls")))]
273+
#[cfg(feature = "rustls-core")]
274+
#[cfg_attr(docsrs, doc(cfg(feature = "rustls-core")))]
275275
impl<C: AsyncRead + AsyncWrite + Unpin> AsyncTls<C> for tokio_rustls::TlsAcceptor {
276276
type Stream = tokio_rustls::server::TlsStream<C>;
277277
type Error = std::io::Error;

0 commit comments

Comments
 (0)