use crate::types::Result;
use crate::types::Vec;
pub mod curve25519_sha256;
pub mod mlkem768x25519_sha256;
const SHARED_SECRET_MAX: usize = 128;
const PUBLIC_KEY_MAX: usize = 2048;
pub trait Initiate {
fn new() -> Result<Self>
where
Self: Sized;
fn public_key(&self) -> &[u8];
fn agree(self, peer_public_key: &[u8]) -> Result<Vec<u8, SHARED_SECRET_MAX>>;
}
pub trait Reply {
fn agree(
peer_public_key: &[u8],
) -> Result<(Vec<u8, SHARED_SECRET_MAX>, Vec<u8, PUBLIC_KEY_MAX>)>;
}