pub mod encryption;
pub mod fips;
pub mod signatures;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CryptoConfig {
pub enable_pq_signatures: bool,
pub hash_version: HashVersion,
pub fips_mode: bool,
pub enable_self_tests: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum HashVersion {
CompositeV1,
Sha512Fips,
}
impl Default for CryptoConfig {
fn default() -> Self {
CryptoConfig {
enable_pq_signatures: true,
hash_version: HashVersion::CompositeV1,
fips_mode: true, enable_self_tests: true,
}
}
}
impl CryptoConfig {
pub fn load() -> Self {
Self::default()
}
pub fn fips_strict() -> Self {
CryptoConfig {
enable_pq_signatures: false, hash_version: HashVersion::Sha512Fips,
fips_mode: true,
enable_self_tests: true,
}
}
}
#[derive(Debug, Clone, PartialEq)]
pub enum FipsState {
PowerOn,
Approved,
Error,
}