Trait zeroize::Zeroize

source ·
pub trait Zeroize {
    // Required method
    fn zeroize(&mut self);
}
Expand description

Trait for securely erasing values from memory.

Required Methods§

source

fn zeroize(&mut self)

Zero out this object from memory using Rust intrinsics which ensure the zeroization operation is not “optimized away” by the compiler.

Implementations on Foreign Types§

source§

impl<A: Zeroize, B: Zeroize, C: Zeroize, D: Zeroize, E: Zeroize, F: Zeroize, G: Zeroize, H: Zeroize, I: Zeroize, J: Zeroize> Zeroize for (A, B, C, D, E, F, G, H, I, J)

source§

fn zeroize(&mut self)

source§

impl Zeroize for ()

() is zero sized so provide a Zeroize implementation.

source§

fn zeroize(&mut self)

source§

impl Zeroize for NonZeroIsize

source§

fn zeroize(&mut self)

source§

impl Zeroize for PhantomPinned

PhantomPinned is zero sized so provide a Zeroize implementation.

source§

fn zeroize(&mut self)

source§

impl<A: Zeroize, B: Zeroize, C: Zeroize, D: Zeroize, E: Zeroize, F: Zeroize, G: Zeroize> Zeroize for (A, B, C, D, E, F, G)

source§

fn zeroize(&mut self)

source§

impl Zeroize for String

source§

fn zeroize(&mut self)

source§

impl<A: Zeroize, B: Zeroize, C: Zeroize, D: Zeroize, E: Zeroize, F: Zeroize> Zeroize for (A, B, C, D, E, F)

source§

fn zeroize(&mut self)

source§

impl<'a, Z> Zeroize for IterMut<'a, Z>where Z: Zeroize,

source§

fn zeroize(&mut self)

source§

impl Zeroize for NonZeroU8

source§

fn zeroize(&mut self)

source§

impl<A: Zeroize, B: Zeroize, C: Zeroize, D: Zeroize> Zeroize for (A, B, C, D)

source§

fn zeroize(&mut self)

source§

impl<Z> Zeroize for [Z]where Z: DefaultIsZeroes,

Impl Zeroize on slices of types that can be zeroized with Default.

This impl can eventually be optimized using an memset intrinsic, such as core::intrinsics::volatile_set_memory. For that reason the blanket impl on slices is bounded by DefaultIsZeroes.

To zeroize a mut slice of Z: Zeroize which does not impl DefaultIsZeroes, call iter_mut().zeroize().

source§

fn zeroize(&mut self)

source§

impl Zeroize for __m128d

source§

fn zeroize(&mut self)

source§

impl Zeroize for NonZeroU128

source§

fn zeroize(&mut self)

source§

impl<A: Zeroize, B: Zeroize> Zeroize for (A, B)

source§

fn zeroize(&mut self)

source§

impl<Z> Zeroize for Box<[Z]>where Z: Zeroize,

source§

fn zeroize(&mut self)

Unlike Vec, Box<[Z]> cannot reallocate, so we can be sure that we are not leaving values on the heap.

source§

impl Zeroize for NonZeroI128

source§

fn zeroize(&mut self)

source§

impl<A: Zeroize> Zeroize for (A,)

Generic implementation of Zeroize for tuples up to 10 parameters.

source§

fn zeroize(&mut self)

source§

impl<A: Zeroize, B: Zeroize, C: Zeroize> Zeroize for (A, B, C)

source§

fn zeroize(&mut self)

source§

impl<A: Zeroize, B: Zeroize, C: Zeroize, D: Zeroize, E: Zeroize, F: Zeroize, G: Zeroize, H: Zeroize, I: Zeroize> Zeroize for (A, B, C, D, E, F, G, H, I)

source§

fn zeroize(&mut self)

source§

impl Zeroize for __m128i

source§

fn zeroize(&mut self)

source§

impl<Z, const N: usize> Zeroize for [Z; N]where Z: Zeroize,

Impl Zeroize on arrays of types that impl Zeroize.

source§

fn zeroize(&mut self)

source§

impl Zeroize for NonZeroUsize

source§

fn zeroize(&mut self)

source§

impl Zeroize for __m128

source§

fn zeroize(&mut self)

source§

impl Zeroize for NonZeroI16

source§

fn zeroize(&mut self)

source§

impl<Z> Zeroize for [MaybeUninit<Z>]

Impl Zeroize on slices of MaybeUninit types.

This impl can eventually be optimized using an memset intrinsic, such as core::intrinsics::volatile_set_memory.

This fills the slice with zeroes.

Note that this ignore invariants that Z might have, because MaybeUninit removes all invariants.

source§

fn zeroize(&mut self)

source§

impl<A: Zeroize, B: Zeroize, C: Zeroize, D: Zeroize, E: Zeroize> Zeroize for (A, B, C, D, E)

source§

fn zeroize(&mut self)

source§

impl Zeroize for NonZeroI8

source§

fn zeroize(&mut self)

source§

impl Zeroize for NonZeroI64

source§

fn zeroize(&mut self)

source§

impl<Z> Zeroize for Vec<Z>where Z: Zeroize,

source§

fn zeroize(&mut self)

“Best effort” zeroization for Vec.

Ensures the entire capacity of the Vec is zeroed. Cannot ensure that previous reallocations did not leave values on the heap.

source§

impl<Z> Zeroize for PhantomData<Z>

PhantomData is always zero sized so provide a Zeroize implementation.

source§

fn zeroize(&mut self)

source§

impl Zeroize for NonZeroU16

source§

fn zeroize(&mut self)

source§

impl Zeroize for NonZeroI32

source§

fn zeroize(&mut self)

source§

impl Zeroize for NonZeroU64

source§

fn zeroize(&mut self)

source§

impl<Z> Zeroize for Option<Z>where Z: Zeroize,

source§

fn zeroize(&mut self)

source§

impl Zeroize for NonZeroU32

source§

fn zeroize(&mut self)

source§

impl<A: Zeroize, B: Zeroize, C: Zeroize, D: Zeroize, E: Zeroize, F: Zeroize, G: Zeroize, H: Zeroize> Zeroize for (A, B, C, D, E, F, G, H)

source§

fn zeroize(&mut self)

Implementors§

source§

impl<Z> Zeroize for Zeroizing<Z>where Z: Zeroize,

source§

impl<Z> Zeroize for Zwhere Z: DefaultIsZeroes,

impl Zeroize for Scalar

impl<const LENGTH: usize> Zeroize for StackByteArray<LENGTH>

impl<SessionKey> Zeroize for Session<SessionKey>where SessionKey: Zeroize + ByteArray<CRYPTO_KX_SESSIONKEYBYTES>,

impl<Mode> Zeroize for DryocStream<Mode>where PhantomData<Mode>: Zeroize, Mode: Zeroize,

impl<Hash, Salt> Zeroize for PwHash<Hash, Salt>where Hash: Zeroize + Bytes, Salt: Zeroize + Bytes,

impl Zeroize for State

impl<Signature, Message> Zeroize for SignedMessage<Signature, Message>where Signature: Zeroize + ByteArray<CRYPTO_SIGN_BYTES>, Message: Zeroize + Bytes,

impl<PublicKey, SecretKey> Zeroize for SigningKeyPair<PublicKey, SecretKey>where PublicKey: Zeroize + ByteArray<CRYPTO_SIGN_PUBLICKEYBYTES>, SecretKey: Zeroize + ByteArray<CRYPTO_SIGN_SECRETKEYBYTES>,

impl<const LENGTH: usize> Zeroize for HeapByteArray<LENGTH>

impl<Key, Context> Zeroize for Kdf<Key, Context>where Key: Zeroize + ByteArray<CRYPTO_KDF_KEYBYTES>, Context: Zeroize + ByteArray<CRYPTO_KDF_CONTEXTBYTES>,

impl Zeroize for Config

impl<PublicKey, SecretKey> Zeroize for KeyPair<PublicKey, SecretKey>where PublicKey: Zeroize + ByteArray<CRYPTO_BOX_PUBLICKEYBYTES>, SecretKey: Zeroize + ByteArray<CRYPTO_BOX_SECRETKEYBYTES>,

impl<EphemeralPublicKey, Mac, Data> Zeroize for DryocBox<EphemeralPublicKey, Mac, Data>where Option<EphemeralPublicKey>: Zeroize, EphemeralPublicKey: Zeroize + ByteArray<CRYPTO_BOX_PUBLICKEYBYTES>, Mac: Zeroize + ByteArray<CRYPTO_BOX_MACBYTES>, Data: Zeroize + Bytes,

impl<Mac, Data> Zeroize for DryocSecretBox<Mac, Data>where Mac: Zeroize + ByteArray<CRYPTO_SECRETBOX_MACBYTES>, Data: Zeroize + Bytes,