keygen: add more mnemonic language support (#12944)
This commit is contained in:
parent
8aecea6d05
commit
4451042c76
|
@ -298,7 +298,24 @@ pub fn keypair_from_seed_phrase(
|
|||
keypair_from_seed_phrase_and_passphrase(&seed_phrase, &passphrase)?
|
||||
} else {
|
||||
let sanitized = sanitize_seed_phrase(seed_phrase);
|
||||
let mnemonic = Mnemonic::from_phrase(&sanitized, Language::English)?;
|
||||
let parse_language_fn = || {
|
||||
for language in &[
|
||||
Language::English,
|
||||
Language::ChineseSimplified,
|
||||
Language::ChineseTraditional,
|
||||
Language::Japanese,
|
||||
Language::Spanish,
|
||||
Language::Korean,
|
||||
Language::French,
|
||||
Language::Italian,
|
||||
] {
|
||||
if let Ok(mnemonic) = Mnemonic::from_phrase(&sanitized, *language) {
|
||||
return Ok(mnemonic);
|
||||
}
|
||||
}
|
||||
Err("Can't get mnemonic from seed phrases")
|
||||
};
|
||||
let mnemonic = parse_language_fn()?;
|
||||
let passphrase = prompt_passphrase(&passphrase_prompt)?;
|
||||
let seed = Seed::new(&mnemonic, &passphrase);
|
||||
keypair_from_seed(seed.as_bytes())?
|
||||
|
|
|
@ -270,6 +270,15 @@ fn main() -> Result<(), Box<dyn error::Error>> {
|
|||
.takes_value(true)
|
||||
.help("Specify the number of words that will be present in the generated seed phrase"),
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("language")
|
||||
.long("language")
|
||||
.possible_values(&["english", "chinese-simplified", "chinese-traditional", "japanese", "spanish", "korean", "french", "italian"])
|
||||
.default_value("english")
|
||||
.value_name("LANGUAGE")
|
||||
.takes_value(true)
|
||||
.help("Specify the mnemonic lanaguage that will be present in the generated seed phrase"),
|
||||
)
|
||||
.arg(
|
||||
Arg::with_name("no_passphrase")
|
||||
.long("no-passphrase")
|
||||
|
@ -430,7 +439,18 @@ fn do_main(matches: &ArgMatches<'_>) -> Result<(), Box<dyn error::Error>> {
|
|||
|
||||
let word_count = value_t!(matches.value_of("word_count"), usize).unwrap();
|
||||
let mnemonic_type = MnemonicType::for_word_count(word_count)?;
|
||||
let mnemonic = Mnemonic::new(mnemonic_type, Language::English);
|
||||
let language = match matches.value_of("language").unwrap() {
|
||||
"english" => Language::English,
|
||||
"chinese-simplified" => Language::ChineseSimplified,
|
||||
"chinese-traditional" => Language::ChineseTraditional,
|
||||
"japanese" => Language::Japanese,
|
||||
"spanish" => Language::Spanish,
|
||||
"korean" => Language::Korean,
|
||||
"french" => Language::French,
|
||||
"italian" => Language::Italian,
|
||||
_ => unreachable!(),
|
||||
};
|
||||
let mnemonic = Mnemonic::new(mnemonic_type, language);
|
||||
let passphrase = if matches.is_present("no_passphrase") {
|
||||
NO_PASSPHRASE.to_string()
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue