2016-02-08 1 views
2

KeyPairGeneratorSpec устарел с API 23. Как вы справляетесь с этим предупреждением?KeyPairGeneratorSpec устарел

Пример кода:

KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore"); 
kpg.initialize(new KeyPairGeneratorSpec.Builder(context).build()); 
+0

Точка: я использую Kotlin сейчас для разработки, но это предупреждение по-прежнему следующее: D – CoDe

ответ

2

согласно documentation, вы должны использовать вместо KeyGenParameterSpec. Например (для ключа подписи RSA):

KeyPairGenerator kpg = KeyPairGenerator.getInstance(
     KeyProperties.KEY_ALGORITHM_RSA, "AndroidKeyStore"); 
kpg.initialize(new KeyGenParameterSpec.Builder(
     "mykey", KeyProperties.PURPOSE_SIGN) 
     .setDigests(KeyProperties.DIGEST_SHA256) 
     .setSignaturePaddings(KeyProperties.SIGNATURE_PADDING_RSA_PSS) 
     .build()); 

Дополнительные параметры для настройки дайджеста и режима заполнения требуются. Это происходит из-за того, что после хороших криптозащитных методов AndroidKeyStore теперь блокирует способы использования ключа (подписание с расшифровкой, дайджест и режимами заполнения и т. Д.) До указанного набора. Если вы попытаетесь использовать ключ таким образом, который вы не указали при его создании, он потерпит неудачу. Этот отказ фактически обеспечивается защищенным оборудованием, если ваше устройство имеет его, поэтому, даже если злоумышленник коренится в устройстве, ключ все еще может использоваться только определенным образом.

KeyGenParameterSpec также поддерживает создание ключей ECDSA, AES и HMAC и позволяет устанавливать другие ограничения на использование ключей. Например, если вы используете метод setUserAuthenticationRequired, использовать ключ будет невозможно, если пользователь не будет сам аутентифицироваться.

+0

Не могли бы вы обновить пример расшифровки? – Oximer

Смежные вопросы