byte-array-ops 0.4.0

A no_std-compatible library for security-by-default byte array operations. Includes automatic memory zeroization, constant-time utilities, multiple input formats (hex, binary, UTF-8), bitwise operations, and comprehensive type conversions with minimal dependencies.
Documentation
use crate::ByteArray;
use zeroize::Zeroize;

impl Drop for ByteArray {
    /// zeroizes [`ByteArray`] before dropping it
    ///
    fn drop(&mut self) {
        self.bytes.zeroize();
    }
}
#[cfg(test)]
mod tests {
    use crate::try_hex;
    use zeroize::Zeroize;

    #[test]
    #[allow(unsafe_code)]
    fn test_zeroize() {
        unsafe {
            let mut byte_array = try_hex!("deadbeef").unwrap();
            let ptr = byte_array.bytes.as_ptr();
            let zero_ptr = ptr;
            let len = byte_array.len();

            assert_eq!(*ptr, 0xde);
            let ptr_1 = ptr.add(1);
            assert_eq!(*ptr_1, 0xad);
            let ptr_2 = ptr_1.add(1);
            assert_eq!(*ptr_2, 0xbe);
            let ptr_3 = ptr_2.add(1);
            assert_eq!(*ptr_3, 0xef);

            byte_array.bytes.zeroize();

            // assert zeroize worked

            for i in 0..len {
                assert_eq!(*zero_ptr.add(i), 0x00, "panicked on index : {i}");
            }
        }
    }
}