ref(dubp): make getDewifSecretCodeLen synchronous #9
|
@ -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) {
|
||||||
|
|
||||||
#[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 {
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 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 {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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 {
|
||||||
} else {
|
} else {
|
||||||
return int.parse(res);
|
return int.parse(res);
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue