summaryrefslogtreecommitdiffhomepage
path: root/mullvad-api
diff options
context:
space:
mode:
authorSebastian Holmin <sebastian.holmin@mullvad.net>2024-09-30 15:54:49 +0200
committerSebastian Holmin <sebastian.holmin@mullvad.net>2024-10-16 09:56:47 +0200
commit088b1f68db4268e923d011ea79c05f6c46ca72f2 (patch)
treef2e44f7a365df9304e54e6b9037f739c3195afcc /mullvad-api
parent23c44da3d1099699653b49676f5f0c1c35dd7953 (diff)
downloadmullvadvpn-088b1f68db4268e923d011ea79c05f6c46ca72f2.tar.xz
mullvadvpn-088b1f68db4268e923d011ea79c05f6c46ca72f2.zip
Update `rustls` in `tls_stream.rs`
Diffstat (limited to 'mullvad-api')
-rw-r--r--mullvad-api/Cargo.toml2
-rw-r--r--mullvad-api/src/tls_stream.rs23
2 files changed, 13 insertions, 12 deletions
diff --git a/mullvad-api/Cargo.toml b/mullvad-api/Cargo.toml
index c3d11afdea..7799903cd7 100644
--- a/mullvad-api/Cargo.toml
+++ b/mullvad-api/Cargo.toml
@@ -28,7 +28,7 @@ log = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
tokio = { workspace = true, features = ["macros", "time", "rt-multi-thread", "net", "io-std", "io-util", "fs"] }
-tokio-rustls = "0.26.0"
+tokio-rustls = { version = "0.26.0", features = ["logging", "tls12", "ring"], default-features = false}
tokio-socks = "0.5.1"
rustls-pemfile = "2.1.3"
diff --git a/mullvad-api/src/tls_stream.rs b/mullvad-api/src/tls_stream.rs
index bf4ff336f5..b36de484e8 100644
--- a/mullvad-api/src/tls_stream.rs
+++ b/mullvad-api/src/tls_stream.rs
@@ -6,11 +6,11 @@ use std::{
task::{self, Poll},
};
-use hyper::client::connect::{Connected, Connection};
+use hyper_util::client::legacy::connect::{Connected, Connection};
use std::sync::LazyLock;
use tokio::io::{AsyncRead, AsyncWrite, ReadBuf};
use tokio_rustls::{
- rustls::{self, ClientConfig, ServerName},
+ rustls::{self, pki_types::ServerName, ClientConfig},
TlsConnector,
};
@@ -26,19 +26,19 @@ where
{
pub async fn connect_https(stream: S, domain: &str) -> io::Result<TlsStream<S>> {
static TLS_CONFIG: LazyLock<Arc<ClientConfig>> = LazyLock::new(|| {
- let config = ClientConfig::builder()
- .with_safe_default_cipher_suites()
- .with_safe_default_kx_groups()
- .with_protocol_versions(&[&rustls::version::TLS13])
- .unwrap()
- .with_root_certificates(read_cert_store())
- .with_no_client_auth();
+ let config = ClientConfig::builder_with_provider(Arc::new(
+ rustls::crypto::ring::default_provider(),
+ ))
+ .with_protocol_versions(&[&rustls::version::TLS13])
+ .expect("ring crypt-prover should support TLS 1.3")
+ .with_root_certificates(read_cert_store())
+ .with_no_client_auth();
Arc::new(config)
});
let connector = TlsConnector::from(TLS_CONFIG.clone());
- let host = match ServerName::try_from(domain) {
+ let host = match ServerName::try_from(domain.to_owned()) {
Ok(n) => n,
Err(_) => {
return Err(io::Error::new(
@@ -58,8 +58,9 @@ fn read_cert_store() -> rustls::RootCertStore {
let mut cert_store = rustls::RootCertStore::empty();
let certs = rustls_pemfile::certs(&mut std::io::BufReader::new(LE_ROOT_CERT))
+ .collect::<Result<Vec<_>, _>>()
.expect("Failed to parse pem file");
- let (num_certs_added, num_failures) = cert_store.add_parsable_certificates(&certs);
+ let (num_certs_added, num_failures) = cert_store.add_parsable_certificates(certs);
if num_failures > 0 || num_certs_added != 1 {
panic!("Failed to add root cert");
}