Как сгенерировать ключ в AndroidKeyStore, зашифрованный другим ключом? - PullRequest
0 голосов
/ 24 мая 2019

Я использую аутентификацию по отпечатку пальца в своем приложении.Это работает хорошо, но когда setUserAuthenticationRequired включен, мы можем вызывать метод doFinal () только один раз.Но мне нужно вызывать его несколько раз, чтобы расшифровать несколько строк.

Я хочу использовать ключ отпечатка пальца для шифрования другого ключа, и это второе использование для шифрования моих данных.Так что я мог бы вызывать doFinal () несколько раз.Также желательно хранить оба ключа в AndroidKeyStore, если это возможно.Поэтому, когда мне нужно расшифровать мои данные, я хочу получить первый ключ с помощью аутентификации по отпечатку пальца, затем извлечь второй ключ, используя первый ключ, и, наконец, расшифровать все мои данные, используя второй ключ.

Но как создать второй ключ, зашифрованный первым(отпечаток пальца) ключ?Можно ли сохранить второй ключ в AndroidKeyStore?

Этот код, который я использую для создания ключа для аутентификации по отпечатку пальца:

val keyGenerator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES, PROVIDER_ANDROID_KEYSTORE)
    val builder = KeyGenParameterSpec.Builder("MyKeyAlias", KeyProperties.PURPOSE_ENCRYPT or KeyProperties.PURPOSE_DECRYPT)
            .setBlockModes(KeyProperties.BLOCK_MODE_CBC)
            .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_PKCS7)
            .setUserAuthenticationRequired(true)
    keyGenerator.init(builder.build())
    keyGenerator.generateKey()
...