pub fn prf_eta<Scalar: PrimeField, CS: ConstraintSystem<Scalar>>(
    cs: CS,
    sk_addr: &[Boolean],
    pos_note: &[Boolean],
) -> Result<Vec<Boolean>, SynthesisError> {
    assert_eq!(pos_note.len(), NOTE_MT_DEPTH);

    // Compute the seed
    let mut seed = vec![];
    seed.extend((0..(254 - NOTE_MT_DEPTH)).map(|_| Boolean::constant(false)));
    seed.extend(pos_note.iter().cloned());

    prf(cs, sk_addr, false, true, &seed, PERSONALISATION_PRF_ETA)
}
/// Compute PRF^eta, expose computation to circuit and output eta in big endian format.
Compute PRF^eta, expose computation to circuit and output eta in big endian format.
Compute PRF^eta expose computation to circuit and output eta in big endian format .
pub fn prf_eta<Scalar: PrimeField, CS: ConstraintSystem<Scalar>>(
    cs: CS,
    sk_addr: &[Boolean],
    pos_note: &[Boolean],
) -> Result<Vec<Boolean>, SynthesisError> {
    assert_eq!(pos_note.len(), NOTE_MT_DEPTH);
    // Compute the seed
    let mut seed = vec![];
    seed.extend((0..(254 - NOTE_MT_DEPTH)).map(|_| Boolean::constant(false)));
    seed.extend(pos_note.iter().cloned());
    prf(cs, sk_addr, false, true, &seed, PERSONALISATION_PRF_ETA)
}
pub fn prf_eta < Scalar : PrimeField , CS : ConstraintSystem < Scalar > > ( cs : CS , sk_addr : & [ Boolean ] , pos_note : & [ Boolean ] , ) -> Result < Vec < Boolean > , SynthesisError > { assert_eq ! ( pos_note len ( ) NOTE_MT_DEPTH ) ; // Compute the seed let mut seed = vec ! [ ] ; seed . extend ( ( 0 .. ( 254 - NOTE_MT_DEPTH ) ) . map ( | _ | Boolean :: constant ( false ) ) ) ; seed . extend ( pos_note . iter ( ) . cloned ( ) ) ; prf ( cs , sk_addr , false , true , & seed , PERSONALISATION_PRF_ETA ) }
Compute PRF^eta, expose computation to circuit and output eta in big endian format.
Compute PRF^eta expose computation to circuit and output eta in big endian format .
cs
CS
sk_addr
&[Boolean]
pos_note
&[Boolean]
cs
CS
sk_addr
&[Boolean]
pos_note
&[Boolean]