wireguard-vanity-key/src/cpu/mod.rs

34 lines
680 B
Rust

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)
}