arnaucube
arnaucube/sonobePublic Self-hosted repository
sonobe/src/transcript/mod.rs
src/transcript/mod.rsRaw
 1use crate::Error;
 2use ark_ec::CurveGroup;
 3use ark_std::fmt::Debug;
 4
 5pub mod poseidon;
 6
 7pub trait Transcript<C: CurveGroup> {
 8    type TranscriptConfig: Debug;
 9
10    fn new(config: &Self::TranscriptConfig) -> Self;
11    fn absorb(&mut self, v: &C::ScalarField);
12    fn absorb_vec(&mut self, v: &[C::ScalarField]);
13    fn absorb_point(&mut self, v: &C) -> Result<(), Error>;
14    fn get_challenge(&mut self) -> C::ScalarField;
15    /// get_challenge_nbits returns a field element of size nbits
16    fn get_challenge_nbits(&mut self, nbits: usize) -> Vec<bool>;
17    fn get_challenges(&mut self, n: usize) -> Vec<C::ScalarField>;
18}