diff --git a/rs/crypto/internal/crypto_service_provider/src/builder/mod.rs b/rs/crypto/internal/crypto_service_provider/src/builder/mod.rs deleted file mode 100644 index 03feb92d80c..00000000000 --- a/rs/crypto/internal/crypto_service_provider/src/builder/mod.rs +++ /dev/null @@ -1,76 +0,0 @@ -use super::*; - -pub struct CspBuilder { - vault: Box Arc>, - logger: ReplicaLogger, - metrics: Arc, -} - -impl CspBuilder { - pub fn with_vault(self, vault: I) -> CspBuilder { - CspBuilder { - vault: Box::new(|| vault.into()), - 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( - vault: I, - logger: ReplicaLogger, - metrics: Arc, - ) -> CspBuilder { - CspBuilder { - vault: Box::new(|| vault.into()), - logger, - metrics, - } - } -} - -pub trait IntoVaultArc { - fn into(self) -> Arc; -} - -impl IntoVaultArc for Arc { - fn into(self) -> Arc { - self - } -} - -impl IntoVaultArc for V { - fn into(self) -> Arc { - Arc::new(self) - } -} - -impl IntoVaultArc for Arc { - fn into(self) -> Arc { - self - } -} - -#[cfg(test)] -mod test_utils { - use super::*; - - impl Csp { - pub fn builder_for_test() -> CspBuilder { - CspBuilder { - vault: Box::new(|| LocalCspVault::builder_for_test().build_into_arc()), - logger: no_op_logger(), - metrics: Arc::new(CryptoMetrics::none()), - } - } - } -} diff --git a/rs/crypto/internal/crypto_service_provider/src/builder_for_test/mod.rs b/rs/crypto/internal/crypto_service_provider/src/builder_for_test/mod.rs new file mode 100644 index 00000000000..6df32e5289d --- /dev/null +++ b/rs/crypto/internal/crypto_service_provider/src/builder_for_test/mod.rs @@ -0,0 +1,35 @@ +use super::*; + +pub struct CspBuilderForTest { + vault: Box Arc>, + logger: ReplicaLogger, + metrics: Arc, +} + +impl CspBuilderForTest { + pub fn with_vault(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()), + } + } +} diff --git a/rs/crypto/internal/crypto_service_provider/src/lib.rs b/rs/crypto/internal/crypto_service_provider/src/lib.rs index 3b4a715014f..77ea96489b7 100644 --- a/rs/crypto/internal/crypto_service_provider/src/lib.rs +++ b/rs/crypto/internal/crypto_service_provider/src/lib.rs @@ -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; @@ -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, logger: Option, @@ -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, + logger: ReplicaLogger, + metrics: Arc, + ) -> Self { + Csp { + csp_vault: vault, + logger, + metrics, + } } } diff --git a/rs/crypto/node_key_generation/src/lib.rs b/rs/crypto/node_key_generation/src/lib.rs index 709b189c6a6..ab5ae6d9f61 100644 --- a/rs/crypto/node_key_generation/src/lib.rs +++ b/rs/crypto/node_key_generation/src/lib.rs @@ -190,7 +190,7 @@ fn csp_for_config( config: &CryptoConfig, tokio_runtime_handle: Option, ) -> Csp { - Csp::new( + Csp::new_from_config( config, tokio_runtime_handle, None, diff --git a/rs/crypto/src/lib.rs b/rs/crypto/src/lib.rs index 9ccb4bcb5e7..28a35331c10 100644 --- a/rs/crypto/src/lib.rs +++ b/rs/crypto/src/lib.rs @@ -197,12 +197,11 @@ impl CryptoComponentImpl { 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"); diff --git a/rs/crypto/temp_crypto/src/lib.rs b/rs/crypto/temp_crypto/src/lib.rs index bf1d45feaf7..13b47a702f3 100644 --- a/rs/crypto/temp_crypto/src/lib.rs +++ b/rs/crypto/temp_crypto/src/lib.rs @@ -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 diff --git a/rs/crypto/tests/request_id_signatures.rs b/rs/crypto/tests/request_id_signatures.rs index 32d3c3067e5..87594bfeda7 100644 --- a/rs/crypto/tests/request_id_signatures.rs +++ b/rs/crypto/tests/request_id_signatures.rs @@ -409,7 +409,7 @@ fn ecdsa_secp256k1_signature_and_public_key( 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) diff --git a/rs/crypto/tests/webauthn_signatures.rs b/rs/crypto/tests/webauthn_signatures.rs index 6edc7498fe4..7cb48157e0d 100644 --- a/rs/crypto/tests/webauthn_signatures.rs +++ b/rs/crypto/tests/webauthn_signatures.rs @@ -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)