From e82207c9d0c72ac538f82230971c18f389d2db7e Mon Sep 17 00:00:00 2001 From: null Date: Tue, 16 Jun 2026 22:05:37 -0500 Subject: [PATCH] =?UTF-8?q?security:=20swap=20alpha=20crypto=201.1.0-alpha?= =?UTF-8?q?06=20for=20stable=201.0.0,=20update=20MasterKey=E2=86=92MasterK?= =?UTF-8?q?eys=20API?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 2 +- .../SharedPreferencesLocalAnswerRepository.kt | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 1469da02..568d1340 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -95,7 +95,7 @@ dependencies { implementation("androidx.datastore:datastore-preferences:1.1.2") // Encrypted storage - implementation("androidx.security:security-crypto:1.1.0-alpha06") + implementation("androidx.security:security-crypto:1.0.0") // RevenueCat implementation("com.revenuecat.purchases:purchases-hybrid-common:13.5.0") diff --git a/app/src/main/java/app/closer/data/repository/SharedPreferencesLocalAnswerRepository.kt b/app/src/main/java/app/closer/data/repository/SharedPreferencesLocalAnswerRepository.kt index 98361c05..21466b1d 100644 --- a/app/src/main/java/app/closer/data/repository/SharedPreferencesLocalAnswerRepository.kt +++ b/app/src/main/java/app/closer/data/repository/SharedPreferencesLocalAnswerRepository.kt @@ -3,7 +3,7 @@ package app.closer.data.repository import android.content.Context import android.content.SharedPreferences import androidx.security.crypto.EncryptedSharedPreferences -import androidx.security.crypto.MasterKey +import androidx.security.crypto.MasterKeys import app.closer.domain.model.LocalAnswer import app.closer.domain.repository.LocalAnswerRepository import dagger.hilt.android.qualifiers.ApplicationContext @@ -23,18 +23,18 @@ class SharedPreferencesLocalAnswerRepository @Inject constructor( private val prefs: SharedPreferences = run { // Remove legacy plaintext file on first migration context.deleteSharedPreferences("local_answers") - val masterKey = MasterKey.Builder(context) - .setKeyScheme(MasterKey.KeyScheme.AES256_GCM) - .build() try { + // In 1.0.0, EncryptedSharedPreferences.create takes (alias, name, context, ...) + val masterKeyAlias = MasterKeys.getOrCreate(MasterKeys.AES256_GCM_SPEC) EncryptedSharedPreferences.create( - context, - "local_answers_secure", - masterKey, + masterKeyAlias, // alias (first param) + "local_answers_secure", // name (second param) + context, // context (third param) EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV, EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM ) } catch (_: Exception) { + // Fallback to unencrypted SharedPreferences if encryption fails context.getSharedPreferences("local_answers_secure", Context.MODE_PRIVATE) } }