pub struct CryptoProvider {
pub fips_enabled: bool,
pub validation_enabled: bool,
pub fips_mode: bool,
pub module_initialized: Arc<AtomicBool>,
pub self_tests_passed: Arc<AtomicBool>,
}Fields§
§fips_enabled: bool§validation_enabled: bool§fips_mode: bool§module_initialized: Arc<AtomicBool>§self_tests_passed: Arc<AtomicBool>Implementations§
Source§impl CryptoProvider
impl CryptoProvider
pub fn new(fips_enabled: bool, validation_enabled: bool) -> Result<Self>
Sourcepub fn initialize(&mut self) -> Result<()>
pub fn initialize(&mut self) -> Result<()>
Initialize the cryptographic provider with FIPS compliance
Sourcepub fn hash_sha256(&self, data: &[u8]) -> Result<[u8; 32]>
pub fn hash_sha256(&self, data: &[u8]) -> Result<[u8; 32]>
FIPS-compliant SHA-256 hash using OpenSSL
Sourcepub fn hash_sha512(&self, data: &[u8]) -> Result<[u8; 64]>
pub fn hash_sha512(&self, data: &[u8]) -> Result<[u8; 64]>
FIPS-compliant SHA-512 hash using OpenSSL
Sourcepub fn hash_alternative(&self, data: &[u8]) -> Result<Vec<u8>>
pub fn hash_alternative(&self, data: &[u8]) -> Result<Vec<u8>>
FIPS-compliant alternative hash (SHA-512 in FIPS mode, SHA-256 otherwise)
Sourcepub fn generate_random(&self, size: usize) -> Result<Vec<u8>>
pub fn generate_random(&self, size: usize) -> Result<Vec<u8>>
FIPS-compliant random number generation using OpenSSL
Sourcepub fn derive_key_pbkdf2(
&self,
password: &[u8],
salt: &[u8],
iterations: u32,
key_len: usize,
) -> Result<Vec<u8>>
pub fn derive_key_pbkdf2( &self, password: &[u8], salt: &[u8], iterations: u32, key_len: usize, ) -> Result<Vec<u8>>
FIPS-compliant PBKDF2 key derivation using OpenSSL
Sourcepub fn derive_key_hkdf(
&self,
secret: &[u8],
salt: &[u8],
info: &[u8],
key_len: usize,
) -> Result<Vec<u8>>
pub fn derive_key_hkdf( &self, secret: &[u8], salt: &[u8], info: &[u8], key_len: usize, ) -> Result<Vec<u8>>
FIPS-compliant HKDF key derivation using the hkdf crate
Sourcepub fn encrypt_aes_gcm(
&self,
key: &[u8],
nonce: &[u8],
plaintext: &[u8],
aad: &[u8],
) -> Result<(Vec<u8>, Vec<u8>)>
pub fn encrypt_aes_gcm( &self, key: &[u8], nonce: &[u8], plaintext: &[u8], aad: &[u8], ) -> Result<(Vec<u8>, Vec<u8>)>
AES-256-GCM encryption (FIPS approved)
Sourcepub fn decrypt_aes_gcm(
&self,
key: &[u8],
nonce: &[u8],
ciphertext: &[u8],
aad: &[u8],
tag: &[u8],
) -> Result<Vec<u8>>
pub fn decrypt_aes_gcm( &self, key: &[u8], nonce: &[u8], ciphertext: &[u8], aad: &[u8], tag: &[u8], ) -> Result<Vec<u8>>
AES-256-GCM decryption (FIPS approved)
Sourcepub fn get_fips_status(&self) -> FipsStatus
pub fn get_fips_status(&self) -> FipsStatus
Get FIPS status with OpenSSL information
Sourcepub fn validate_fips_compliance(&mut self) -> Result<()>
pub fn validate_fips_compliance(&mut self) -> Result<()>
Validate FIPS compliance
Sourcepub fn get_fips_server_config(
&self,
cert_path: &Path,
key_path: &Path,
) -> Result<ServerConfig>
pub fn get_fips_server_config( &self, cert_path: &Path, key_path: &Path, ) -> Result<ServerConfig>
Create FIPS-compliant server configuration using rustls with OpenSSL backend
Sourcepub fn get_fips_client_config(&self) -> Result<ClientConfig>
pub fn get_fips_client_config(&self) -> Result<ClientConfig>
Create FIPS-compliant client configuration
Trait Implementations§
Source§impl Clone for CryptoProvider
impl Clone for CryptoProvider
Source§fn clone(&self) -> CryptoProvider
fn clone(&self) -> CryptoProvider
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for CryptoProvider
impl RefUnwindSafe for CryptoProvider
impl Send for CryptoProvider
impl Sync for CryptoProvider
impl Unpin for CryptoProvider
impl UnwindSafe for CryptoProvider
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more