Skip to main content

age_setup/security/
zeroize.rs

1//! Memory zeroization utilities.
2
3use crate::errors::Result;
4use zeroize::Zeroize;
5
6/// Securely overwrites a byte slice with zeros.
7///
8/// This function uses the `zeroize` crate to prevent compiler optimizations.
9/// It always returns `Ok(())`; the `Result` is kept for future extensibility.
10#[must_use = "wipe_memory should be called to ensure memory is cleared"]
11pub(crate) fn wipe_memory(data: &mut [u8]) -> Result<()> {
12    data.zeroize();
13    Ok(())
14}
15#[cfg(test)]
16mod tests {
17    use super::*;
18
19    #[test]
20    fn test_wipe_memory_zeroizes() {
21        let mut data = vec![1, 2, 3, 4];
22        let result = wipe_memory(&mut data);
23        assert!(result.is_ok());
24        assert_eq!(data, vec![0, 0, 0, 0]);
25    }
26}