diff --git a/app/build.gradle b/app/build.gradle index 843fc3d..ad08ba4 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,7 +8,7 @@ android { defaultConfig { applicationId "com.bitmark.libauk_example" - minSdkVersion 23 + minSdkVersion 24 targetSdkVersion 31 versionCode 1 versionName "1.0" diff --git a/build.gradle b/build.gradle index 9e563ca..54dcc3b 100644 --- a/build.gradle +++ b/build.gradle @@ -4,6 +4,7 @@ buildscript { repositories { google() jcenter() + mavenCentral() } dependencies { classpath "com.android.tools.build:gradle:4.0.2" @@ -18,6 +19,7 @@ allprojects { repositories { google() jcenter() + mavenCentral() } } diff --git a/libauk/build.gradle b/libauk/build.gradle index 247c3b7..62b7f4a 100644 --- a/libauk/build.gradle +++ b/libauk/build.gradle @@ -7,7 +7,7 @@ android { buildToolsVersion "30.0.2" defaultConfig { - minSdkVersion 23 + minSdkVersion 24 targetSdkVersion 31 versionCode 1 versionName "1.0" @@ -41,6 +41,7 @@ dependencies { implementation 'org.web3j:core:4.8.7-android' implementation 'com.google.code.gson:gson:2.8.5' implementation 'androidx.security:security-crypto:1.1.0-alpha03' + implementation 'io.camlcase:kotlintezos:2.0.2' testImplementation 'junit:junit:4.13.1' testImplementation 'com.nhaarman.mockitokotlin2:mockito-kotlin:2.2.0' androidTestImplementation 'androidx.test.ext:junit:1.1.3' diff --git a/libauk/src/main/java/com/bitmark/libauk/storage/WalletStorage.kt b/libauk/src/main/java/com/bitmark/libauk/storage/WalletStorage.kt index 73c0426..b666bd0 100644 --- a/libauk/src/main/java/com/bitmark/libauk/storage/WalletStorage.kt +++ b/libauk/src/main/java/com/bitmark/libauk/storage/WalletStorage.kt @@ -4,6 +4,7 @@ import com.bitmark.libauk.model.KeyInfo import com.bitmark.libauk.model.Seed import com.bitmark.libauk.util.fromJson import com.bitmark.libauk.util.newGsonInstance +import io.camlcase.kotlintezos.wallet.HDWallet import io.reactivex.Completable import io.reactivex.Single import org.web3j.crypto.* @@ -21,6 +22,7 @@ interface WalletStorage { fun signPersonalMessage(message: ByteArray): Single fun signTransaction(transaction: RawTransaction, chainId: Long): Single fun exportMnemonicWords(): Single + fun getTezosWallet(): Single fun removeKeys(): Completable } @@ -149,6 +151,14 @@ internal class WalletStorageImpl(private val secureFileStorage: SecureFileStorag MnemonicUtils.generateMnemonic(seed.data) } + override fun getTezosWallet(): Single = secureFileStorage.rxSingle { storage -> + val json = storage.readOnFilesDir(SEED_FILE_NAME) + val seed = newGsonInstance().fromJson(String(json)) + MnemonicUtils.generateMnemonic(seed.data) + }.map { + HDWallet(it.split(" ")) + } + override fun removeKeys(): Completable = secureFileStorage.rxSingle { storage -> storage.isExisting(SEED_FILE_NAME) && storage.isExisting(ETH_KEY_INFO_FILE_NAME) } diff --git a/libauk/src/test/java/com/bitmark/libauk/storage/WalletStorageTest.kt b/libauk/src/test/java/com/bitmark/libauk/storage/WalletStorageUnitTest.kt similarity index 90% rename from libauk/src/test/java/com/bitmark/libauk/storage/WalletStorageTest.kt rename to libauk/src/test/java/com/bitmark/libauk/storage/WalletStorageUnitTest.kt index 872b345..ef08392 100644 --- a/libauk/src/test/java/com/bitmark/libauk/storage/WalletStorageTest.kt +++ b/libauk/src/test/java/com/bitmark/libauk/storage/WalletStorageUnitTest.kt @@ -5,12 +5,13 @@ import com.bitmark.libauk.util.newGsonInstance import com.nhaarman.mockitokotlin2.* import org.junit.Before import org.junit.Test +import org.junit.runner.RunWith import org.web3j.crypto.MnemonicUtils import org.web3j.crypto.RawTransaction import java.math.BigInteger import java.util.* -class WalletStorageTest { +class WalletStorageUnitTest { private lateinit var walletStorage: WalletStorage private val secureFileStorage: SecureFileStorage = mock() @@ -171,6 +172,24 @@ class WalletStorageTest { ) } +// @Test +// fun getTezosWallet() { +// val words = "victory fatigue diet funny senior coral motion canal leg elite hen model" +// val entropy = MnemonicUtils.generateEntropy(words) +// val seed = Seed(entropy, Date(), "Test") +// val seedString = newGsonInstance().toJson(seed) +// +// given(secureFileStorage.readOnFilesDir(WalletStorageImpl.SEED_FILE_NAME)).willReturn( +// seedString.toByteArray() +// ) +// +// walletStorage.getTezosWallet() +// .test() +// .assertValue { +// it.mainAddress == "tz10000" +// } +// } + @Test fun removeKeys() { given(secureFileStorage.isExisting(WalletStorageImpl.SEED_FILE_NAME)).willReturn(