ref(dubp): make getDewifSecretCodeLen synchronous #9
|
@ -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> {
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue