Не удалось сгенерировать пару ключей на Samsung S20, S20 + и S20 Ultra для биометрии c auth - PullRequest
0 голосов
/ 13 марта 2020

У нас возникла проблема с устройствами Samsung S20, S20 + и S20 Ultra при попытке создать пару ключей при регистрации аутентификации по отпечаткам пальцев в моем приложении. Мы видим эту проблему только на новом семействе Samsung S20 с чипсетом Exynos (международная модель), а не на Snapdragon, но не на других устройствах. Я проверил его с помощью US spe c Samsung S20 +, но не могу воспроизвести проблему.

Это исключение.

    Caused by: java.security.ProviderException: Failed to generate key pair
    at android.security.keystore.AndroidKeyStoreKeyPairGeneratorSpi.generateKeystoreKeyPair(AndroidKeyStoreKeyPairGeneratorSpi.java:556)
    at android.security.keystore.AndroidKeyStoreKeyPairGeneratorSpi.generateKeyPair(AndroidKeyStoreKeyPairGeneratorSpi.java:499)
    at java.security.KeyPairGenerator$Delegate.generateKeyPair(KeyPairGenerator.java:727)
    at com.x.biometricskit.provider.BioKeyGeneratorImpl.generateKeyPair(BioKeyGenerator.kt:70)
    ... 34 more
    Caused by: android.security.KeyStoreException: Unsupported digest
    at android.security.KeyStore.getKeyStoreException(KeyStore.java:1539)
    ... 38 more

Вот фрагмент кода для BioKeyGeneratorImpl.generateKeyPair.

fun generateKeyPair(keyStoreAlias: String): KeyPair? {

    val specBuilder: KeyGenParameterSpec.Builder =
                    KeyGenParameterSpec.Builder(keyStoreAlias, KeyProperties.PURPOSE_SIGN)
                        .setAlgorithmParameterSpec(ECGenParameterSpec(EC_KEY_SPEC))
                        .setDigests(
                            KeyProperties.DIGEST_SHA256,
                            KeyProperties.DIGEST_SHA384,
                            KeyProperties.DIGEST_SHA512
                        )
                        .setUserAuthenticationRequired(true)
                        .setIsStrongBoxBacked(true)
                        .setInvalidatedByBiometricEnrollment(true)

    val keyPairGenSpec = specBuilder.build()

    val keyPairGenerator =
        KeyPairGenerator.getInstance(
            KeyProperties.KEY_ALGORITHM_EC,
            "AndroidKeyStore"
        )

    keyPairGenerator.initialize(keyPairGenSpec)

    return keyPairGenerator.generateKeyPair()
}

1 Ответ

0 голосов
/ 16 марта 2020

Я изменил его на

KeyProperties.DIGEST_SHA256

setDigests(KeyProperties.DIGEST_SHA256)

, и это работает.

Надеюсь, это поможет кому-то там.

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