1pub mod ggm;
16pub mod ppoprf;
17
18mod strobe_rng;
19
20use derive_more::{Display, Error};
21
22#[derive(Debug, Error, Display)]
23pub enum PPRFError {
24 #[display(fmt = "Specified tag ({md}) is not a valid metadata tag")]
25 BadTag { md: u8 },
26 #[display(fmt = "No prefix found")]
27 NoPrefixFound,
28 #[display(fmt = "Tag already punctured")]
29 AlreadyPunctured,
30 #[display(
31 fmt = "Input length ({actual}) does not match input param ({expected})"
32 )]
33 BadInputLength { actual: usize, expected: usize },
34 #[display(fmt = "Unexpected end of bv")]
35 UnexpectedEndOfBv,
36 #[display(fmt = "Bincode serialization error: {_0}")]
37 Bincode(bincode::Error),
38 #[display(fmt = "Serialized data exceeds size limit")]
39 SerializedDataTooBig,
40 #[display(fmt = "Bad compressed ristretto point encoding")]
41 BadPointEncoding,
42}
43
44pub trait PPRF {
45 fn setup() -> Self;
46 fn eval(&self, input: &[u8], output: &mut [u8]) -> Result<(), PPRFError>;
47 fn puncture(&mut self, input: &[u8]) -> Result<(), PPRFError>;
48}