Skip to content

Commit 41624be

Browse files
committed
Changes crypto provider configuration build failure to return an error instead of panic
1 parent 9ba1cde commit 41624be

File tree

4 files changed

+13
-7
lines changed

4 files changed

+13
-7
lines changed

client/swimos_client/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ impl SwimClientTlsBuilder {
140140
RustlsClientNetworking::build(
141141
Arc::new(Resolver::new().await),
142142
tls_config,
143-
crypto_provider.build(),
143+
crypto_provider.try_build()?,
144144
)?,
145145
)
146146
.await)

runtime/swimos_remote/src/tls/errors.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,6 @@ pub enum TlsError {
3232
/// Performing the TLS handshake failed.
3333
#[error("TLS handshake failed: {0}")]
3434
HandshakeFailed(std::io::Error),
35+
#[error("Invalid cryptographic provider configured: {0}")]
36+
InvalidCryptoProvider(String),
3537
}

runtime/swimos_remote/src/tls/mod.rs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,15 @@ pub enum CryptoProviderConfig {
3535
}
3636

3737
impl CryptoProviderConfig {
38-
pub fn build(self) -> Arc<CryptoProvider> {
38+
pub fn try_build(self) -> Result<Arc<CryptoProvider>, TlsError> {
3939
match self {
4040
CryptoProviderConfig::ProcessDefault => CryptoProvider::get_default()
41-
.expect("No default cryptographic provider specified")
42-
.clone(),
41+
.ok_or_else(|| {
42+
TlsError::InvalidCryptoProvider(
43+
"No default cryptographic provider specified".to_string(),
44+
)
45+
})
46+
.cloned(),
4347
CryptoProviderConfig::FromFeatureFlags => {
4448
#[cfg(all(feature = "ring_provider", not(feature = "aws_lc_rs_provider")))]
4549
{
@@ -53,10 +57,10 @@ impl CryptoProviderConfig {
5357

5458
#[allow(unreachable_code)]
5559
{
56-
panic!("Ambiguous cryptographic provider feature flags specified. Only \"ring_provider\" or \"aws_lc_rs_provider\" may be specified")
60+
Err(TlsError::InvalidCryptoProvider("Ambiguous cryptographic provider feature flags specified. Only \"ring_provider\" or \"aws_lc_rs_provider\" may be specified".to_string()))
5761
}
5862
}
59-
CryptoProviderConfig::Provided(provider) => provider,
63+
CryptoProviderConfig::Provided(provider) => Ok(provider),
6064
}
6165
}
6266
}

server/swimos_server_app/src/server/builder/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ impl ServerBuilder {
200200
deflate,
201201
introspection,
202202
};
203-
let crypto_provider = crypto_provider.build();
203+
let crypto_provider = crypto_provider.try_build()?;
204204

205205
if let Some(tls_conf) = tls_config {
206206
let client =

0 commit comments

Comments
 (0)