J'utilise l'api du magasin de clés android pour stocker une paire de clés RSA. Lorsque j'exécute mon android en mode débogage, cela montre que les octets de la paire de clés et du certificat ont été stockés dans le magasin de clés, mais lorsque je recharge le débogueur et que j'essaie de récupérer la clé, le magasin de clés semble vide.Android KeyStore ne sauvegarde pas la clé RSA
Je veux être en mesure de récupérer la clé par alias. Mon code ci-dessous montre comment la paire de clés est créée et stockée.
public RSA(char[] password) throws Exception {
KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType());
ks.load(null);
Enumeration<String> aliases = ks.aliases();
if(!aliases.hasMoreElements())
{
mCurrentCertificate = generateCert();
//Store the new keypair
FileInputStream fs = null;
ks.load(fs, password);
KeyStore.ProtectionParameter protParam =
new KeyStore.PasswordProtection(password);
java.security.cert.Certificate[] myCert =
new java.security.cert.Certificate[] { (java.security.cert.Certificate) mCurrentCertificate};
KeyStore.PrivateKeyEntry pkEntry =
new KeyStore.PrivateKeyEntry(mCurrentRSAKeyPair.getPrivate(),
myCert);
ks.setEntry("MyKey2", pkEntry, protParam);
for(int i = 0; i < ks.size(); i++)
{
//MyKey is the previous key stored, MyKey2 is the next one
System.out.println(ks.getCertificate("MyKey"));
}
}
}