Trait neptune::sponge::vanilla::SpongeTrait

source ·
pub trait SpongeTrait<'a, F: PrimeField, A: Arity<F>>
where Self: Sized,
{ type Acc; type Elt; type Error;
Show 44 methods // Required methods fn new_with_constants( constants: &'a PoseidonConstants<F, A>, mode: Mode, ) -> Self; fn mode(&self) -> Mode; fn direction(&self) -> Direction; fn set_direction(&mut self, direction: Direction); fn absorbed(&self) -> usize; fn set_absorbed(&mut self, absorbed: usize); fn squeezed(&self) -> usize; fn set_squeezed(&mut self, squeezed: usize); fn squeeze_pos(&self) -> usize; fn set_squeeze_pos(&mut self, squeeze_pos: usize); fn absorb_pos(&self) -> usize; fn set_absorb_pos(&mut self, pos: usize); fn element(&self, index: usize) -> Self::Elt; fn set_element(&mut self, index: usize, elt: Self::Elt); fn make_elt(&self, val: F, acc: &mut Self::Acc) -> Self::Elt; fn rate(&self) -> usize; fn capacity(&self) -> usize; fn size(&self) -> usize; fn constants(&self) -> &PoseidonConstants<F, A>; fn pad(&mut self); fn permute_state(&mut self, acc: &mut Self::Acc) -> Result<(), Self::Error>; fn squeeze_aux(&mut self) -> Self::Elt; fn absorb_aux(&mut self, elt: &Self::Elt) -> Self::Elt; fn enqueue(&mut self, elt: Self::Elt); fn dequeue(&mut self) -> Option<Self::Elt>; fn squeeze_elements( &mut self, count: usize, acc: &mut Self::Acc, ) -> Vec<Self::Elt>; // Provided methods fn simplex_constants(size: usize) -> PoseidonConstants<F, A> { ... } fn duplex_constants() -> PoseidonConstants<F, A> { ... } fn api_constants(strength: Strength) -> PoseidonConstants<F, A> { ... } fn is_simplex(&self) -> bool { ... } fn is_duplex(&self) -> bool { ... } fn is_absorbing(&self) -> bool { ... } fn is_squeezing(&self) -> bool { ... } fn available(&self) -> usize { ... } fn is_immediately_squeezable(&self) -> bool { ... } fn total_size(&self) -> usize { ... } fn can_squeeze_without_permuting(&self) -> bool { ... } fn is_exhausted(&self) -> bool { ... } fn ensure_absorbing(&mut self) { ... } fn permute(&mut self, acc: &mut Self::Acc) -> Result<(), Self::Error> { ... } fn ensure_squeezing( &mut self, acc: &mut Self::Acc, ) -> Result<(), Self::Error> { ... } fn absorb( &mut self, elt: &Self::Elt, acc: &mut Self::Acc, ) -> Result<(), Self::Error> { ... } fn squeeze( &mut self, acc: &mut Self::Acc, ) -> Result<Option<Self::Elt>, Self::Error> { ... } fn absorb_elements( &mut self, elts: &[Self::Elt], acc: &mut Self::Acc, ) -> Result<(), Self::Error> { ... }
}

Required Associated Types§

Required Methods§

source

fn new_with_constants( constants: &'a PoseidonConstants<F, A>, mode: Mode, ) -> Self

source

fn mode(&self) -> Mode

source

fn direction(&self) -> Direction

source

fn set_direction(&mut self, direction: Direction)

source

fn absorbed(&self) -> usize

source

fn set_absorbed(&mut self, absorbed: usize)

source

fn squeezed(&self) -> usize

source

fn set_squeezed(&mut self, squeezed: usize)

source

fn squeeze_pos(&self) -> usize

source

fn set_squeeze_pos(&mut self, squeeze_pos: usize)

source

fn absorb_pos(&self) -> usize

source

fn set_absorb_pos(&mut self, pos: usize)

source

fn element(&self, index: usize) -> Self::Elt

source

fn set_element(&mut self, index: usize, elt: Self::Elt)

source

fn make_elt(&self, val: F, acc: &mut Self::Acc) -> Self::Elt

👎Deprecated since 0.10.0
source

fn rate(&self) -> usize

source

fn capacity(&self) -> usize

source

fn size(&self) -> usize

source

fn constants(&self) -> &PoseidonConstants<F, A>

source

fn pad(&mut self)

source

fn permute_state(&mut self, acc: &mut Self::Acc) -> Result<(), Self::Error>

source

fn squeeze_aux(&mut self) -> Self::Elt

source

fn absorb_aux(&mut self, elt: &Self::Elt) -> Self::Elt

source

fn enqueue(&mut self, elt: Self::Elt)

source

fn dequeue(&mut self) -> Option<Self::Elt>

source

fn squeeze_elements( &mut self, count: usize, acc: &mut Self::Acc, ) -> Vec<Self::Elt>

Provided Methods§

source

fn simplex_constants(size: usize) -> PoseidonConstants<F, A>

source

fn duplex_constants() -> PoseidonConstants<F, A>

source

fn api_constants(strength: Strength) -> PoseidonConstants<F, A>

source

fn is_simplex(&self) -> bool

source

fn is_duplex(&self) -> bool

source

fn is_absorbing(&self) -> bool

source

fn is_squeezing(&self) -> bool

source

fn available(&self) -> usize

source

fn is_immediately_squeezable(&self) -> bool

source

fn total_size(&self) -> usize

source

fn can_squeeze_without_permuting(&self) -> bool

source

fn is_exhausted(&self) -> bool

source

fn ensure_absorbing(&mut self)

source

fn permute(&mut self, acc: &mut Self::Acc) -> Result<(), Self::Error>

source

fn ensure_squeezing(&mut self, acc: &mut Self::Acc) -> Result<(), Self::Error>

source

fn absorb( &mut self, elt: &Self::Elt, acc: &mut Self::Acc, ) -> Result<(), Self::Error>

Absorb one field element

source

fn squeeze( &mut self, acc: &mut Self::Acc, ) -> Result<Option<Self::Elt>, Self::Error>

source

fn absorb_elements( &mut self, elts: &[Self::Elt], acc: &mut Self::Acc, ) -> Result<(), Self::Error>

Object Safety§

This trait is not object safe.

Implementors§

source§

impl<'a, F: PrimeField, A: Arity<F>> SpongeTrait<'a, F, A> for Sponge<'a, F, A>

§

type Acc = ()

§

type Elt = F

§

type Error = Error

source§

impl<'a, F: PrimeField, A: Arity<F>, CS: 'a + ConstraintSystem<F>> SpongeTrait<'a, F, A> for SpongeCircuit<'a, F, A, CS>

§

type Acc = Namespace<'a, F, CS>

§

type Elt = Elt<F>

§

type Error = SynthesisError