diff --git a/app/build.gradle.kts b/app/build.gradle.kts index bb2b8ab488..d4fb854892 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -179,6 +179,7 @@ dependencies { implementation(projects.core.utils) implementation(projects.core.decompose) implementation(projects.core.error.ext) + implementation(projects.core.security) implementation(projects.libs.crypto) implementation(projects.libs.auth) implementation(projects.libs.blockchainSdk) @@ -353,7 +354,6 @@ dependencies { /** DI */ implementation(deps.hilt.android) - kapt(deps.hilt.kapt) kapt(deps.hilt.compilerx) @@ -385,10 +385,10 @@ dependencies { implementation(deps.prettyLogger) implementation(deps.decompose.ext.compose) implementation(deps.moshi.adapters) - implementation(deps.moshi.kotlin) ksp(deps.moshi.kotlin.codegen) kaptForObfuscatingVariants(deps.retrofit.response.type.keeper) + implementation(files("libs/dexprotector-annotations.jar")) /** Testing libraries */ testImplementation(projects.common.test) @@ -418,7 +418,6 @@ dependencies { implementation(deps.camera.camera2) implementation(deps.camera.lifecycle) implementation(deps.camera.view) - implementation(deps.listenableFuture) implementation(deps.mlKit.barcodeScanning) diff --git a/app/libs/dexprotector-annotations.jar b/app/libs/dexprotector-annotations.jar new file mode 100644 index 0000000000..3f2f98f07f Binary files /dev/null and b/app/libs/dexprotector-annotations.jar differ diff --git a/app/src/main/java/com/tangem/tap/core/security/DefaultDeviceSecurityInfoProvider.kt b/app/src/main/java/com/tangem/tap/core/security/DefaultDeviceSecurityInfoProvider.kt new file mode 100644 index 0000000000..7463e33236 --- /dev/null +++ b/app/src/main/java/com/tangem/tap/core/security/DefaultDeviceSecurityInfoProvider.kt @@ -0,0 +1,13 @@ +package com.tangem.tap.core.security + +import com.dexprotector.rtc.RtcStatus +import com.tangem.security.DeviceSecurityInfoProvider + +internal class DefaultDeviceSecurityInfoProvider : DeviceSecurityInfoProvider { + override val isRooted: Boolean + get() = RtcStatus.getRtcStatus().root + override val isBootloaderUnlocked: Boolean + get() = RtcStatus.getRtcStatus().unlockedBootloader + override val isXposed: Boolean + get() = RtcStatus.getRtcStatus().xposed +} \ No newline at end of file diff --git a/app/src/main/java/com/tangem/tap/di/core/security/SecurityModule.kt b/app/src/main/java/com/tangem/tap/di/core/security/SecurityModule.kt new file mode 100644 index 0000000000..b4e64ccb37 --- /dev/null +++ b/app/src/main/java/com/tangem/tap/di/core/security/SecurityModule.kt @@ -0,0 +1,20 @@ +package com.tangem.tap.di.core.security + +import com.tangem.security.DeviceSecurityInfoProvider +import com.tangem.tap.core.security.DefaultDeviceSecurityInfoProvider +import dagger.Module +import dagger.Provides +import dagger.hilt.InstallIn +import dagger.hilt.components.SingletonComponent +import javax.inject.Singleton + +@Module +@InstallIn(SingletonComponent::class) +internal object SecurityModule { + + @Provides + @Singleton + fun provideDeviceSecurityInfoProvider(): DeviceSecurityInfoProvider { + return DefaultDeviceSecurityInfoProvider() + } +} \ No newline at end of file diff --git a/core/security/.gitignore b/core/security/.gitignore new file mode 100644 index 0000000000..42afabfd2a --- /dev/null +++ b/core/security/.gitignore @@ -0,0 +1 @@ +/build \ No newline at end of file diff --git a/core/security/build.gradle.kts b/core/security/build.gradle.kts new file mode 100644 index 0000000000..7ff7fb7522 --- /dev/null +++ b/core/security/build.gradle.kts @@ -0,0 +1,4 @@ +plugins { + alias(deps.plugins.kotlin.jvm) + id("configuration") +} \ No newline at end of file diff --git a/core/security/src/main/kotlin/com/tangem/security/DeviceSecurityInfoProvider.kt b/core/security/src/main/kotlin/com/tangem/security/DeviceSecurityInfoProvider.kt new file mode 100644 index 0000000000..5be549d653 --- /dev/null +++ b/core/security/src/main/kotlin/com/tangem/security/DeviceSecurityInfoProvider.kt @@ -0,0 +1,7 @@ +package com.tangem.security + +interface DeviceSecurityInfoProvider { + val isRooted: Boolean + val isBootloaderUnlocked: Boolean + val isXposed: Boolean +} \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index 6a05fead77..50802ec815 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -153,19 +153,20 @@ include(":test:core") include(":test:mock") // region Core modules +include(":core:ab-tests") include(":core:analytics") include(":core:analytics:models") -include(":core:datasource") include(":core:config-toggles") -include(":core:ab-tests") -include(":core:navigation") -include(":core:res") -include(":core:ui") -include(":core:utils") +include(":core:datasource") include(":core:decompose") -include(":core:pagination") include(":core:error") include(":core:error:ext") +include(":core:navigation") +include(":core:pagination") +include(":core:res") +include(":core:security") +include(":core:ui") +include(":core:utils") // endregion Core modules // region Common modules