pub mod newhope;
use rand::{ Rand, Rng };
pub use self::newhope::NewHope;
pub trait KeyExchange {
type PrivateKey;
type PublicKey;
type Reconciliation;
const SK_LENGTH: usize;
const PK_LENGTH: usize;
const REC_LENGTH: usize;
fn keygen<R: Rand + Rng>() -> (Self::PrivateKey, Self::PublicKey);
fn exchange<R: Rand + Rng>(sharedkey: &mut [u8], pk: &Self::PublicKey) -> Self::Reconciliation;
fn exchange_from(sharedkey: &mut [u8], sk: &Self::PrivateKey, rec: &Self::Reconciliation);
}