Skip to main content

haste_encryption/
lib.rs

1mod error;
2
3pub mod encryption;
4pub mod providers;
5pub mod traits;
6
7pub use error::EncryptionError;
8pub use traits::{Encryptor, Secret, SecretsProvider};
9
10use std::sync::Arc;
11
12pub enum SecretsProviderKind {
13    Environment {
14        prefix: Option<String>,
15    },
16    #[cfg(feature = "aws")]
17    Aws {
18        region: String,
19    },
20    #[cfg(feature = "gcp")]
21    Gcp {
22        project_id: String,
23    },
24}
25
26#[must_use]
27pub fn get_secrets_provider(kind: SecretsProviderKind) -> Arc<dyn SecretsProvider> {
28    match kind {
29        SecretsProviderKind::Environment { prefix } => Arc::new(
30            providers::environment::EnvironmentSecretsProvider::new(prefix),
31        ),
32        #[cfg(feature = "aws")]
33        SecretsProviderKind::Aws { region } => {
34            Arc::new(providers::aws::AwsSecretsManagerProvider::new(region))
35        }
36        #[cfg(feature = "gcp")]
37        SecretsProviderKind::Gcp { project_id } => {
38            Arc::new(providers::gcp::GcpSecretManagerProvider::new(project_id))
39        }
40    }
41}