Android Biometri c: исключение IllegalStateException. По крайней мере, один биометр c должен быть зарегистрирован для создания ключей, требующих аутентификации пользователя. - PullRequest
2 голосов
/ 09 июля 2020

Я использую библиотеку android Biometricx для аутентификации по лицу и отпечатку пальца. Когда зарегистрирован только FaceID, и я пытаюсь создать секретный ключ, я получаю « IllegalStatException: для создания ключей, требующих аутентификации пользователя » * 1005, необходимо зарегистрировать хотя бы один биометри c. *

Я пытаюсь создать secretKey вот так

            try {
                
                mKeyGenerator.init(new KeyGenParameterSpec.Builder(KEY_NAME,
                        KeyProperties.PURPOSE_ENCRYPT |
                                KeyProperties.PURPOSE_DECRYPT)
                        .setBlockModes(KeyProperties.BLOCK_MODE_CBC)
                        // Require the user to authenticate with a fingerprint to authorize every use
                        // of the key
                        .setUserAuthenticationRequired(true)
                        .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7)
                        .build());
                secretKey = mKeyGenerator.generateKey();
            } catch (NoSuchAlgorithmException | InvalidAlgorithmParameterException
                    | CertificateException | IOException e) {
                Toast.makeText(this,"Create Key "+ e.getLocalizedMessage(), Toast.LENGTH_LONG).show();
            }

Код работает нормально при регистрации отпечатка пальца. Это происходит только при регистрации FaceId. Что мне здесь не хватает?

1 Ответ

2 голосов
/ 24 июля 2020

Проблема здесь. Все это связано с настройкой .setUserAuthenticationRequired(true)

. Если этот ключ установлен на true при генерации ключа, это означает, что должен быть зарегистрирован по крайней мере один безопасный биометрический / разблокирующий пин / шаблон. Поскольку ключ был установлен на true и присутствовали только небезопасные методы аутентификации, была выдана ошибка At least one biometric must be enrolled to create keys that require user authentication

Примечание. Face ID в Samsung на данный момент считается незащищенным. Это была причина вышеуказанной проблемы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...