diff --git a/android/build.gradle b/android/build.gradle index 887d0b9..03cd4b2 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -43,7 +43,7 @@ dependencies { implementation 'io.reactivex.rxjava2:rxjava:2.2.10' implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' - implementation('com.github.bitmark-inc:libauk-kotlin:0.2.0') { + implementation('com.github.bitmark-inc:libauk-kotlin:0.2.1') { exclude group: 'com.google.protobuf' exclude module: 'jetified-protobuf-java' } diff --git a/android/src/main/kotlin/com/bitmark/libauk_dart/LibAukDartPlugin.kt b/android/src/main/kotlin/com/bitmark/libauk_dart/LibAukDartPlugin.kt index e6edda5..7a6b54f 100644 --- a/android/src/main/kotlin/com/bitmark/libauk_dart/LibAukDartPlugin.kt +++ b/android/src/main/kotlin/com/bitmark/libauk_dart/LibAukDartPlugin.kt @@ -9,8 +9,11 @@ import io.flutter.plugin.common.MethodCall import io.flutter.plugin.common.MethodChannel import io.flutter.plugin.common.MethodChannel.MethodCallHandler import io.flutter.plugin.common.MethodChannel.Result +import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.CompositeDisposable +import io.reactivex.schedulers.Schedulers import org.web3j.crypto.RawTransaction +import java.io.File import java.math.BigInteger import java.util.* @@ -63,6 +66,12 @@ class LibAukDartPlugin : FlutterPlugin, MethodCallHandler { "signTransaction" -> { signTransaction(call, result) } + "encryptFile" -> { + encryptFile(call, result) + } + "decryptFile" -> { + decryptFile(call, result) + } "exportMnemonicWords" -> { exportMnemonicWords(call, result) } @@ -278,6 +287,44 @@ class LibAukDartPlugin : FlutterPlugin, MethodCallHandler { .let { disposables.add(it) } } + private fun encryptFile(call: MethodCall, result: Result) { + val id: String? = call.argument("uuid") + val inputPath: String = call.argument("inputPath") ?: "" + val outputPath: String = call.argument("outputPath") ?: "" + LibAuk.getInstance().getStorage(UUID.fromString(id), context) + .encryptFile(File(inputPath), File(outputPath)) + .subscribeOn(Schedulers.computation()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe({ + val rev: HashMap = HashMap() + rev["error"] = 0 + rev["msg"] = "Encrypt file success" + rev["data"] = outputPath + result.success(rev) + }, { error -> + result.error("Encrypt file failed", error.message, error) + }).let { disposables.add(it) } + } + + private fun decryptFile(call: MethodCall, result: Result) { + val id: String? = call.argument("uuid") + val inputPath: String = call.argument("inputPath") ?: "" + val outputPath: String = call.argument("outputPath") ?: "" + LibAuk.getInstance().getStorage(UUID.fromString(id), context) + .decryptFile(File(inputPath), File(outputPath)) + .subscribeOn(Schedulers.computation()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe({ + val rev: HashMap = HashMap() + rev["error"] = 0 + rev["msg"] = "Decrypt file success" + rev["data"] = outputPath + result.success(rev) + }, { error -> + result.error("Decrypt file failed", error.message, error) + }).let { disposables.add(it) } + } + private fun exportMnemonicWords(call: MethodCall, result: Result) { val id: String? = call.argument("uuid") LibAuk.getInstance().getStorage(UUID.fromString(id), context) diff --git a/lib/libauk_dart.dart b/lib/libauk_dart.dart index 99e548f..f47dd6b 100644 --- a/lib/libauk_dart.dart +++ b/lib/libauk_dart.dart @@ -93,6 +93,30 @@ class WalletStorage { return res["data"]; } + Future encryptFile({ + required String inputPath, + required String outputPath, + }) async { + Map res = await _channel.invokeMethod('encryptFile', { + "uuid": uuid, + "inputPath": inputPath, + "outputPath": outputPath, + }); + return res["data"]; + } + + Future decryptFile({ + required String inputPath, + required String outputPath, + }) async { + Map res = await _channel.invokeMethod('decryptFile', { + "uuid": uuid, + "inputPath": inputPath, + "outputPath": outputPath, + }); + return res["data"]; + } + Future exportMnemonicWords() async { Map res = await _channel.invokeMethod('exportMnemonicWords', {"uuid": uuid});