Skip to main content

ZeroizedDigest

Struct ZeroizedDigest 

Source
pub struct ZeroizedDigest(/* private fields */);
Expand description

Digest wrapper that clears its backing bytes when dropped.

Use this for key identifiers, event commitments, or capability references held at a boundary where memory residue is part of the threat model. The base Digest remains Copy; this wrapper intentionally does not.

Implementations§

Source§

impl ZeroizedDigest

Source

pub const fn new(digest: Digest) -> Self

Wraps a digest so its local backing bytes are cleared on drop.

Source

pub const fn digest(&self) -> Digest

Returns a copy of the wrapped digest.

The returned Digest is Copy and will not be zeroed on drop. Do not store the return value beyond its immediate use.

Source

pub const fn as_bytes(&self) -> &[u8; 32]

Returns the wrapped digest bytes.

Source

pub fn ct_eq(&self, other: &Self) -> bool

Compares two wrapped digests without data-dependent early exit.

Trait Implementations§

Source§

impl Debug for ZeroizedDigest

Source§

fn fmt(&self, formatter: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Drop for ZeroizedDigest

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more
Source§

impl Eq for ZeroizedDigest

Source§

impl From<Digest> for ZeroizedDigest

Source§

fn from(digest: Digest) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for ZeroizedDigest

Source§

fn eq(&self, other: &Self) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.