Skip to main content

Digest

Struct Digest 

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

Fixed-width digest used for protocol commitments.

Digest is Copy for ergonomic identifier wrappers and therefore cannot zero its backing bytes on drop. Use ZeroizedDigest at processing boundaries where digest residue must not survive the scope.

Implementations§

Source§

impl Digest

Source

pub const LEN: usize = 32

Digest byte length for the first BCX profile.

Source

pub const fn new(bytes: [u8; 32]) -> Self

Creates a digest from raw bytes.

Source

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

Returns the digest as bytes.

Source

pub fn is_zero(&self) -> bool

Returns true when every byte is zero.

Source

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

Compares two digests without data-dependent early exit.

This is also used by PartialEq to avoid byte-by-byte early exit.

Trait Implementations§

Source§

impl Clone for Digest

Source§

fn clone(&self) -> Digest

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for Digest

Source§

impl Debug for Digest

Source§

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

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

impl Eq for Digest

Source§

impl From<Digest> for ZeroizedDigest

Source§

fn from(digest: Digest) -> Self

Converts to this type from the input type.
Source§

impl Hash for Digest

Source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · Source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
Source§

impl PartialEq for Digest

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. 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.