use bip32::{DerivationPath, Language, Mnemonic, Seed};
use rand_core::OsRng;
pub fn generate_english_mnemonic() -> Mnemonic {
Mnemonic::random(&mut OsRng, Language::English)
}
pub fn generate_seed() -> Seed {
generate_english_mnemonic().to_seed("")
}
pub fn box_seed(seed: &Seed) -> Box<[u8]> {
seed.as_bytes().to_vec().into_boxed_slice()
}
pub fn generate_boxed_seed_bytes() -> Box<[u8]> {
generate_english_mnemonic()
.to_seed("")
.as_bytes()
.to_vec()
.into_boxed_slice()
}
pub fn parse_mnemonic(phrase: String) -> Result<Mnemonic, String> {
match Mnemonic::new(phrase, Default::default()) {
Ok(mnemonic) => Ok(mnemonic),
Err(e) => Err(e.to_string()),
}
}
pub fn get_derivation_path(
account: usize,
change: usize,
index: usize,
) -> Result<DerivationPath, String> {
match format!("m/44'/60'/{}'/{}/{}", account, change, index).parse() {
Ok(path) => Ok(path),
Err(e) => Err(e.to_string()),
}
}