uf-client-service/src/main/kotlin/com/kynetics/uf/android/content/EncryptedSharedPreferences.kt
/*
* Copyright © 2017-2023 Kynetics LLC
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*/
package com.kynetics.uf.android.content
import android.content.Context
import android.content.SharedPreferences
import androidx.security.crypto.EncryptedSharedPreferences
import androidx.security.crypto.MasterKeys
object EncryptedSharedPreferences {
private const val SHARED_PREFERENCE_FILE_NAME = "UF_SECURE_SHARED_FILE"
fun get(context: Context): SharedPreferences {
return EncryptedSharedPreferences
.create(
SHARED_PREFERENCE_FILE_NAME,
masterKeyAlias(),
context,
EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV,
EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM
)
}
private fun masterKeyAlias(): String {
val keyGenParameterSpec = MasterKeys.AES256_GCM_SPEC
return MasterKeys.getOrCreate(keyGenParameterSpec)
}
}