diff --git a/app/src/main/java/com/tangem/tap/domain/TangemSigner.kt b/app/src/main/java/com/tangem/tap/domain/TangemSigner.kt index 1042913d5d..20d1eda08c 100644 --- a/app/src/main/java/com/tangem/tap/domain/TangemSigner.kt +++ b/app/src/main/java/com/tangem/tap/domain/TangemSigner.kt @@ -18,7 +18,7 @@ class TangemSigner( override suspend fun sign(hash: ByteArray, cardId: String, publicKey: Wallet.PublicKey): CompletionResult { return suspendCoroutine { continuation -> - val command = SignHashTask(hash, publicKey.seedKey) + val command = SignHashTask(hash, publicKey) tangemSdk.startSessionWithRunnable( runnable = command, cardId = cardId, @@ -43,7 +43,7 @@ class TangemSigner( override suspend fun sign(hashes: List, cardId: String, publicKey: Wallet.PublicKey): CompletionResult> { return suspendCoroutine { continuation -> - val task = SignHashesTask(hashes, publicKey.seedKey) + val task = SignHashesTask(hashes, publicKey) tangemSdk.startSessionWithRunnable( runnable = task, cardId = cardId, diff --git a/app/src/main/java/com/tangem/tap/domain/tasks/SignHashTask.kt b/app/src/main/java/com/tangem/tap/domain/tasks/SignHashTask.kt index 3c24418b42..58520125ce 100644 --- a/app/src/main/java/com/tangem/tap/domain/tasks/SignHashTask.kt +++ b/app/src/main/java/com/tangem/tap/domain/tasks/SignHashTask.kt @@ -1,5 +1,6 @@ package com.tangem.tap.domain.tasks +import com.tangem.blockchain.common.Wallet import com.tangem.common.CompletionResult import com.tangem.common.core.CardSession import com.tangem.common.core.CardSessionRunnable @@ -15,17 +16,17 @@ class TangemSignHashResponse( class SignHashTask( private val hash: ByteArray, - private val walletPublicKey: ByteArray, + private val publicKey: Wallet.PublicKey, ) : CardSessionRunnable { override fun run(session: CardSession, callback: CompletionCallback) { - SignHashCommand(hash, walletPublicKey).run(session) { response -> + SignHashCommand(hash, publicKey.seedKey, publicKey.derivationPath).run(session) { response -> when (response) { is CompletionResult.Success -> { callback(CompletionResult.Success(TangemSignHashResponse( response.data.signature, response.data.totalSignedHashes, - session.environment.card?.wallet(walletPublicKey)?.remainingSignatures + session.environment.card?.wallet(publicKey.seedKey)?.remainingSignatures ))) } is CompletionResult.Failure -> diff --git a/app/src/main/java/com/tangem/tap/domain/tasks/SignHashesTask.kt b/app/src/main/java/com/tangem/tap/domain/tasks/SignHashesTask.kt index 2755d9aa82..4d25a1de56 100644 --- a/app/src/main/java/com/tangem/tap/domain/tasks/SignHashesTask.kt +++ b/app/src/main/java/com/tangem/tap/domain/tasks/SignHashesTask.kt @@ -1,5 +1,6 @@ package com.tangem.tap.domain.tasks +import com.tangem.blockchain.common.Wallet import com.tangem.common.CompletionResult import com.tangem.common.core.CardSession import com.tangem.common.core.CardSessionRunnable @@ -15,16 +16,16 @@ class TangemSignHashesResponse( class SignHashesTask( private val hashes: Collection, - private val walletPublicKey: ByteArray, + private val publicKey: Wallet.PublicKey, ) : CardSessionRunnable { override fun run(session: CardSession, callback: CompletionCallback) { - SignHashesCommand(hashes.toTypedArray(), walletPublicKey).run(session) { response -> + SignHashesCommand(hashes.toTypedArray(), publicKey.seedKey, publicKey.derivationPath).run(session) { response -> when (response) { is CompletionResult.Success -> { callback(CompletionResult.Success(TangemSignHashesResponse( response.data.signatures, response.data.totalSignedHashes, - session.environment.card?.wallet(walletPublicKey)?.remainingSignatures + session.environment.card?.wallet(publicKey.seedKey)?.remainingSignatures ))) } is CompletionResult.Failure -> diff --git a/app/src/main/java/com/tangem/tap/domain/tasks/product/ScanProductTask.kt b/app/src/main/java/com/tangem/tap/domain/tasks/product/ScanProductTask.kt index 6a82fd222f..4aa99403d2 100644 --- a/app/src/main/java/com/tangem/tap/domain/tasks/product/ScanProductTask.kt +++ b/app/src/main/java/com/tangem/tap/domain/tasks/product/ScanProductTask.kt @@ -139,7 +139,7 @@ private class ScanWalletProcessor( session: CardSession, callback: (result: CompletionResult) -> Unit ) { - val derivationPaths = collectDerivationPaths(card) + val derivationPaths = collectDerivationPaths(card)?.distinct() val wallet = card.wallets.firstOrNull { it.curve == EllipticCurve.Secp256k1 } if (derivationPaths.isNullOrEmpty() || wallet == null || wallet.chainCode == null) {