pub trait AlgebraicSponge<F: PrimeField, const RATE: usize>: Clone + Debug {
    type Parameters;

    fn sample_parameters() -> Self::Parameters;
    fn new_with_parameters(params: &Self::Parameters) -> Self;
    fn absorb_native_field_elements<T: ToConstraintField<F>>(
        &mut self,
        elements: &[T]
    ); fn absorb_nonnative_field_elements<Target: PrimeField>(
        &mut self,
        elements: impl IntoIterator<Item = Target>
    ); fn squeeze_native_field_elements(&mut self, num: usize) -> SmallVec<[F; 10]>; fn squeeze_nonnative_field_elements<Target: PrimeField>(
        &mut self,
        num: usize
    ) -> SmallVec<[Target; 10]>; fn squeeze_short_nonnative_field_elements<Target: PrimeField>(
        &mut self,
        num: usize
    ) -> SmallVec<[Target; 10]>; fn new() -> Self { ... } fn absorb_bytes(&mut self, elements: &[u8]) { ... } fn squeeze_short_nonnative_field_element<Target: PrimeField>(
        &mut self
    ) -> Target { ... } }
Expand description

The interface for a cryptographic sponge. A sponge can absorb or take in inputs and later squeeze or output bytes or field elements. The outputs are dependent on previous absorb and squeeze calls.

Required Associated Types

Parameters used by the sponge.

Required Methods

Initialize a new instance of the sponge.

Takes in field elements.

Takes in field elements.

Takes in field elements.

Takes out field elements.

Takes out field elements of 168 bits.

Provided Methods

Initialize a new instance of the sponge.

Takes in bytes.

Takes out a field element of 168 bits.

Implementors