fun createKey() {
val mKeyStore: KeyStore
val mKeyGenerator: KeyGenerator
val androidKeyStore = "AndroidKeyStore"
val keyName = "my_key"
try {
mKeyStore = KeyStore.getInstance(androidKeyStore)
mKeyStore.load(null)
mKeyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, androidKeyStore)
mKeyGenerator.init(KeyGenParameterSpec.Builder(keyName, KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT).setBlockModes(KeyProperties.BLOCK_MODE_CBC)
.setKeySize(256)
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7)
.setUserAuthenticationRequired(true)
.setUserAuthenticationParameters(0,KeyProperties.AUTH_BIOMETRIC_STRONG)
.setInvalidatedByBiometricEnrollment(true)
.build())
mKeyGenerator.generateKey()
} catch (e: Exception) {
logger.log(Level.FINEST, e.message, e)
}
}
И вызов его в onAuthenticationSucceeded BiometricPrompt.
Однако добавление нового отпечатка пальца не делает недействительным ранее созданный ключ и принуждение пользователя повторно ввести свои учетные данные. Что-то не так с моей реализацией?
Этим методом я создаю ключ, используемый для входа в систему через биометрию [code] fun createKey() { val mKeyStore: KeyStore val mKeyGenerator: KeyGenerator val androidKeyStore = "AndroidKeyStore" val keyName = "my_key"
try { mKeyStore = KeyStore.getInstance(androidKeyStore) mKeyStore.load(null) mKeyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, androidKeyStore) mKeyGenerator.init(KeyGenParameterSpec.Builder(keyName, KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT).setBlockModes(KeyProperties.BLOCK_MODE_CBC) .setKeySize(256) .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7) .setUserAuthenticationRequired(true) .setUserAuthenticationParameters(0,KeyProperties.AUTH_BIOMETRIC_STRONG) .setInvalidatedByBiometricEnrollment(true) .build()) mKeyGenerator.generateKey() } catch (e: Exception) { logger.log(Level.FINEST, e.message, e) } } [/code] И вызов его в onAuthenticationSucceeded BiometricPrompt. Однако добавление нового отпечатка пальца не делает недействительным ранее созданный ключ и принуждение пользователя повторно ввести свои учетные данные. Что-то не так с моей реализацией?