wpa_passphrase/lib.rs
1use hmac::Hmac;
2use pbkdf2::pbkdf2;
3use sha1::Sha1;
4use std::fmt::Write;
5
6// TODO Change the signature to return Result<String> now that pbkdf2 uses Result.
7pub fn generate_psk_sha1(ssid: &String, passphrase: &String) -> String {
8 let mut byte_psk = [0u8; 32];
9 pbkdf2::<Hmac<Sha1>>(passphrase.as_bytes(), ssid.as_bytes(), 4096, &mut byte_psk)
10 .expect("Problem generating byte psk");
11 let hex_psk: String = byte_psk.iter().fold(String::new(), |mut output, b| {
12 let _ = write!(output, "{b:02x}");
13 output
14 });
15 hex_psk
16}