diff --git a/native/dubp_rs/src/dewif.rs b/native/dubp_rs/src/dewif.rs
index 70e25623c92904441107d629628b9c7f00a14f97..1ed860d4339cb78ec2c14077f893e957fe09c552 100644
--- a/native/dubp_rs/src/dewif.rs
+++ b/native/dubp_rs/src/dewif.rs
@@ -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> {
diff --git a/native/dubp_rs/src/lib.rs b/native/dubp_rs/src/lib.rs
index 172cab2f96ca4ebdb83cdb67b48937ecab9aadf7..92f19a4f5a264d70c1c8f8f3d2c4ada2757cf3a4 100644
--- a/native/dubp_rs/src/lib.rs
+++ b/native/dubp_rs/src/lib.rs
@@ -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]
diff --git a/packages/dubp_rs/lib/dubp.dart b/packages/dubp_rs/lib/dubp.dart
index 4d246e6c7206b9d8a3442b264e9c8d8e7794a3d4..505f8f1de3f9325bbfe43818a731f4f3bb9f9d9e 100644
--- a/packages/dubp_rs/lib/dubp.dart
+++ b/packages/dubp_rs/lib/dubp.dart
@@ -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);
     }
-  }
+  }*/
 }