Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -104,7 +104,7 @@ private String addPrefixToKey(String key) {

private SharedPreferences getEncryptedSharedPreferences(boolean deleteOnFailure, Map<String, Object> options, Context context, String sharedPreferencesName) throws GeneralSecurityException, IOException {
try {
final SharedPreferences encryptedPreferences = initializeEncryptedSharedPreferencesManager(context, sharedPreferencesName);
final SharedPreferences encryptedPreferences = initializeEncryptedSharedPreferencesManager(context, sharedPreferencesName, deleteOnFailure);
boolean migrated = encryptedPreferences.getBoolean(PREF_KEY_MIGRATED, false);
if (!migrated) {
migrateToEncryptedPreferences(context, sharedPreferencesName, encryptedPreferences, deleteOnFailure, options);
Expand All @@ -121,15 +121,15 @@ private SharedPreferences getEncryptedSharedPreferences(boolean deleteOnFailure,
context.getSharedPreferences(sharedPreferencesName, Context.MODE_PRIVATE).edit().clear().apply();

try {
return initializeEncryptedSharedPreferencesManager(context, sharedPreferencesName);
return initializeEncryptedSharedPreferencesManager(context, sharedPreferencesName, deleteOnFailure);
} catch (Exception f) {
Log.e(TAG, "initialization after reset failed", f);
throw f;
}
}
}

private SharedPreferences initializeEncryptedSharedPreferencesManager(Context context, String sharedPreferencesName) throws GeneralSecurityException, IOException {
private SharedPreferences initializeEncryptedSharedPreferencesManager(Context context, String sharedPreferencesName, boolean deleteOnFailure) throws GeneralSecurityException, IOException {
MasterKey masterKey = new MasterKey.Builder(context)
.setKeyGenParameterSpec(new KeyGenParameterSpec.Builder(
MasterKey.DEFAULT_MASTER_KEY_ALIAS,
Expand All @@ -140,12 +140,24 @@ private SharedPreferences initializeEncryptedSharedPreferencesManager(Context co
.build())
.build();

return EncryptedSharedPreferences.create(
try {
return EncryptedSharedPreferences.create(
context,
sharedPreferencesName,
masterKey,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
);
} catch (Exception e) {
context.deleteSharedPreferences(sharedPreferencesName);
}

return EncryptedSharedPreferences.create(
context,
sharedPreferencesName,
masterKey,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
);
}

Expand Down