Updated on 2026-08-14

This commit is contained in:
Tangem 2024-08-23 10:59:48 +03:00
parent be115fc505
commit 0108bb2022
2 changed files with 22 additions and 4 deletions

View file

@ -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
}
}
}

View file

@ -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)
}
}