Skip to content

Commit

Permalink
rename components
Browse files Browse the repository at this point in the history
  • Loading branch information
Chethan-rao committed Feb 5, 2024
1 parent b93672a commit de4999a
Show file tree
Hide file tree
Showing 7 changed files with 17 additions and 25 deletions.
2 changes: 1 addition & 1 deletion crates/external_services/src/aws_kms.rs
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ impl SecretManagementInterface for AwsKmsClient {
) -> CustomResult<Secret<String>, SecretsManagementError> {
self.decrypt(input.peek())
.await
.change_context(SecretsManagementError::DecryptionFailed)
.change_context(SecretsManagementError::FetchSecretFailed)
.map(Into::into)
}
}
Expand Down
2 changes: 1 addition & 1 deletion crates/external_services/src/hashicorp_vault.rs
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ impl SecretManagementInterface for HashiCorpVault {
self.fetch::<Kv2, Secret<String>>(input.expose())
.await
.map(|val| val.expose().to_owned())
.change_context(SecretsManagementError::DecryptionFailed)
.change_context(SecretsManagementError::FetchSecretFailed)
.map(Into::into)
}
}
2 changes: 1 addition & 1 deletion crates/external_services/src/no_encryption.rs
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,6 @@ impl SecretManagementInterface for NoEncryption {
String::from_utf8(self.decrypt(input.expose()))
.map(Into::into)
.into_report()
.change_context(SecretsManagementError::DecryptionFailed)
.change_context(SecretsManagementError::FetchSecretFailed)
}
}
8 changes: 2 additions & 6 deletions crates/external_services/src/secrets_management.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,16 +55,12 @@ impl SecretsManagementConfig {
) -> CustomResult<Box<dyn SecretManagementInterface>, SecretsManagementError> {
match self {
#[cfg(feature = "aws_kms")]
Self::AwsKms { aws_kms } => Ok::<_, error_stack::Report<SecretsManagementError>>(
Box::new(aws_kms::AwsKmsClient::new(aws_kms).await),
),
Self::AwsKms { aws_kms } => Ok(Box::new(aws_kms::AwsKmsClient::new(aws_kms).await)),
#[cfg(feature = "hashicorp-vault")]
Self::HashiCorpVault { hc_vault } => hashicorp_vault::HashiCorpVault::new(hc_vault)
.change_context(SecretsManagementError::ClientCreationFailed)
.map(|inner| -> Box<dyn SecretManagementInterface> { Box::new(inner) }),
Self::NoEncryption => {
Ok::<_, error_stack::Report<SecretsManagementError>>(Box::new(NoEncryption))
}
Self::NoEncryption => Ok(Box::new(NoEncryption)),
}
}
}
16 changes: 6 additions & 10 deletions crates/secrets_interface/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
#![warn(missing_docs, missing_debug_implementations)]

pub mod decryption;
pub mod secret_handler;

pub mod type_state;
pub mod secret_state;

use common_utils::errors::CustomResult;
use masking::Secret;
Expand All @@ -28,15 +28,11 @@ pub trait SecretManagementInterface: Send + Sync {
/// Errors that may occur during secret management
#[derive(Debug, thiserror::Error)]
pub enum SecretsManagementError {
/// An error occurred when decrypting input data.
#[error("Failed to decrypt input data")]
DecryptionFailed,

/// An error occurred when encrypting input data.
#[error("Failed to encrypt input data")]
EncryptionFailed,
/// An error occurred when retrieving raw data.
#[error("Failed to fetch the raw data")]
FetchSecretFailed,

/// Failed while creating kms client
#[error("Failed while creating a new client")]
#[error("Failed while creating a secrets management client")]
ClientCreationFailed,
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
use common_utils::errors::CustomResult;

use crate::{
type_state::{RawSecret, SecretStateContainer, SecuredSecret},
secret_state::{RawSecret, SecretStateContainer, SecuredSecret},
SecretManagementInterface, SecretsManagementError,
};

Expand All @@ -13,8 +13,8 @@ pub trait SecretsHandler
where
Self: Sized,
{
/// Retrieve the raw value and transitions its type to `Decrypted`
async fn decrypt(
/// Construct `Self` with raw secret value and transitions its type from `SecuredSecret` to `RawSecret`
async fn convert_to_raw_secret(
value: SecretStateContainer<Self, SecuredSecret>,
kms_client: Box<dyn SecretManagementInterface>,
) -> CustomResult<SecretStateContainer<Self, RawSecret>, SecretsManagementError>;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ use std::marker::PhantomData;

use serde::{Deserialize, Deserializer};

/// Trait defining encryption states
/// Trait defining the states of a secret
pub trait SecretState {}

/// Decrypted state
Expand Down Expand Up @@ -57,8 +57,8 @@ impl<'de, T: Deserialize<'de>, S: SecretState> Deserialize<'de> for SecretStateC
}

impl<T> SecretStateContainer<T, SecuredSecret> {
/// Decrypts the inner value using the provided decryption function
pub fn decrypt(
/// Transition the secret state from `SecuredSecret` to `RawSecret`
pub fn transition_state(
mut self,
decryptor_fn: impl FnOnce(T) -> T,
) -> SecretStateContainer<T, RawSecret> {
Expand Down

0 comments on commit de4999a

Please sign in to comment.