wireguard_vanity_lib/
lib.rs

1use base64;
2use rand::thread_rng;
3use x25519_dalek::{PublicKey, StaticSecret};
4
5pub fn trial(prefix: &str, start: usize, end: usize) -> Option<(String, String)> {
6    let mut rng = thread_rng();
7    let private = StaticSecret::new(&mut rng);
8    let public = PublicKey::from(&private);
9    let public_b64 = base64::encode(public.as_bytes());
10    if public_b64[start..end]
11        .to_ascii_lowercase()
12        .contains(&prefix)
13    {
14        let private_b64 = base64::encode(&private.to_bytes());
15        Some((private_b64, public_b64))
16    } else {
17        None
18    }
19}