mod x25519; use self::x25519::x25519_shared_key; use crate::Key; use rand::RngCore; #[inline] pub fn generate_psk(rng: &mut impl RngCore) -> Key { let mut key: Key = [0; 32]; rng.fill_bytes(&mut key); key } #[inline] pub fn generate_privkey(rng: &mut impl RngCore) -> Key { let mut k = generate_psk(rng); // curve25519_clamp_secret k[0] &= 0xF8; k[31] = (k[31] & 127) | 64; k } #[inline] pub fn get_pubkey(private_key: &Key) -> Key { let u = [ 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, ]; x25519_shared_key(&u, private_key) }