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