byte_array_ops/security/
zeroize.rs1use crate::ByteArray;
2use zeroize::Zeroize;
3
4impl Drop for ByteArray {
5 fn drop(&mut self) {
6 self.bytes.zeroize();
7 }
8}
9#[cfg(test)]
10mod tests {
11 use crate::try_hex;
12 use zeroize::Zeroize;
13
14 #[test]
15 #[allow(unsafe_code)]
16 fn test_zeroize() {
17 unsafe {
18 let mut byte_array = try_hex!("deadbeef").unwrap();
19 let ptr = byte_array.bytes.as_ptr();
20 let zero_ptr = ptr;
21 let len = byte_array.len();
22
23 assert_eq!(*ptr, 0xde);
24 let ptr_1 = ptr.add(1);
25 assert_eq!(*ptr_1, 0xad);
26 let ptr_2 = ptr_1.add(1);
27 assert_eq!(*ptr_2, 0xbe);
28 let ptr_3 = ptr_2.add(1);
29 assert_eq!(*ptr_3, 0xef);
30
31 byte_array.bytes.zeroize();
32
33 for i in 0..len {
36 assert_eq!(*zero_ptr.add(i), 0x00, "panicked on index : {i}");
37 }
38 }
39 }
40}