codex_utils_rustls_provider/
lib.rs1use std::sync::Once;
2
3const REQUIRED_SIGNATURE_SCHEME: rustls::SignatureScheme =
4 rustls::SignatureScheme::ECDSA_NISTP521_SHA512;
5
6pub fn ensure_rustls_crypto_provider() {
11 static RUSTLS_PROVIDER_INIT: Once = Once::new();
12 RUSTLS_PROVIDER_INIT.call_once(|| {
13 if rustls::crypto::aws_lc_rs::default_provider()
16 .install_default()
17 .is_err()
18 {
19 return;
22 }
23
24 let Some(provider) = rustls::crypto::CryptoProvider::get_default() else {
25 panic!("aws-lc-rs rustls crypto provider should be installed");
26 };
27 assert!(
28 provider_supports_required_signature_scheme(provider),
29 "installed rustls crypto provider must support {REQUIRED_SIGNATURE_SCHEME:?}"
30 );
31 });
32}
33
34fn provider_supports_required_signature_scheme(provider: &rustls::crypto::CryptoProvider) -> bool {
35 provider
36 .signature_verification_algorithms
37 .supported_schemes()
38 .contains(&REQUIRED_SIGNATURE_SCHEME)
39}