Trait DigestAlgorithm

Source
pub trait DigestAlgorithm<E, I, T>
where E: Element, I: Index, T: NodeValue,
{ // Required methods fn digest(data: &[T]) -> Result<T, MerkleTreeError>; fn digest_leaf(pos: &I, elem: &E) -> Result<T, MerkleTreeError>; }
Expand description

Merkle tree hash function WARN: it’s important to domain separate the two digest functions. Otherwise, you may suffer from the length extension attack.

Required Methods§

Source

fn digest(data: &[T]) -> Result<T, MerkleTreeError>

Digest a list of values

Source

fn digest_leaf(pos: &I, elem: &E) -> Result<T, MerkleTreeError>

Digest an indexed element

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

Source§

impl<I, F, S, const INPUT_SIZE: usize> DigestAlgorithm<F, I, F> for FixedLenPoseidon2Hash<F, S, INPUT_SIZE, 1>
where I: Index, F: PrimeField + From<I> + Unit, S: Sponge<U = F> + Poseidon2Sponge,

Implementors§

Source§

impl<E, I, H> DigestAlgorithm<E, I, HasherNode<H>> for HasherDigestAlgorithm
where E: Element + CanonicalSerialize, I: Index + CanonicalSerialize, H: HasherDigest,

Source§

impl<E: Element + CanonicalSerialize, I: Index> DigestAlgorithm<E, I, Keccak256Node> for Keccak256Digest

Source§

impl<E: Element + CanonicalSerialize, I: Index> DigestAlgorithm<E, I, Sha3Node> for Sha3Digest

Source§

impl<F: RescueParameter> DigestAlgorithm<Interval<F>, u64, F> for RescueHash<F>

Source§

impl<I: Index, F: RescueParameter + From<I>> DigestAlgorithm<F, I, F> for RescueHash<F>