mod cpace;
#[cfg(test)]
mod tests;
use crate::EncodedSizeUser;
use crate::Input;
use core::fmt::Debug;
pub use cpace::CPaceRistretto255;
use rand_core::CryptoRng;
pub trait Pake: EncodedSizeUser {
type InitMessage: EncodedSizeUser + Debug + PartialEq;
type RespondMessage: EncodedSizeUser + Debug + PartialEq;
type Output: EncodedSizeUser + Debug + PartialEq;
fn init<R: CryptoRng>(input: &Input, rng: &mut R) -> (Self::InitMessage, Self);
fn respond<R: CryptoRng>(
input: &Input,
init_message: &Self::InitMessage,
rng: &mut R,
) -> (Option<Self::Output>, Self::RespondMessage);
fn recv(self, respond_message: &Self::RespondMessage) -> Option<Self::Output>;
}