solana_seed_phrase/
lib.rs

1//! Functions for generating keypairs from seed phrases.
2use hmac::Hmac;
3
4pub fn generate_seed_from_seed_phrase_and_passphrase(
5    seed_phrase: &str,
6    passphrase: &str,
7) -> Vec<u8> {
8    const PBKDF2_ROUNDS: u32 = 2048;
9    const PBKDF2_BYTES: usize = 64;
10
11    let salt = format!("mnemonic{passphrase}");
12
13    let mut seed = vec![0u8; PBKDF2_BYTES];
14    pbkdf2::pbkdf2::<Hmac<sha2::Sha512>>(
15        seed_phrase.as_bytes(),
16        salt.as_bytes(),
17        PBKDF2_ROUNDS,
18        &mut seed,
19    );
20    seed
21}