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

Reviewed-on: #9
This commit is contained in:
poka 2021-02-09 20:20:47 +01:00
commit 5ec1e72030
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( 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> {

View File

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

View File

@ -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);
} }
} }*/
} }