ref(dubp): make gen_mnemonic really async

This commit is contained in:
librelois 2021-01-10 10:27:31 +01:00 committed by Gogs
parent 91bf7a653e
commit 61eca576f2
2 changed files with 8 additions and 7 deletions

View File

@ -105,7 +105,7 @@ pub extern "C" fn gen_dewif(
#[no_mangle]
pub extern "C" fn gen_mnemonic(port: i64, language: u32) {
Isolate::new(port).post(DartRes::from(mnemonic::gen_mnemonic(language)));
exec_async(port, || u32_to_language(language), mnemonic::gen_mnemonic)
}
#[no_mangle]
@ -136,6 +136,7 @@ pub extern "C" fn mnemonic_to_pubkey(
exec_async(
port,
|| {
let language = u32_to_language(language)?;
let mnemonic_phrase = char_ptr_to_str(mnemonic_phrase)?;
Ok((language, mnemonic_phrase))
},

View File

@ -15,15 +15,15 @@
use crate::*;
pub(super) fn gen_mnemonic(language: u32) -> Result<String, DubpError> {
let mnemonic = Mnemonic::new(MnemonicType::Words12, u32_to_language(language)?)
.map_err(|_| DubpError::RandErr)?;
pub(super) fn gen_mnemonic(language: Language) -> Result<String, DubpError> {
let mnemonic =
Mnemonic::new(MnemonicType::Words12, language).map_err(|_| DubpError::RandErr)?;
Ok(mnemonic.phrase().to_owned())
}
pub(super) fn mnemonic_to_pubkey(language: u32, mnemonic: &str) -> Result<String, DubpError> {
let mnemonic = Mnemonic::from_phrase(mnemonic, u32_to_language(language)?)
.map_err(|_| DubpError::WrongLanguage)?;
pub(super) fn mnemonic_to_pubkey(language: Language, mnemonic: &str) -> Result<String, DubpError> {
let mnemonic =
Mnemonic::from_phrase(mnemonic, language).map_err(|_| DubpError::WrongLanguage)?;
let seed = dup_crypto::mnemonic::mnemonic_to_seed(&mnemonic);
let keypair = KeyPairFromSeed32Generator::generate(seed);
Ok(keypair.public_key().to_base58())