Updated on 2026-08-14
This commit is contained in:
parent
be115fc505
commit
0108bb2022
2 changed files with 22 additions and 4 deletions
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue