#[cfg(feature = "hashicorp-vault")]
use crate::hashicorp_vault_key_manager::HashicorpVaultKeyManagerConfig;
use crate::{
errors::Result, file_key_manager::FileKeyManagerConfig,
in_memory_key_manager::InMemoryKeyManagerConfig,
};
#[cfg(test)]
mod unit_tests;
#[derive(Constructor, Debug, Deserialize, Eq, PartialEq, Serialize, Clone)]
pub struct KryptConfig {
pub key_manager_config: KeyManagerConfig,
}
#[derive(Debug, Deserialize, Eq, PartialEq, Serialize, Clone)]
pub enum KeyManagerConfig {
FileKeyManager(FileKeyManagerConfig),
InMemoryKeyManager(InMemoryKeyManagerConfig),
#[cfg(feature = "hashicorp-vault")]
HashicorpVaultKeyManager(HashicorpVaultKeyManagerConfig),
}
pub trait ConfigValidation {
fn validate(&self) -> Result<()>;
}
impl ConfigValidation for KryptConfig {
fn validate(&self) -> Result<()> {
match &self.key_manager_config {
KeyManagerConfig::FileKeyManager(config) => config.validate(),
KeyManagerConfig::InMemoryKeyManager(config) => config.validate(),
#[cfg(feature = "hashicorp-vault")]
KeyManagerConfig::HashicorpVaultKeyManager(config) => config.validate(),
}
}
}