pub trait FieldHasherVariable<C: CircuitConfig> {
    type Digest: Clone + Copy;

    // Required methods
    fn hash(builder: &mut Builder<C>, input: &[Felt<C::F>]) -> Self::Digest;
    fn compress(
        builder: &mut Builder<C>,
        input: [Self::Digest; 2],
    ) -> Self::Digest;
    fn assert_digest_eq(
        builder: &mut Builder<C>,
        a: Self::Digest,
        b: Self::Digest,
    );
    fn select_chain_digest(
        builder: &mut Builder<C>,
        should_swap: C::Bit,
        input: [Self::Digest; 2],
    ) -> [Self::Digest; 2];
}

Required Associated Types§

Required Methods§

source

fn hash(builder: &mut Builder<C>, input: &[Felt<C::F>]) -> Self::Digest

source

fn compress(builder: &mut Builder<C>, input: [Self::Digest; 2]) -> Self::Digest

source

fn assert_digest_eq(builder: &mut Builder<C>, a: Self::Digest, b: Self::Digest)

source

fn select_chain_digest( builder: &mut Builder<C>, should_swap: C::Bit, input: [Self::Digest; 2], ) -> [Self::Digest; 2]

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<C: CircuitConfig<F = BabyBear, Bit = Felt<BabyBear>>> FieldHasherVariable<C> for BabyBearPoseidon2

source§

type Digest = [Felt<BabyBear>; 8]

source§

fn hash( builder: &mut Builder<C>, input: &[Felt<<C as Config>::F>], ) -> Self::Digest

source§

fn compress(builder: &mut Builder<C>, input: [Self::Digest; 2]) -> Self::Digest

source§

fn assert_digest_eq(builder: &mut Builder<C>, a: Self::Digest, b: Self::Digest)

source§

fn select_chain_digest( builder: &mut Builder<C>, should_swap: <C as CircuitConfig>::Bit, input: [Self::Digest; 2], ) -> [Self::Digest; 2]

source§

impl<C: CircuitConfig<F = BabyBear, N = Bn254Fr, Bit = Var<Bn254Fr>>> FieldHasherVariable<C> for BabyBearPoseidon2Outer

source§

type Digest = [Var<Bn254Fr>; 1]

source§

fn hash( builder: &mut Builder<C>, input: &[Felt<<C as Config>::F>], ) -> Self::Digest

source§

fn compress(builder: &mut Builder<C>, input: [Self::Digest; 2]) -> Self::Digest

source§

fn assert_digest_eq(builder: &mut Builder<C>, a: Self::Digest, b: Self::Digest)

source§

fn select_chain_digest( builder: &mut Builder<C>, should_swap: <C as CircuitConfig>::Bit, input: [Self::Digest; 2], ) -> [Self::Digest; 2]

Implementors§