use crate::{MaskedMerkleParameters, MerkleParameters, CRH};
#[derive(Clone, PartialEq, Eq, Debug)]
pub struct MaskedMerkleTreeParameters<H: CRH, const DEPTH: usize>(H, H, String);
impl<H: CRH, const DEPTH: usize> MerkleParameters for MaskedMerkleTreeParameters<H, DEPTH> {
type H = H;
const DEPTH: usize = DEPTH;
fn setup(message: &str) -> Self {
Self(Self::H::setup(message), Self::H::setup(message), message.into())
}
fn setup_message(&self) -> &str {
&self.2
}
fn crh(&self) -> &Self::H {
&self.0
}
}
impl<H: CRH, const DEPTH: usize> MaskedMerkleParameters for MaskedMerkleTreeParameters<H, DEPTH> {
fn mask_crh(&self) -> &Self::H {
&self.1
}
}