31 lines
1.2 KiB
Rust
31 lines
1.2 KiB
Rust
|
|
//! `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();
|
||
|
|
}
|