diff --git a/native/dubp_rs/src/dewif.rs b/native/dubp_rs/src/dewif.rs index 70e2562..1ed860d 100644 --- a/native/dubp_rs/src/dewif.rs +++ b/native/dubp_rs/src/dewif.rs @@ -65,18 +65,22 @@ pub(super) fn gen_dewif( } pub(super) fn get_secret_code_len( - currency: Currency, - dewif: &str, - member_wallet: bool, - secret_code_type: SecretCodeType, -) -> Result { - let log_n = dup_crypto::dewif::read_dewif_log_n(ExpectedCurrency::Specific(currency), dewif) + dewif: *const raw::c_char, + member_wallet: u32, + secret_code_type: u32, +) -> Result { + let dewif = char_ptr_to_str(dewif)?; + let member_wallet = member_wallet != 0; + let secret_code_type = SecretCodeType::from(secret_code_type); + + let log_n = dup_crypto::dewif::read_dewif_log_n(ExpectedCurrency::Any, dewif) .map_err(DubpError::DewifReadError)?; - Ok( - crate::secret_code::compute_secret_code_len(member_wallet, secret_code_type, log_n)? - .to_string(), - ) + Ok(crate::secret_code::compute_secret_code_len( + member_wallet, + secret_code_type, + log_n, + )?) } pub(super) fn get_pubkey(currency: Currency, dewif: &str, pin: &str) -> Result { diff --git a/native/dubp_rs/src/lib.rs b/native/dubp_rs/src/lib.rs index 172cab2..92f19a4 100644 --- a/native/dubp_rs/src/lib.rs +++ b/native/dubp_rs/src/lib.rs @@ -169,25 +169,16 @@ pub extern "C" fn gen_mnemonic(port: i64, language: u32) { #[no_mangle] pub extern "C" fn get_dewif_secret_code_len( - port: i64, - currency: *const raw::c_char, dewif: *const raw::c_char, member_wallet: u32, secret_code_type: u32, -) { - exec_async( - port, - || { - let currency = parse_currency(char_ptr_to_str(currency)?)?; - let dewif = char_ptr_to_str(dewif)?; - let member_wallet = member_wallet != 0; - let secret_code_type = SecretCodeType::from(secret_code_type); - Ok((currency, dewif, member_wallet, secret_code_type)) - }, - |(currency, dewif, member_wallet, secret_code_type)| { - dewif::get_secret_code_len(currency, dewif, member_wallet, secret_code_type) - }, - ) +) -> i32 { + if let Ok(secret_code_len) = dewif::get_secret_code_len(dewif, member_wallet, secret_code_type) + { + secret_code_len as i32 + } else { + -1 + } } #[no_mangle] diff --git a/packages/dubp_rs/lib/dubp.dart b/packages/dubp_rs/lib/dubp.dart index 4d246e6..505f8f1 100644 --- a/packages/dubp_rs/lib/dubp.dart +++ b/packages/dubp_rs/lib/dubp.dart @@ -165,21 +165,21 @@ class DubpRust { } /// Get secret code length of `dewif` keypair. - static Future getDewifSecretCodeLen( + static int getDewifSecretCodeLen( {String currency = "g1", String dewif, - SecretCodeType secretCodeType = SecretCodeType.letters}) async { - final completer = Completer(); - final sendPort = - singleCompletePort(completer, callback: _handleErrInt); - native.get_dewif_secret_code_len( - sendPort.nativePort, - Utf8.toUtf8(currency), + SecretCodeType secretCodeType = SecretCodeType.letters}) { + int res = native.get_dewif_secret_code_len( Utf8.toUtf8(dewif), 0, secretCodeType.index, ); - return completer.future; + if (res == -1) { + print('DUBP_RS_ERROR: DEWIF file content is corrupted.'); + throw 'DUBP_RS_ERROR: DEWIF file content is corrupted.'; + } else { + return res; + } } /// Get public key (in base 58) of legacy wallet (password + salt) @@ -289,7 +289,7 @@ class DubpRust { } } - static int _handleErrInt(String res) { + /*static int _handleErrInt(String res) { if (res.startsWith('DUBP_RS_ERROR: ')) { final error = res; print(error); @@ -297,5 +297,5 @@ class DubpRust { } else { return int.parse(res); } - } + }*/ }