From b4d3907dbcd9f1753c3f1f9a1c975acbba68c2bc Mon Sep 17 00:00:00 2001 From: Tangem Date: Mon, 28 Apr 2025 18:39:02 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../tap/domain/tasks/visa/VisaCardActivationTask.kt | 10 +++++----- .../tasks/visa/VisaCustomerWalletApproveTask.kt | 11 ++++++----- .../domain/walletconnect/WalletConnectSdkHelper.kt | 8 ++++---- .../ethereum/DefaultWcEthMessageSignUseCase.kt | 11 ++++++----- gradle/tangem_dependencies.toml | 2 +- 5 files changed, 22 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/com/tangem/tap/domain/tasks/visa/VisaCardActivationTask.kt b/app/src/main/java/com/tangem/tap/domain/tasks/visa/VisaCardActivationTask.kt index 521c1444d8..dd4e607371 100644 --- a/app/src/main/java/com/tangem/tap/domain/tasks/visa/VisaCardActivationTask.kt +++ b/app/src/main/java/com/tangem/tap/domain/tasks/visa/VisaCardActivationTask.kt @@ -4,7 +4,7 @@ import arrow.core.Either import arrow.core.getOrElse import arrow.core.raise.catch import arrow.core.raise.either -import com.tangem.blockchain.blockchains.ethereum.EthereumUtils +import com.tangem.blockchain.common.UnmarshalHelper import com.tangem.common.CompletionResult import com.tangem.common.card.EllipticCurve import com.tangem.common.core.* @@ -359,11 +359,11 @@ class VisaCardActivationTask @AssistedInject constructor( otpStorage.getOTP(cardId) ?: return CompletionResult.Failure(VisaActivationError.MissingRootOTP.tangemError) } - val rsvSignature = EthereumUtils.prepareSignedMessageData( - signedHash = response.signature, - hashToSign = dataToSign.hashToSign.hexToBytes(), + val rsvSignature = UnmarshalHelper.unmarshalSignatureExtended( + signature = response.signature, + hash = dataToSign.hashToSign.hexToBytes(), publicKey = derivedPublicKey.publicKey.toDecompressedPublicKey(), - ) + ).asRSVLegacyEVM().toHexString() val signedActivationData = dataToSign.sign( rootOTP = otp.rootOTP.toHexString(), diff --git a/app/src/main/java/com/tangem/tap/domain/tasks/visa/VisaCustomerWalletApproveTask.kt b/app/src/main/java/com/tangem/tap/domain/tasks/visa/VisaCustomerWalletApproveTask.kt index 2fb700cbd7..55dd835a3e 100644 --- a/app/src/main/java/com/tangem/tap/domain/tasks/visa/VisaCustomerWalletApproveTask.kt +++ b/app/src/main/java/com/tangem/tap/domain/tasks/visa/VisaCustomerWalletApproveTask.kt @@ -1,7 +1,7 @@ package com.tangem.tap.domain.tasks.visa import arrow.core.getOrElse -import com.tangem.blockchain.blockchains.ethereum.EthereumUtils +import com.tangem.blockchain.common.UnmarshalHelper import com.tangem.common.CompletionResult import com.tangem.common.card.Card import com.tangem.common.card.CardWallet @@ -12,6 +12,7 @@ import com.tangem.common.core.CompletionCallback import com.tangem.common.core.TangemSdkError import com.tangem.common.extensions.hexToBytes import com.tangem.common.extensions.toDecompressedPublicKey +import com.tangem.common.extensions.toHexString import com.tangem.core.error.ext.tangemError import com.tangem.crypto.hdWallet.DerivationPath import com.tangem.crypto.hdWallet.bip32.ExtendedPublicKey @@ -175,12 +176,12 @@ class VisaCustomerWalletApproveTask( signTask.run(session) { result -> when (result) { is CompletionResult.Success -> { - val rsvSignature = EthereumUtils.prepareSignedMessageData( - signedHash = result.data.signature, - hashToSign = hashToSign, + val rsvSignature = UnmarshalHelper.unmarshalSignatureExtended( + signature = result.data.signature, + hash = hashToSign, publicKey = extendedPublicKey?.publicKey?.toDecompressedPublicKey() ?: targetWalletPublicKey.toDecompressedPublicKey(), - ) + ).asRSVLegacyEVM().toHexString() scanCard( session = session, diff --git a/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectSdkHelper.kt b/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectSdkHelper.kt index ea5b87285c..2ac037d2ec 100644 --- a/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectSdkHelper.kt +++ b/app/src/main/java/com/tangem/tap/domain/walletconnect/WalletConnectSdkHelper.kt @@ -389,11 +389,11 @@ class WalletConnectSdkHelper { return when (type) { WcSignMessage.WCSignType.SOLANA_MESSAGE -> getSolanaResultString(signedHash) - else -> EthereumUtils.prepareSignedMessageData( - signedHash = signedHash, - hashToSign = hashToSign, + else -> UnmarshalHelper.unmarshalSignatureExtended( + signature = signedHash, + hash = hashToSign, publicKey = wallet.publicKey.blockchainKey.toDecompressedPublicKey(), - ) + ).asRSVLegacyEVM().toHexString() } } is CompletionResult.Failure -> { diff --git a/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/network/ethereum/DefaultWcEthMessageSignUseCase.kt b/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/network/ethereum/DefaultWcEthMessageSignUseCase.kt index 4472b581fa..6f6a6565a8 100644 --- a/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/network/ethereum/DefaultWcEthMessageSignUseCase.kt +++ b/data/wallet-connect/src/main/kotlin/com/tangem/data/walletconnect/network/ethereum/DefaultWcEthMessageSignUseCase.kt @@ -1,13 +1,14 @@ package com.tangem.data.walletconnect.network.ethereum import arrow.core.left -import com.tangem.blockchain.blockchains.ethereum.EthereumUtils import com.tangem.blockchain.blockchains.ethereum.EthereumUtils.toKeccak import com.tangem.blockchain.common.HEX_PREFIX +import com.tangem.blockchain.common.UnmarshalHelper import com.tangem.blockchain.extensions.isAscii import com.tangem.common.extensions.hexToBytes import com.tangem.common.extensions.toDecompressedPublicKey import com.tangem.data.walletconnect.utils.BlockAidVerificationDelegate +import com.tangem.common.extensions.toHexString import com.tangem.data.walletconnect.respond.WcRespondService import com.tangem.data.walletconnect.sign.BaseWcSignUseCase import com.tangem.data.walletconnect.sign.SignCollector @@ -55,11 +56,11 @@ internal class DefaultWcEthMessageSignUseCase @AssistedInject constructor( .onLeft { emit(state.toResult(it.left())) } .getOrNull() ?: return - val respond = EthereumUtils.prepareSignedMessageData( - signedHash = signedHash, - hashToSign = hashToSign, + val respond = UnmarshalHelper.unmarshalSignatureExtended( + signature = signedHash, + hash = hashToSign, publicKey = walletManager.wallet.publicKey.blockchainKey.toDecompressedPublicKey(), - ) + ).asRSVLegacyEVM().toHexString() val wcRespondResult = respondService.respond(rawSdkRequest, respond) emit(state.toResult(wcRespondResult)) diff --git a/gradle/tangem_dependencies.toml b/gradle/tangem_dependencies.toml index ac75068c2a..0d1f7d70f6 100644 --- a/gradle/tangem_dependencies.toml +++ b/gradle/tangem_dependencies.toml @@ -5,7 +5,7 @@ # https://github.com/tangem/tangem-sdk-android/ # https://github.com/tangem/vico -tangemBlockchainSdk = "develop-1046" +tangemBlockchainSdk = "develop-1051" #tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds tangemCardSdk = "develop-455" #tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^