keygen: add more mnemonic language support (#12944)
This commit is contained in:
		@@ -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 {
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user