Закрытый ключ RSA недействителен

В последнее время наше приложение давало сбой на некоторых устройствах (Samsung, Huawei, Xiaiomi) на Android 8 и 9.

Вот трассировка стека:

Caused by java.security.InvalidKeyException: RSA private or public key is null
   at com.android.org.conscrypt.OpenSSLCipherRSA.engineInitInternal(OpenSSLCipherRSA.java:205)
   at com.android.org.conscrypt.OpenSSLCipherRSA.engineInit(OpenSSLCipherRSA.java:221)
   at javax.crypto.Cipher.tryTransformWithProvider(Cipher.java:2668)
   at javax.crypto.Cipher.tryCombinations(Cipher.java:2575)
   at javax.crypto.Cipher$SpiAndProviderUpdater.updateAndGetSpiAndProvider(Cipher.java:2480)
   at javax.crypto.Cipher.chooseProvider(Cipher.java:567)
   at javax.crypto.Cipher.init(Cipher.java:831)
   at javax.crypto.Cipher.init(Cipher.java:772)

Раньше он не давал сбоев и не случался в более ранних версиях Android. Что может быть причиной? Может обновление ОС?

Вот код, который мы использовали в прошлом году:

PrivateKey getKeyStoreInstance() {
    try {
        KeyStore keystore = KeyStore.getInstance("AndroidKeyStore");
        keystore.load(null);
        return keystore.getKey(KEYPAIR_NAME, null);
    } catch (IOException | NoSuchAlgorithmException | CertificateException | KeyStoreException e) {
        throw new RuntimeException("Error loading AndroidKeyStore", e);
    }
}

person Heisenberg    schedule 28.11.2018    source источник
comment
Вы используете Android 9 в качестве компилируемой версии?   -  person Chetan Joshi    schedule 28.11.2018
comment
@ChetanJoshi Да   -  person Heisenberg    schedule 28.11.2018
comment
@Heisenberg, можешь поделиться кодом, создающим ключ?   -  person divegeek    schedule 03.02.2019


Ответы (1)


Если вы используете Android 9 в качестве компилируемой версии, вы должны позаботиться об изменениях, касающихся идентификаторов Android.

  1. ANDROID_ID
  2. Build.serial (введен новый измененный метод)

Поэтому, если вышеуказанные идентификаторы используются в вашем коде для создания уникальной комбинации мобильных отпечатков пальцев, вам следует внести изменения в свой код.

person Chetan Joshi    schedule 28.11.2018
comment
Как эти переменные связаны с проблемой? - person Heisenberg; 28.11.2018
comment
Я упомянул, что если вы используете эти идентификаторы в своем коде, тогда его следует обновить, иначе проблем не будет. - person Chetan Joshi; 29.11.2018