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}