From 45fc03ac9a8e20fffee164f48423408afb2fc2f3 Mon Sep 17 00:00:00 2001 From: Louis CAD Date: Tue, 6 Oct 2026 13:42:15 +0200 Subject: [PATCH 1/2] chore: Update Core for fake Block Store support --- Core | 2 +- .../backup/AuthenticatorFullBackupAgent.kt | 1 + .../auth/backup/BlockStoreBackup.kt | 27 +++++++------------ 3 files changed, 11 insertions(+), 19 deletions(-) diff --git a/Core b/Core index 10756a2c..89a66ff3 160000 --- a/Core +++ b/Core @@ -1 +1 @@ -Subproject commit 10756a2c8e09d3113c2f47cb279338e7bf0b053c +Subproject commit 89a66ff32ebc623c4ca07e364b80a9a248d630bf diff --git a/app/src/standard/kotlin/com/infomaniak/auth/backup/AuthenticatorFullBackupAgent.kt b/app/src/standard/kotlin/com/infomaniak/auth/backup/AuthenticatorFullBackupAgent.kt index 28a64e7a..54cc678d 100644 --- a/app/src/standard/kotlin/com/infomaniak/auth/backup/AuthenticatorFullBackupAgent.kt +++ b/app/src/standard/kotlin/com/infomaniak/auth/backup/AuthenticatorFullBackupAgent.kt @@ -34,6 +34,7 @@ class AuthenticatorFullBackupAgent : FullBackupAgent(RestorationPolicy.AllBacked } override fun onFullBackup(data: FullBackupDataOutput) = withBlockStoreCredentialsBackup( + data = data, backupCredentials = { BlockStoreBackup.backupPasskeys() } ) { super.onFullBackup(data) diff --git a/app/src/standard/kotlin/com/infomaniak/auth/backup/BlockStoreBackup.kt b/app/src/standard/kotlin/com/infomaniak/auth/backup/BlockStoreBackup.kt index 227f3c60..fa87a996 100644 --- a/app/src/standard/kotlin/com/infomaniak/auth/backup/BlockStoreBackup.kt +++ b/app/src/standard/kotlin/com/infomaniak/auth/backup/BlockStoreBackup.kt @@ -19,25 +19,21 @@ package com.infomaniak.auth.backup -import com.google.android.gms.auth.blockstore.Blockstore import com.google.android.gms.auth.blockstore.BlockstoreClient -import com.google.android.gms.auth.blockstore.RetrieveBytesRequest -import com.google.android.gms.auth.blockstore.StoreBytesData +import com.infomaniak.core.auth.backup.BlockStore import com.infomaniak.core.common.cancellable import com.infomaniak.core.sentry.SentryLog import com.infomaniak.multiplatform_authenticator.core.PasskeysStorageLocation import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.invoke -import kotlinx.coroutines.tasks.await import kotlinx.serialization.ExperimentalSerializationApi import kotlinx.serialization.decodeFromByteArray import kotlinx.serialization.encodeToByteArray import kotlinx.serialization.protobuf.ProtoBuf -import splitties.init.appCtx import java.io.File object BlockStoreBackup { - private val blockstoreClient = Blockstore.getClient(appCtx) + private val blockStore = BlockStore.instance private const val PASSKEYS_KEY = "pk" private const val TAG = "BlockStoreBackup" @@ -63,15 +59,15 @@ object BlockStoreBackup { scope.setExtra("Max size", "${BlockstoreClient.MAX_SIZE}B") scope.setExtra("Actual size", "${keySizeInBytes}B + ${contentSizeInBytes}B = ${entireSize}B") } + // shouldBackupToCloud = blockStore.isE2eeAvailable(), return false } - val storeRequest = StoreBytesData.Builder() - .setKey(PASSKEYS_KEY) - .setShouldBackupToCloud(true) - .setBytes(protobufEncodedBytes) - .build() return runCatching { - blockstoreClient.storeBytes(storeRequest).await() + blockStore.storeBytes( + key = PASSKEYS_KEY, + shouldBackupToCloud = true, + bytes = protobufEncodedBytes + ) true }.cancellable().getOrElse { throwable -> SentryLog.wtf(TAG, "Failed to backup passkeys", throwable) @@ -93,10 +89,7 @@ object BlockStoreBackup { } private suspend fun readPasskeysBackup(): PasskeysBackup? { - val retrieveRequest = RetrieveBytesRequest.Builder() - .setKeys(listOf(PASSKEYS_KEY)) - .build() - val bytes = blockstoreClient.retrieveBytes(retrieveRequest).await().blockstoreDataMap[PASSKEYS_KEY]?.bytes + val bytes = blockStore.retrieveBytes(listOf(PASSKEYS_KEY))[PASSKEYS_KEY] ?: return null return ProtoBuf.decodeFromByteArray(bytes) } @@ -133,8 +126,6 @@ object BlockStoreBackup { isPublic = isPublic, ) - private suspend fun isE2eeAvailable(): Boolean = blockstoreClient.isEndToEndEncryptionAvailable.await() - private data class KeyPairReference( val userId: Long, val keyId: String, From 4ec397677b9633382d6aa02da5f0ef4744914037 Mon Sep 17 00:00:00 2001 From: Louis CAD Date: Tue, 6 Oct 2026 13:48:03 +0200 Subject: [PATCH 2/2] chore: Remove commented code --- .../kotlin/com/infomaniak/auth/backup/BlockStoreBackup.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/standard/kotlin/com/infomaniak/auth/backup/BlockStoreBackup.kt b/app/src/standard/kotlin/com/infomaniak/auth/backup/BlockStoreBackup.kt index fa87a996..f55a883d 100644 --- a/app/src/standard/kotlin/com/infomaniak/auth/backup/BlockStoreBackup.kt +++ b/app/src/standard/kotlin/com/infomaniak/auth/backup/BlockStoreBackup.kt @@ -59,7 +59,6 @@ object BlockStoreBackup { scope.setExtra("Max size", "${BlockstoreClient.MAX_SIZE}B") scope.setExtra("Actual size", "${keySizeInBytes}B + ${contentSizeInBytes}B = ${entireSize}B") } - // shouldBackupToCloud = blockStore.isE2eeAvailable(), return false } return runCatching {