В iOS я использую Keychain для аппаратного хранения. На Android я хочу использовать StrongBox, который является наиболее безопасным вариантом аппаратного хранилища ключей.
Однако я не нашел кода, с помощью которого я мог бы добавить это для React Native в своем приложении, мне нужно:
- Определить, поддерживается ли StrongBox на устройстве
- Сгенерируйте и сохраните ключ с помощью StrongBox
- Используйте это безопасно из React Native
Я попробовал использовать собственный код через мост, следуя устаревшей технологии подход:
Код: Выделить всё
// Check StrongBox support
fun isStrongBoxSupported(context: Context): Boolean {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
context.packageManager.hasSystemFeature(PackageManager.FEATURE_STRONGBOX_KEYSTORE)
} else false
}
// Generate StrongBox-backed key
@TargetApi(Build.VERSION_CODES.P)
fun generateStrongBoxKey(alias: String) {
val keyPairGenerator = KeyPairGenerator.getInstance(
KeyProperties.KEY_ALGORITHM_RSA, "AndroidKeyStore"
)
val parameterSpec = KeyGenParameterSpec.Builder(
alias,
KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT
)
.setDigests(KeyProperties.DIGEST_SHA256)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_PKCS1)
.setIsStrongBoxBacked(true)
.build()
keyPairGenerator.initialize(parameterSpec)
keyPairGenerator.generateKeyPair()
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... ort-and-st
Мобильная версия