ref(dubp): make getDewifSecretCodeLen synchronous

This commit is contained in:
librelois 2021-02-09 02:12:01 +01:00
parent 66b00daae9
commit 46ee3ec694
3 changed files with 32 additions and 37 deletions

View File

@ -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<String, DubpError> {
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<usize, DubpError> {
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<String, DubpError> {

View File

@ -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]

View File

@ -165,21 +165,21 @@ class DubpRust {
}
/// Get secret code length of `dewif` keypair.
static Future<int> getDewifSecretCodeLen(
static int getDewifSecretCodeLen(
{String currency = "g1",
String dewif,
SecretCodeType secretCodeType = SecretCodeType.letters}) async {
final completer = Completer<int>();
final sendPort =
singleCompletePort<int, String>(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);
}
}
}*/
}