Skip to content

Commit 15a94a0

Browse files
Revert "Update rustls to 0.23. Support 'CryptoProvider's."
This reverts commit ce92c5d.
1 parent ed1edca commit 15a94a0

10 files changed

+21
-106
lines changed

core/lib/Cargo.toml

+2-2
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ rmp-serde = { version = "1", optional = true }
5050
uuid_ = { package = "uuid", version = "1", optional = true, features = ["serde"] }
5151

5252
# Optional TLS dependencies
53-
rustls = { version = "0.23", default-features = false, features = ["ring", "logging", "std", "tls12"], optional = true }
54-
tokio-rustls = { version = "0.26", default-features = false, features = ["logging", "tls12", "ring"], optional = true }
53+
rustls = { version = "0.22", optional = true }
54+
tokio-rustls = { version = "0.25", optional = true }
5555
rustls-pemfile = { version = "2.0.0", optional = true }
5656

5757
# Optional MTLS dependencies

core/lib/src/listener/tls.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use tokio::io::{AsyncRead, AsyncWrite};
77
use tokio_rustls::TlsAcceptor;
88

99
use crate::tls::{TlsConfig, Error};
10-
use crate::tls::util::{self, load_cert_chain, load_key, load_ca_certs};
10+
use crate::tls::util::{load_cert_chain, load_key, load_ca_certs};
1111
use crate::listener::{Listener, Bindable, Connection, Certificates, Endpoint};
1212

1313
#[doc(inline)]
@@ -31,7 +31,7 @@ impl TlsConfig {
3131
pub(crate) fn server_config(&self) -> Result<ServerConfig, Error> {
3232
let provider = rustls::crypto::CryptoProvider {
3333
cipher_suites: self.ciphers().map(|c| c.into()).collect(),
34-
..util::get_crypto_provider()
34+
..rustls::crypto::ring::default_provider()
3535
};
3636

3737
#[cfg(feature = "mtls")]

core/lib/src/tls/util.rs

+1-16
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
use std::io;
22

33
use rustls::RootCertStore;
4-
use rustls::crypto::CryptoProvider;
54
use rustls::pki_types::{CertificateDer, PrivateKeyDer};
65

76
use crate::tls::error::{Result, Error, KeyError};
@@ -34,8 +33,7 @@ pub fn load_key(reader: &mut dyn io::BufRead) -> Result<PrivateKeyDer<'static>>
3433

3534
// Ensure we can use the key.
3635
let key = keys.remove(0);
37-
get_crypto_provider().key_provider.load_private_key(key.clone_key())
38-
.map_err(KeyError::Unsupported)?;
36+
rustls::crypto::ring::sign::any_supported_type(&key).map_err(KeyError::Unsupported)?;
3937
Ok(key)
4038
}
4139

@@ -49,19 +47,6 @@ pub fn load_ca_certs(reader: &mut dyn io::BufRead) -> Result<RootCertStore> {
4947
Ok(roots)
5048
}
5149

52-
pub(crate) fn get_crypto_provider() -> CryptoProvider {
53-
if let Some(crypto_provider) = rustls::crypto::CryptoProvider::get_default() {
54-
CryptoProvider::clone(crypto_provider)
55-
} else {
56-
let crypto_provider = rustls::crypto::ring::default_provider();
57-
// Should only fail due to other concurrent install, so we ignore it
58-
let _ = crypto_provider.clone().install_default();
59-
60-
crypto_provider
61-
}
62-
63-
}
64-
6550
#[cfg(test)]
6651
mod test {
6752
use super::*;

examples/tls/Cargo.toml

-1
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,4 @@ publish = false
77

88
[dependencies]
99
rocket = { path = "../../core/lib", features = ["tls", "mtls", "secrets", "http3-preview"] }
10-
rustls = { version = "0.23", features = ["aws_lc_rs"] }
1110
yansi = "1.0.1"

examples/tls/Rocket.toml

-4
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,6 @@ key = "private/ecdsa_nistp256_sha256_key_pkcs8.pem"
2525
certs = "private/ecdsa_nistp384_sha384_cert.pem"
2626
key = "private/ecdsa_nistp384_sha384_key_pkcs8.pem"
2727

28-
[ecdsa_nistp521_sha512_pkcs8.tls]
29-
certs = "private/ecdsa_nistp521_sha512_cert.pem"
30-
key = "private/ecdsa_nistp521_sha512_key_pkcs8.pem"
31-
3228
[ecdsa_nistp256_sha256_sec1.tls]
3329
certs = "private/ecdsa_nistp256_sha256_cert.pem"
3430
key = "private/ecdsa_nistp256_sha256_key_sec1.pem"
-1.74 KB
Binary file not shown.

examples/tls/private/ecdsa_nistp521_sha512_cert.pem

-23
This file was deleted.

examples/tls/private/ecdsa_nistp521_sha512_key_pkcs8.pem

-8
This file was deleted.

examples/tls/private/gen_certs.sh

-24
Original file line numberDiff line numberDiff line change
@@ -113,39 +113,15 @@ function gen_ecdsa_nistp384_sha384() {
113113
rm ca_cert.srl server.csr ecdsa_nistp384_sha384_key.pem
114114
}
115115

116-
function gen_ecdsa_nistp521_sha512() {
117-
gen_ca_if_non_existent
118-
119-
openssl ecparam -out ecdsa_nistp521_sha512_key.pem -name secp521r1 -genkey
120-
121-
# Convert to pkcs8 format supported by rustls
122-
openssl pkcs8 -topk8 -nocrypt -in ecdsa_nistp521_sha512_key.pem \
123-
-out ecdsa_nistp521_sha512_key_pkcs8.pem
124-
125-
openssl req -new -nodes -sha512 -key ecdsa_nistp521_sha512_key_pkcs8.pem \
126-
-subj "${SUBJECT}" -out server.csr
127-
128-
openssl x509 -req -sha512 -extfile <(printf "subjectAltName=${ALT}") -days 3650 \
129-
-CA ca_cert.pem -CAkey ca_key.pem -CAcreateserial \
130-
-in server.csr -out ecdsa_nistp521_sha512_cert.pem
131-
132-
openssl pkcs12 -export -password pass:rocket -in ecdsa_nistp521_sha512_cert.pem \
133-
-inkey ecdsa_nistp521_sha512_key_pkcs8.pem -out ecdsa_nistp521_sha512.p12
134-
135-
rm ca_cert.srl server.csr ecdsa_nistp521_sha512_key.pem
136-
}
137-
138116
case $1 in
139117
ed25519) gen_ed25519 ;;
140118
rsa_sha256) gen_rsa_sha256 ;;
141119
ecdsa_nistp256_sha256) gen_ecdsa_nistp256_sha256 ;;
142120
ecdsa_nistp384_sha384) gen_ecdsa_nistp384_sha384 ;;
143-
ecdsa_nistp521_sha512) gen_ecdsa_nistp521_sha512 ;;
144121
*)
145122
gen_ed25519
146123
gen_rsa_sha256
147124
gen_ecdsa_nistp256_sha256
148125
gen_ecdsa_nistp384_sha384
149-
gen_ecdsa_nistp521_sha512
150126
;;
151127
esac

examples/tls/src/tests.rs

+16-26
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,8 @@ fn insecure_cookies() {
6969
fn hello_world() {
7070
use rocket::listener::DefaultListener;
7171
use rocket::config::{Config, SecretKey};
72-
use rustls::crypto::aws_lc_rs;
7372

74-
let mut profiles = vec![
73+
let profiles = [
7574
"rsa_sha256",
7675
"ecdsa_nistp256_sha256_pkcs8",
7776
"ecdsa_nistp384_sha384_pkcs8",
@@ -80,29 +79,20 @@ fn hello_world() {
8079
"ed25519",
8180
];
8281

83-
for use_aws_lc in [false, true] {
84-
if use_aws_lc {
85-
let crypto_provider = aws_lc_rs::default_provider();
86-
crypto_provider.install_default().unwrap();
87-
88-
profiles.push("ecdsa_nistp521_sha512_pkcs8");
89-
}
90-
91-
for profile in &profiles {
92-
let config = Config {
93-
secret_key: SecretKey::generate().unwrap(),
94-
..Config::debug_default()
95-
};
96-
97-
let figment = Config::figment().merge(config).select(profile);
98-
let client = Client::tracked_secure(super::rocket().configure(figment)).unwrap();
99-
let response = client.get("/").dispatch();
100-
assert_eq!(response.into_string().unwrap(), "Hello, world!");
101-
102-
let figment = client.rocket().figment();
103-
let listener: DefaultListener = figment.extract().unwrap();
104-
assert_eq!(figment.profile(), profile);
105-
listener.tls.as_ref().unwrap().validate().expect("valid TLS config");
106-
}
82+
for profile in profiles {
83+
let config = Config {
84+
secret_key: SecretKey::generate().unwrap(),
85+
..Config::debug_default()
86+
};
87+
88+
let figment = Config::figment().merge(config).select(profile);
89+
let client = Client::tracked_secure(super::rocket().configure(figment)).unwrap();
90+
let response = client.get("/").dispatch();
91+
assert_eq!(response.into_string().unwrap(), "Hello, world!");
92+
93+
let figment = client.rocket().figment();
94+
let listener: DefaultListener = figment.extract().unwrap();
95+
assert_eq!(figment.profile(), profile);
96+
listener.tls.as_ref().unwrap().validate().expect("valid TLS config");
10797
}
10898
}

0 commit comments

Comments
 (0)