From 0108bb20229ff916c2120aa9ffb36fb8236b65a0 Mon Sep 17 00:00:00 2001 From: Tangem Date: Fri, 23 Aug 2024 10:59:48 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../crypto/Sha256SignatureVerifier.kt | 18 ++++++++++++++++-- .../com/tangem/datasource/di/SecurityModule.kt | 8 ++++++-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/core/datasource/src/main/java/com/tangem/datasource/crypto/Sha256SignatureVerifier.kt b/core/datasource/src/main/java/com/tangem/datasource/crypto/Sha256SignatureVerifier.kt index dc2c197c50..5353f15353 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/crypto/Sha256SignatureVerifier.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/crypto/Sha256SignatureVerifier.kt @@ -2,16 +2,30 @@ package com.tangem.datasource.crypto import com.tangem.common.extensions.hexToBytes import com.tangem.crypto.CryptoUtils +import com.tangem.datasource.api.common.config.ApiConfig +import com.tangem.datasource.api.common.config.ApiEnvironment +import com.tangem.datasource.api.common.config.managers.ApiConfigsManager import com.tangem.datasource.config.ConfigManager -internal class Sha256SignatureVerifier(private val configManager: ConfigManager) : DataSignatureVerifier { +internal class Sha256SignatureVerifier( + private val configManager: ConfigManager, + private val apiConfigsManager: ApiConfigsManager, +) : DataSignatureVerifier { override fun verifySignature(signature: String, data: String): Boolean { - val pubKey = configManager.config.express?.signVerifierPublicKey ?: return false + val pubKey = getPubKey() ?: return false return CryptoUtils.verify( publicKey = pubKey.hexToBytes().takeLast(n = 65).toByteArray(), message = data.toByteArray(), signature = signature.hexToBytes(), ) } + + private fun getPubKey(): String? { + val expressConfig = apiConfigsManager.getEnvironmentConfig(ApiConfig.ID.Express) + return when (expressConfig.environment) { + ApiEnvironment.PROD -> configManager.config.express?.signVerifierPublicKey + else -> configManager.config.devExpress?.signVerifierPublicKey + } + } } \ No newline at end of file diff --git a/core/datasource/src/main/java/com/tangem/datasource/di/SecurityModule.kt b/core/datasource/src/main/java/com/tangem/datasource/di/SecurityModule.kt index b5c2f07c49..b4550b25b2 100644 --- a/core/datasource/src/main/java/com/tangem/datasource/di/SecurityModule.kt +++ b/core/datasource/src/main/java/com/tangem/datasource/di/SecurityModule.kt @@ -1,5 +1,6 @@ package com.tangem.datasource.di +import com.tangem.datasource.api.common.config.managers.ApiConfigsManager import com.tangem.datasource.config.ConfigManager import com.tangem.datasource.crypto.DataSignatureVerifier import com.tangem.datasource.crypto.Sha256SignatureVerifier @@ -15,7 +16,10 @@ internal object SecurityModule { @Provides @Singleton - fun provideDataSignatureVerifier(configManager: ConfigManager): DataSignatureVerifier { - return Sha256SignatureVerifier(configManager) + fun provideDataSignatureVerifier( + configManager: ConfigManager, + apiConfigsManager: ApiConfigsManager, + ): DataSignatureVerifier { + return Sha256SignatureVerifier(configManager, apiConfigsManager) } } \ No newline at end of file