pub trait MemZeroizer {
    unsafe fn zeroize_mem_blocks<const LOG_ALIGN: u8, const LOG_MULTIPLE: u8>(
        &self,
        ptr: *mut u8,
        len: usize
    ); unsafe fn zeroize_mem(&self, ptr: *mut u8, len: usize) { ... } }
Expand description

Strategy for securely erasing memory.

Security

The implementor must ensure that the zeroize instruction won’t be elided by the compiler.

Required methods

Zeroize the memory pointed to by ptr and of size len bytes.

This is guarantied to be not elided by the compiler.

Safety

The caller must ensure that ptr is valid for writes of len bytes, see the std::ptr documentation. In particular this function is not atomic.

Furthermore, ptr must be at least 2^LOG_ALIGN byte aligned, and 2^LOG_ALIGN must fit a usize.

Finally len must be a multiple of 2^LOG_MULTIPLE, and 2^LOG_ALIGN must fit a usize. (If len is not a multiple of 2^LOG_MULTIPLE then this won’t result in UB but the memory pointed to by ptr might only be zeroized for len rounded down to a multiple 2^LOG_MULTIPLE bytes, or the full len bytes, or anything in between, or the function might panic.)

Provided methods

Zeroize the memory pointed to by ptr and of size len bytes. Shorthand for Self::zeroize_mem_blocks::<0, 0>.

This is guarantied to be not elided by the compiler.

Safety

The caller must ensure that ptr is valid for writes of len bytes, see the std::ptr documentation. In particular this function is not atomic.

Implementors