olvido - http recover gmail password from android
La cadena es nula al recuperar la clave privada (1)
Creo que simplemente estás enfrentando errores de Keystore. Vea este artículo por ejemplo: Seguridad de Android: el almacén de claves olvidadizo . También hay numerosos informes de errores en el rastreador de Android relacionado con el almacén de claves, como AndroidKeyStore eliminado después de cambiar el tipo de bloqueo de pantalla .
Estoy cifrando datos en mi aplicación utilizando un par de claves RSA que estoy almacenando en el almacén de claves de Android.
He estado viendo NullPointerException
s en Play Store, pero no he podido reproducirlas:
java.lang.NullPointerException: chain == null
at java.security.KeyStore$PrivateKeyEntry.<init>(KeyStore.java:1205)
at java.security.KeyStoreSpi.engineGetEntry(KeyStoreSpi.java:374)
at java.security.KeyStore.getEntry(KeyStore.java:644)
at MyClass.getKeyStoreEntry(MyClass.java:111)
El código fuente para crear el par de claves.
Calendar start = Calendar.getInstance();
start.setTimeInMillis(0);
Calendar end = Calendar.getInstance();
end.set(Calendar.YEAR, 3000);
KeyPairGeneratorSpec.Builder keySpecBuilder = new KeyPairGeneratorSpec.Builder(context)
.setAlias(keyName)
.setSubject(new X500Principal("CN=" + keyName))
.setSerialNumber(BigInteger.TEN)
.setStartDate(start.getTime())
.setEndDate(end.getTime())
.setKeySize(RSA_KEY_SIZE);
KeyPairGeneratorSpec spec = keySpecBuilder.build();
KeyPairGenerator gen = KeyPairGenerator.getInstance("RSA", "AndroidKeyStore");
gen.initialize(spec);
gen.generateKeyPair();
Y luego para recuperar la clave:
private KeyStore.PrivateKeyEntry getKeyStoreEntry() {
KeyStore keyStore = KeyStore.getInstance(ANDROID_KEY_STORE);
keyStore.load(null);
if (!keyStore.containsAlias(keyName)) {
throw new KeyNotFoundException();
}
return (KeyStore.PrivateKeyEntry) keyStore.getEntry(keyName, null);
}
Esto solo ocurre cuando uso KeyPairGeneratorSpec
en el nivel de API 19-22. La implementación 23+ funciona bien.
No tengo otra clave con el mismo nombre y tampoco la he eliminado .