Crash casting AndroidKeyStoreRSAPrivateKey a RSAPrivateKey

Estoy siguiendo este tutorial:Cómo usar el almacén de claves de Android para almacenar contraseñas y otra información confidencial. (Libremente) se vincula con la aplicación Google Sample:BasicAndroidKeyStore.

Puedo cifrar mis datos usando la clave pública, y puedo descifrar en dispositivos que ejecutan Lollipop. Sin embargo, tengo un Nexus 6 ejecutando malvavisco y esto se bloquea dando el error:

java.lang.RuntimeException: Unable to create application com.android.test: java.lang.ClassCastException: android.security.keystore.AndroidKeyStoreRSAPrivateKey cannot be cast to java.security.interfaces.RSAPrivateKey

Aquí está el código en el que se bloquea:

KeyStore.Entry entry;

//Get Android KeyStore
ks = KeyStore.getInstance(KeystoreHelper.KEYSTORE_PROVIDER_ANDROID_KEYSTORE);

// Weird artifact of Java API.  If you don't have an InputStream to load, you still need to call "load", or it'll crash.
ks.load(null);

// Load the key pair from the Android Key Store
entry = ks.getEntry(mAlias, null);

KeyStore.PrivateKeyEntry privateKeyEntry = (KeyStore.PrivateKeyEntry) entry;

//ERROR OCCURS HERE::
RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) privateKeyEntry.getPrivateKey();

Cipher output = Cipher.getInstance("RSA/ECB/PKCS1Padding", "AndroidOpenSSL");

output.init(Cipher.DECRYPT_MODE, rsaPrivateKey);

Soy reacio a atribuir esto a una rareza de Android ya que no veo ninguna razón por la cual las bibliotecas de cifrado de Java hubieran cambiado. Si aparece la versión M y nuestra aplicación se bloquea inmediatamente en M, estaré en un gran problema.

Estoy haciendo algo mal? El error dice muy específicamente que no puede transmitir a RSAPrivateKey, entonces, ¿alguien sabe una mejor manera de obtener el RSAPrivateKey de la entrada?

Muchas muchas gracias.

Respuestas a la pregunta(4)

Su respuesta a la pregunta