Skip to content

Commit

Permalink
refactor(crypto): CRP-2382 cleanup CSP constructors
Browse files Browse the repository at this point in the history
  • Loading branch information
fspreiss committed Feb 21, 2024
1 parent a359316 commit 0de37de
Show file tree
Hide file tree
Showing 8 changed files with 66 additions and 95 deletions.
76 changes: 0 additions & 76 deletions rs/crypto/internal/crypto_service_provider/src/builder/mod.rs

This file was deleted.

@@ -0,0 +1,35 @@
use super::*;

pub struct CspBuilderForTest {
vault: Box<dyn FnOnce() -> Arc<dyn CspVault>>,
logger: ReplicaLogger,
metrics: Arc<CryptoMetrics>,
}

impl CspBuilderForTest {
pub fn with_vault<V: CspVault + 'static>(self, vault: V) -> Self {
Self {
vault: Box::new(|| Arc::new(vault)),
logger: self.logger,
metrics: self.metrics,
}
}

pub fn build(self) -> Csp {
Csp {
csp_vault: (self.vault)(),
logger: self.logger,
metrics: self.metrics,
}
}
}

impl Csp {
pub fn builder_for_test() -> CspBuilderForTest {
CspBuilderForTest {
vault: Box::new(|| LocalCspVault::builder_for_test().build_into_arc()),
logger: no_op_logger(),
metrics: Arc::new(CryptoMetrics::none()),
}
}
}
19 changes: 16 additions & 3 deletions rs/crypto/internal/crypto_service_provider/src/lib.rs
Expand Up @@ -5,7 +5,8 @@
//! Interface for the cryptographic service provider

pub mod api;
pub mod builder;
#[cfg(test)]
pub mod builder_for_test;
pub mod canister_threshold;
#[cfg(test)]
pub mod imported_test_utils;
Expand Down Expand Up @@ -156,7 +157,7 @@ impl Csp {
/// # Panics
/// Panics if the `config`'s vault type is `UnixSocket` and
/// `tokio_runtime_handle` is `None`.
pub fn new(
pub fn new_from_config(
config: &CryptoConfig,
tokio_runtime_handle: Option<tokio::runtime::Handle>,
logger: Option<ReplicaLogger>,
Expand All @@ -169,7 +170,19 @@ impl Csp {
new_logger!(&logger),
Arc::clone(&metrics),
);
Csp::builder(vault, logger, metrics).build()
Self::new_from_vault(vault, logger, metrics)
}

pub fn new_from_vault(
vault: Arc<dyn CspVault>,
logger: ReplicaLogger,
metrics: Arc<CryptoMetrics>,
) -> Self {
Csp {
csp_vault: vault,
logger,
metrics,
}
}
}

Expand Down
2 changes: 1 addition & 1 deletion rs/crypto/node_key_generation/src/lib.rs
Expand Up @@ -190,7 +190,7 @@ fn csp_for_config(
config: &CryptoConfig,
tokio_runtime_handle: Option<tokio::runtime::Handle>,
) -> Csp {
Csp::new(
Csp::new_from_config(
config,
tokio_runtime_handle,
None,
Expand Down
5 changes: 2 additions & 3 deletions rs/crypto/src/lib.rs
Expand Up @@ -197,12 +197,11 @@ impl CryptoComponentImpl<Csp> {
new_logger!(&logger),
Arc::clone(&metrics),
);
let csp = Csp::builder(
let csp = Csp::new_from_vault(
Arc::clone(&vault),
new_logger!(&logger),
Arc::clone(&metrics),
)
.build();
);
let node_pks = csp
.current_node_public_keys()
.expect("Failed to retrieve node public keys");
Expand Down
20 changes: 10 additions & 10 deletions rs/crypto/temp_crypto/src/lib.rs
Expand Up @@ -282,23 +282,23 @@ pub mod internal {
});

let csp = if let Some(env) = &opt_remote_vault_environment {
Csp::builder(
env.new_vault_client_builder()
.with_logger(new_logger!(logger))
.with_metrics(Arc::clone(&metrics))
.build()
.expect("Failed to build a vault client"),
let vault_client = env
.new_vault_client_builder()
.with_logger(new_logger!(logger))
.with_metrics(Arc::clone(&metrics))
.build()
.expect("Failed to build a vault client");
Csp::new_from_vault(
Arc::new(vault_client),
new_logger!(logger),
Arc::clone(&metrics),
)
.build()
} else {
Csp::builder(
Arc::clone(&local_vault),
Csp::new_from_vault(
Arc::clone(&local_vault) as _,
new_logger!(logger),
Arc::clone(&metrics),
)
.build()
};

let node_keys_to_generate = self
Expand Down
2 changes: 1 addition & 1 deletion rs/crypto/tests/request_id_signatures.rs
Expand Up @@ -409,7 +409,7 @@ fn ecdsa_secp256k1_signature_and_public_key<R: Rng + CryptoRng>(
fn crypto_component(config: &CryptoConfig) -> CryptoComponent {
let dummy_registry = FakeRegistryClient::new(Arc::new(ProtoRegistryDataProvider::new()));

let csp = Csp::new(config, None, None, Arc::new(CryptoMetrics::none()));
let csp = Csp::new_from_config(config, None, None, Arc::new(CryptoMetrics::none()));
ic_crypto_node_key_generation::generate_node_signing_keys(&csp);

CryptoComponent::new(config, None, Arc::new(dummy_registry), no_op_logger(), None)
Expand Down
2 changes: 1 addition & 1 deletion rs/crypto/tests/webauthn_signatures.rs
Expand Up @@ -151,7 +151,7 @@ fn rsa_verification_data(
fn crypto_component(config: &CryptoConfig) -> CryptoComponent {
let dummy_registry = FakeRegistryClient::new(Arc::new(ProtoRegistryDataProvider::new()));

let csp = Csp::new(config, None, None, Arc::new(CryptoMetrics::none()));
let csp = Csp::new_from_config(config, None, None, Arc::new(CryptoMetrics::none()));
ic_crypto_node_key_generation::generate_node_signing_keys(&csp);

CryptoComponent::new(config, None, Arc::new(dummy_registry), no_op_logger(), None)
Expand Down

0 comments on commit 0de37de

Please sign in to comment.