В последнее время наше приложение давало сбой на некоторых устройствах (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);
}
}