Skip to main content

SpongeCursor

Struct SpongeCursor 

Source
pub struct SpongeCursor<const RATE: usize> { /* private fields */ }
Expand description

Cursor for implementing sponge-based absorption and squeezing.

This type wraps u8 and enforces that its value is always smaller than RATE.

RATE MUST be smaller than 256, trying to initialize cursor with an invalid rate will result in a compilation error.

Implementations§

Source§

impl<const RATE: usize> SpongeCursor<RATE>

Source

pub fn new(pos: u8) -> Option<Self>

Create new cursor with the provided position.

Returns None if pos is bigger or equal to RATE.

Source

pub fn raw_pos(&self) -> u8

Get current cursor position as u8.

Source

pub fn pos(&self) -> usize

Get current cursor position as usize.

Source

pub fn absorb_u64_le<const N: usize>( &mut self, state: &mut [u64; N], sponge: fn(&mut [u64; N]), data: &[u8], )

Absorb bytes from data into state using little-endian byte order.

Size of state in bytes MUST be greater or equal to RATE. Using an invalid N will result in a compilation error.

Source

pub fn squeeze_read_u64_le<const N: usize>( &mut self, state: &mut [u64; N], sponge: fn(&mut [u64; N]), buf: &mut [u8], )

Squeeze data from state by reading it into buf using little-endian byte order.

Size of state in bytes MUST be greater or equal to RATE. Using an invalid N will result in a compilation error.

Source

pub fn squeeze_xor_u64_le<const N: usize>( &mut self, state: &mut [u64; N], sponge: fn(&mut [u64; N]), buf: &mut [u8], )

Squeeze data from state by XOR-ing it with data in buf using little-endian byte order.

Size of state in bytes MUST be greater or equal to RATE. Using an invalid N will result in a compilation error.

Trait Implementations§

Source§

impl<const RATE: usize> Clone for SpongeCursor<RATE>

Source§

fn clone(&self) -> SpongeCursor<RATE>

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<const RATE: usize> Debug for SpongeCursor<RATE>

Source§

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

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

impl<const RATE: usize> Default for SpongeCursor<RATE>

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<const RATE: usize> Hash for SpongeCursor<RATE>

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<const RATE: usize> PartialEq for SpongeCursor<RATE>

Source§

fn eq(&self, other: &SpongeCursor<RATE>) -> 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.
Source§

impl<const RATE: usize> Eq for SpongeCursor<RATE>

Source§

impl<const RATE: usize> StructuralPartialEq for SpongeCursor<RATE>

Auto Trait Implementations§

§

impl<const RATE: usize> Freeze for SpongeCursor<RATE>

§

impl<const RATE: usize> RefUnwindSafe for SpongeCursor<RATE>

§

impl<const RATE: usize> Send for SpongeCursor<RATE>

§

impl<const RATE: usize> Sync for SpongeCursor<RATE>

§

impl<const RATE: usize> Unpin for SpongeCursor<RATE>

§

impl<const RATE: usize> UnsafeUnpin for SpongeCursor<RATE>

§

impl<const RATE: usize> UnwindSafe for SpongeCursor<RATE>

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.