1#![no_std]
4
5#[cfg(feature = "use_std")]
6extern crate std;
7
8mod cmpkey;
9mod tempkey;
10mod alloc;
11
12#[cfg(feature = "use_std")]
13mod bytes;
14
15use core::{ mem, ptr };
16pub use cmpkey::CmpKey;
17pub use tempkey::TempKey;
18pub use alloc::ZeroAllocator;
19
20#[cfg(feature = "use_std")]
21pub use bytes::{ SecBytes, SecReadGuard, SecWriteGuard };
22
23
24pub fn free<T: Sized>(mut t: T) {
35 unsafe {
36 ptr::drop_in_place(&mut t);
37 memsec::memzero(&mut t as *mut T as *mut u8, mem::size_of_val(&t));
38 if mem::needs_drop::<T>() {
39 mem::forget(t);
40 }
41 }
42}
43
44#[inline]
58pub fn zero(t: &mut [u8]) {
59 unsafe {
60 memsec::memzero(t.as_mut_ptr(), t.len());
61 }
62}