wireguard_vanity_lib/
lib.rs1use 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}