quickseal 0.1.4

Create Kubernetes SealedSecrets with a single secure command
Documentation
//! Secure memory handling utilities

use zeroize::Zeroize;

/// Secure string wrapper that zeros memory on drop
pub type SecureString = zeroize::Zeroizing<String>;

/// Secure bytes wrapper that zeros memory on drop
pub type SecureBytes = zeroize::Zeroizing<Vec<u8>>;

/// Trait for types that can be securely cleared
pub trait SecureClear {
    fn secure_clear(&mut self);
}

impl SecureClear for String {
    fn secure_clear(&mut self) {
        self.zeroize();
    }
}

impl SecureClear for Vec<u8> {
    fn secure_clear(&mut self) {
        self.zeroize();
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_secure_string_zeros_on_drop() {
        let secure_str = SecureString::new("sensitive_data".to_string());
        drop(secure_str);
        // Memory has been zeroed - no way to verify in safe Rust but zeroize does this
    }
}