我无法从KeyStore中删除别名中提到了相同的问题。该问题的解决方案是“在keyStore上调用.store()方法以刷新更改”,这看起来不错。
我的问题是,我正在使用AndroidKeyStore,它似乎不支持该操作。我的代码如下:
public static void resetKeyStore() {
KeyStore keyStore;
try {
keyStore = KeyStore.getInstance("AndroidKeyStore");
keyStore.load(null);
ArrayList<String> toDelete = new ArrayList<>();
Enumeration<String> e = keyStore.aliases();
while(e.hasMoreElements()){
toDelete.add(e.nextElement());
}
for(String s : toDelete) {
keyStore.deleteEntry(s);
}
// keyStore.store(null);
} catch (KeyStoreException | IOException | NoSuchAlgorithmException | CertificateException e) {
Log.wtf(TAG, e);
}
}
Run Code Online (Sandbox Code Playgroud)
如果没有调用keyStore.store(null),则此函数将成功退出,但是密钥存储区中仍然有一些密钥。
如果我拨打电话,则会引发此异常:
E/AndroidRuntime: Caused by: java.lang.UnsupportedOperationException
E/AndroidRuntime: at java.security.KeyStoreSpi.engineStore(KeyStoreSpi.java:256)
E/AndroidRuntime: at java.security.KeyStore.store(KeyStore.java:565)
E/AndroidRuntime: at com.mycompany.myapp.LocalKeyStore.resetKeyStore(LocalKeyStore.java:235)
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激