//! `open_wire` must not depend on how the consumer's feature graph resolves a //! rustls provider — it installs the process default itself, first. //! //! This is the belt-and-braces half of the fix for the on-device "Failed to //! start / Could not automatically determine the process-level CryptoProvider" //! screen; the primary fix is the `rustls` `ring` feature in `Cargo.toml`, //! covered by `tests/provider_resolution.rs`. Kept in its own test binary on //! purpose: installing a provider here would mask that test if they shared a //! process. #[test] fn sdk_installs_the_process_default_provider() { assert!( rustls::crypto::CryptoProvider::get_default().is_none(), "this test must start with no provider installed" ); onionwire_sdk::install_crypto_provider(); assert!( rustls::crypto::CryptoProvider::get_default().is_some(), "install_crypto_provider() left the process without a default provider" ); // Second call: idempotent, not a panic and not an error. onionwire_sdk::install_crypto_provider(); // The call Arti makes that blew up on device. let _ = rustls::ClientConfig::builder(); }