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}