diff --git a/app/src/main/java/com/tangem/tap/domain/visa/VisaCardScanHandler.kt b/app/src/main/java/com/tangem/tap/domain/visa/VisaCardScanHandler.kt index 551cffb6e1..46a8dadc5e 100644 --- a/app/src/main/java/com/tangem/tap/domain/visa/VisaCardScanHandler.kt +++ b/app/src/main/java/com/tangem/tap/domain/visa/VisaCardScanHandler.kt @@ -18,8 +18,8 @@ import com.tangem.domain.visa.repository.VisaActivationRepository import com.tangem.domain.visa.repository.VisaAuthRepository import com.tangem.operations.attestation.AttestCardKeyCommand import com.tangem.operations.attestation.AttestCardKeyResponse -import com.tangem.operations.sign.SignHashCommand -import com.tangem.operations.sign.SignHashResponse +import com.tangem.operations.attestation.AttestWalletKeyResponse +import com.tangem.operations.attestation.AttestWalletKeyTask import kotlinx.coroutines.suspendCancellableCoroutine import timber.log.Timber import javax.inject.Inject @@ -96,11 +96,15 @@ internal class VisaCardScanHandler @Inject constructor( return when (signChallengeResult) { is CompletionResult.Success -> { + val signature = signChallengeResult.data.cardSignature ?: run { + Timber.i("Failed to sign challenge with Wallet public key") + return CompletionResult.Failure(VisaCardScanError.FailedToSignChallenge.tangemError) + } + Timber.i("Challenge signed with Wallet public key") handleWalletAuthorizationTokens( cardWalletAddress = walletAddress.value, - signedChallenge = challengeResponse - .toSignedChallenge(signChallengeResult.data.signature.toHexString()), + signedChallenge = challengeResponse.toSignedChallenge(signature.toHexString()), ) } is CompletionResult.Failure -> { @@ -166,7 +170,6 @@ internal class VisaCardScanHandler @Inject constructor( } } - @Suppress("UnusedPrivateMember") val authorizationTokensResponse = visaAuthRepository.getAccessTokens( signedChallenge = challengeResponse.toSignedChallenge( signedChallenge = attestCardKeyResponse.cardSignature.toHexString(), @@ -217,10 +220,10 @@ internal class VisaCardScanHandler @Inject constructor( private suspend fun SessionContext.signChallengeWithWallet( publicKey: ByteArray, nonce: String, - ): CompletionResult { - val signHashCommand = SignHashCommand( - hash = nonce.hexToBytes(), - walletPublicKey = publicKey, + ): CompletionResult { + val signHashCommand = AttestWalletKeyTask( + publicKey = publicKey, + challenge = nonce.hexToBytes(), ) return suspendCancellableCoroutine { signHashCommand.run(session) { result -> diff --git a/domain/visa/models/src/main/kotlin/com/tangem/domain/visa/error/VisaError.kt b/domain/visa/models/src/main/kotlin/com/tangem/domain/visa/error/VisaError.kt index 2605ba3676..74fe7a43fb 100644 --- a/domain/visa/models/src/main/kotlin/com/tangem/domain/visa/error/VisaError.kt +++ b/domain/visa/models/src/main/kotlin/com/tangem/domain/visa/error/VisaError.kt @@ -25,6 +25,7 @@ enum class VisaCardScanError( FailedToCreateDerivationPath(104002001), FailedToFindWallet(104002002), FailedToFindDerivedWalletKey(104002003), + FailedToSignChallenge(104002004), } enum class VisaActivationError( diff --git a/gradle/tangem_dependencies.toml b/gradle/tangem_dependencies.toml index 5ee091d37a..6eef76c1e1 100644 --- a/gradle/tangem_dependencies.toml +++ b/gradle/tangem_dependencies.toml @@ -7,7 +7,7 @@ tangemBlockchainSdk = "develop-1067" #tangemBlockchainSdk = "0.0.1" # Keep it! - used for local builds -tangemCardSdk = "develop-468" +tangemCardSdk = "develop-472" #tangemCardSdk = "0.0.1" # Keep it! - used for local builds ^ tangemVico = "2.0.0-alpha.25-tangem12" #tangemVico = "0.0.1" # Keep it! - used for local builds ^