pub mod engine;
pub mod keys;
pub mod secrets;
pub mod errors;
pub mod algorithm;
pub mod store;
pub mod mock;
pub mod security;
pub use engine::{CryptoEngine, PerformanceProfile, EncryptionOptions, PerformanceBenchmark, BatchEncryptionResult};
pub use keys::{DerivedKey, KeyDerivationParams, SecureRandom};
pub use secrets::{EncryptedSecret, PlaintextSecret, SecretMetadata, SecretType};
pub use errors::{CryptoError, CryptoResult};
pub use algorithm::{Algorithm, AlgorithmExt};
pub use store::{SecretStore, MemorySecretStore};
pub use security::{SecureBuffer, SecureRandom as SecurityRandom, TimingDefense, KeyDerivationValidator, constant_time_compare};
pub use chacha20poly1305::{ChaCha20Poly1305, Key, Nonce};
pub use argon2::Argon2;
pub mod defaults {
use argon2::{Algorithm, Params, Version};
pub const ARGON2_PARAMS: Params = match Params::new(
65536, 3, 4, Some(32), ) {
Ok(params) => params,
Err(_) => panic!("Invalid default Argon2 parameters"),
};
pub const ARGON2_ALGORITHM: Algorithm = Algorithm::Argon2id;
pub const ARGON2_VERSION: Version = Version::V0x13;
pub const SALT_LENGTH: usize = 32;
pub const NONCE_LENGTH: usize = 12;
pub const KEY_LENGTH: usize = 32;
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_module_exports() {
let _engine = CryptoEngine::new();
assert!(true, "Module exports are accessible");
}
}