Skip to main content

hypercall/
rustls_provider.rs

1use std::sync::Once;
2
3static INSTALL_DEFAULT_RUSTLS_PROVIDER: Once = Once::new();
4
5/// Ensure rustls has a process-wide crypto provider before TLS clients are built.
6pub fn ensure_default_rustls_crypto_provider() {
7    INSTALL_DEFAULT_RUSTLS_PROVIDER.call_once(|| {
8        if rustls::crypto::CryptoProvider::get_default().is_none() {
9            let _ = rustls::crypto::ring::default_provider().install_default();
10            assert!(
11                rustls::crypto::CryptoProvider::get_default().is_some(),
12                "failed to install default rustls crypto provider"
13            );
14        }
15    });
16}