1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
//! Use [memsec](https://github.com/quininer/memsec) protected secret memory. extern crate memsec; mod tempkey; mod bytes; mod seckey; use std::mem; use memsec::memzero; pub use bytes::*; pub use tempkey::*; pub use seckey::*; /// Zero a value /// /// ``` /// use seckey::zero; /// /// let mut v = [1, 2, 3]; /// zero(&mut v); /// assert_eq!(v, [0, 0, 0]); /// ``` pub fn zero<T: Copy>(t: &mut T) { unsafe { memzero(t, mem::size_of::<T>()) }; } /// Zero a slice /// /// ``` /// use seckey::zero_slice; /// /// let v = &mut [1, 2, 3][..]; /// zero_slice(v); /// assert_eq!(v, [0, 0, 0]); /// ``` pub fn zero_slice<T: Copy>(t: &mut [T]) { unsafe { memzero(t.as_mut_ptr(), t.len() * mem::size_of::<T>()) }; }