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 = "Serialized data exceeds size limit")]
37 SerializedDataTooBig,
38 #[display(fmt = "Bad compressed ristretto point encoding")]
39 BadPointEncoding,
40}
41
42pub trait PPRF {
43 fn setup() -> Self;
44 fn eval(&self, input: &[u8], output: &mut [u8]) -> Result<(), PPRFError>;
45 fn puncture(&mut self, input: &[u8]) -> Result<(), PPRFError>;
46}