clarinet_utils/
lib.rs

1use hmac::Hmac;
2use pbkdf2::pbkdf2;
3use sha2::Sha512;
4
5pub fn get_bip39_seed_from_mnemonic(mnemonic: &str, password: &str) -> Result<Vec<u8>, String> {
6    const PBKDF2_ROUNDS: u32 = 2048;
7    const PBKDF2_BYTES: usize = 64;
8    let salt = format!("mnemonic{}", password);
9    let mut seed = vec![0u8; PBKDF2_BYTES];
10
11    pbkdf2::<Hmac<Sha512>>(
12        mnemonic.as_bytes(),
13        salt.as_bytes(),
14        PBKDF2_ROUNDS,
15        &mut seed,
16    );
17    Ok(seed)
18}