Когда мы создаем набор ключей со следующим кодом:
val generator = KeyPairGenerator.getInstance(RSA)
generator.initialize(KEY_SIZE)
val keyPair = generator.genKeyPair()
Затем, когда мы вызываем следующее:
val cipher = Cipher.getInstance(RSA_TRANSFORMATION)
cipher.init(Cipher.DECRYPT_MODE, privateKey)
Выполнение метода init выполняется в течение 0-2 миллисекунд.
Но когда мы пытаемся создать ключ со следующим, нам нужно сохранить закрытый ключ в хранилище ключей:
val keyPairGenerator = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore")
keyPairGenerator.initialize(keyGenParameterSpecBuilder.getProvider()
.setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_RSA_OAEP)
.setDigests(KeyProperties.DIGEST_SHA1)
.setKeySize(KEY_SIZE)
.build())
keyPairGenerator.genKeyPair()
Этот же метод init занимает более 35-40 миллисекунд для выполнения.Также, если мы комментируем setEncryptionPaddings и setDigest, метод init вызывает исключение.
Ожидаемый результат: возможность сохранить закрытый ключ в KeyStore и выполнение метода init за 0-2 миллисекунды, как это происходит без генератора провайдера.