无法从KeyStore中删除别名 - keyStore.store会抛出UnsupportedOperationException

时间:2015-11-18 02:46:15

标签: java android

我遇到Cannot Delete an alias from the 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);
    }
}

如果我没有调用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)

任何帮助将不胜感激

0 个答案:

没有答案