Implement Rust-owned Android Keystore secure storage (#93)
Dependency security audit / rustsec (push) Failing after 23s

This commit is contained in:
hugo committed 2026-10-08 16:22:57 +02:00
1 parent 874c8139a4
commit 1abd75282e
36 files changed
+4380 -37

No files matched your search

+1
View File
@@ -1,4 +1,5 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.USE_BIOMETRIC" />
<application
android:name=".IronStorageApplication"
android:allowBackup="false"
@@ -1,24 +1,33 @@
package de.rfc1437.ironstorage
import android.os.Bundle
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.activity.viewModels
import androidx.compose.material3.MaterialTheme
import androidx.fragment.app.FragmentActivity
import dagger.hilt.android.AndroidEntryPoint
import de.rfc1437.ironstorage.core.ShellRepository
import de.rfc1437.ironstorage.features.ShellViewModel
import de.rfc1437.ironstorage.platform.AndroidKeystoreAdapter
import javax.inject.Inject
@AndroidEntryPoint
class MainActivity : ComponentActivity() {
class MainActivity : FragmentActivity() {
@Inject lateinit var keystore: AndroidKeystoreAdapter
@Inject lateinit var repository: ShellRepository
private val viewModel: ShellViewModel by viewModels()
override fun onDestroy() {
keystore.detach(this)
super.onDestroy()
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
keystore.attach(this)
enableEdgeToEdge()
setContent {
MaterialTheme {
@@ -8,6 +8,7 @@ import dagger.hilt.android.qualifiers.ApplicationContext
import dagger.hilt.components.SingletonComponent
import de.rfc1437.ironstorage.core.NativeFixtureShellRepository
import de.rfc1437.ironstorage.core.ShellRepository
import de.rfc1437.ironstorage.platform.AndroidKeystoreAdapter
import de.rfc1437.ironstorage.platform.privateDirectories
import javax.inject.Singleton
import kotlinx.coroutines.CoroutineScope
@@ -19,10 +20,18 @@ import kotlinx.coroutines.SupervisorJob
object ShellModule {
@Provides
@Singleton
fun shellRepository(@ApplicationContext context: Context): ShellRepository =
NativeFixtureShellRepository(
context,
CoroutineScope(SupervisorJob() + Dispatchers.Main.immediate),
{ privateDirectories(context) }
)
fun keystore(@ApplicationContext context: Context): AndroidKeystoreAdapter =
AndroidKeystoreAdapter(context)
@Provides
@Singleton
fun shellRepository(
@ApplicationContext context: Context,
keystore: AndroidKeystoreAdapter
): ShellRepository = NativeFixtureShellRepository(
context,
CoroutineScope(SupervisorJob() + Dispatchers.Main.immediate),
{ privateDirectories(context) },
keystore
)
}