use zeroize::Zeroize;
pub type SecureString = zeroize::Zeroizing<String>;
pub type SecureBytes = zeroize::Zeroizing<Vec<u8>>;
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);
}
}