Skip to content
Snippets Groups Projects
Commit 5ec1e720 authored by poka's avatar poka
Browse files

Merge pull request 'ref(dubp): make getDewifSecretCodeLen synchronous' (#9)...

Merge pull request 'ref(dubp): make getDewifSecretCodeLen synchronous' (#9) from dubp/sync-getDewifSecretCodeLen into master

Reviewed-on: https://git.p2p.legal/axiom-team/gecko/pulls/9
parents 66b00daa 46ee3ec6
No related branches found
No related tags found
No related merge requests found
...@@ -65,18 +65,22 @@ pub(super) fn gen_dewif( ...@@ -65,18 +65,22 @@ pub(super) fn gen_dewif(
} }
pub(super) fn get_secret_code_len( pub(super) fn get_secret_code_len(
currency: Currency, dewif: *const raw::c_char,
dewif: &str, member_wallet: u32,
member_wallet: bool, secret_code_type: u32,
secret_code_type: SecretCodeType, ) -> Result<usize, DubpError> {
) -> Result<String, DubpError> { let dewif = char_ptr_to_str(dewif)?;
let log_n = dup_crypto::dewif::read_dewif_log_n(ExpectedCurrency::Specific(currency), 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)?; .map_err(DubpError::DewifReadError)?;
Ok( Ok(crate::secret_code::compute_secret_code_len(
crate::secret_code::compute_secret_code_len(member_wallet, secret_code_type, log_n)? member_wallet,
.to_string(), secret_code_type,
) log_n,
)?)
} }
pub(super) fn get_pubkey(currency: Currency, dewif: &str, pin: &str) -> Result<String, DubpError> { pub(super) fn get_pubkey(currency: Currency, dewif: &str, pin: &str) -> Result<String, DubpError> {
......
...@@ -169,25 +169,16 @@ pub extern "C" fn gen_mnemonic(port: i64, language: u32) { ...@@ -169,25 +169,16 @@ pub extern "C" fn gen_mnemonic(port: i64, language: u32) {
#[no_mangle] #[no_mangle]
pub extern "C" fn get_dewif_secret_code_len( pub extern "C" fn get_dewif_secret_code_len(
port: i64,
currency: *const raw::c_char,
dewif: *const raw::c_char, dewif: *const raw::c_char,
member_wallet: u32, member_wallet: u32,
secret_code_type: u32, secret_code_type: u32,
) { ) -> i32 {
exec_async( if let Ok(secret_code_len) = dewif::get_secret_code_len(dewif, member_wallet, secret_code_type)
port, {
|| { secret_code_len as i32
let currency = parse_currency(char_ptr_to_str(currency)?)?; } else {
let dewif = char_ptr_to_str(dewif)?; -1
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)
},
)
} }
#[no_mangle] #[no_mangle]
......
...@@ -165,21 +165,21 @@ class DubpRust { ...@@ -165,21 +165,21 @@ class DubpRust {
} }
/// Get secret code length of `dewif` keypair. /// Get secret code length of `dewif` keypair.
static Future<int> getDewifSecretCodeLen( static int getDewifSecretCodeLen(
{String currency = "g1", {String currency = "g1",
String dewif, String dewif,
SecretCodeType secretCodeType = SecretCodeType.letters}) async { SecretCodeType secretCodeType = SecretCodeType.letters}) {
final completer = Completer<int>(); int res = native.get_dewif_secret_code_len(
final sendPort =
singleCompletePort<int, String>(completer, callback: _handleErrInt);
native.get_dewif_secret_code_len(
sendPort.nativePort,
Utf8.toUtf8(currency),
Utf8.toUtf8(dewif), Utf8.toUtf8(dewif),
0, 0,
secretCodeType.index, 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) /// Get public key (in base 58) of legacy wallet (password + salt)
...@@ -289,7 +289,7 @@ class DubpRust { ...@@ -289,7 +289,7 @@ class DubpRust {
} }
} }
static int _handleErrInt(String res) { /*static int _handleErrInt(String res) {
if (res.startsWith('DUBP_RS_ERROR: ')) { if (res.startsWith('DUBP_RS_ERROR: ')) {
final error = res; final error = res;
print(error); print(error);
...@@ -297,5 +297,5 @@ class DubpRust { ...@@ -297,5 +297,5 @@ class DubpRust {
} else { } else {
return int.parse(res); return int.parse(res);
} }
} }*/
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment