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
26pub fn get_secrets_provider(kind: SecretsProviderKind) -> Arc<dyn SecretsProvider> {
27    match kind {
28        SecretsProviderKind::Environment { prefix } => Arc::new(
29            providers::environment::EnvironmentSecretsProvider::new(prefix),
30        ),
31        #[cfg(feature = "aws")]
32        SecretsProviderKind::Aws { region } => {
33            Arc::new(providers::aws::AwsSecretsManagerProvider::new(region))
34        }
35        #[cfg(feature = "gcp")]
36        SecretsProviderKind::Gcp { project_id } => {
37            Arc::new(providers::gcp::GcpSecretManagerProvider::new(project_id))
38        }
39    }
40}