AndroidKeyStore KeyStoreException:未初始化的密钥库

时间:2020-07-10 16:11:56

标签: android android-keystore android-9.0-pie

java.security.KeyStoreException: Uninitialized keystore
    at java.security.KeyStore.entryInstanceOf(KeyStore.java:1690)
    at com.my.package.MyKeyManager.getSecretKey(MyKeyManager.java:137)

为什么在执行以下代码(运行Android 9的三星S9)时出现上述未初始化的密钥库异常:

import java.security.KeyStore;

...

SecretKey getSecretKey(String alias) {
    mKeyStore = KeyStore.getInstance("AndroidKeyStore");
    mKeyStore.load(null);
    if (mKeyStore.containsAlias(alias) 
        && mKeyStore.entryInstanceOf(alias, KeyStore.SecretKeyEntry.class)) {
    }
}

这真是一个很奇怪的部分-如果您查看containsAlias的Android源代码,而我之前称它为 entryInstanceOf,那么它对{{ 1}}。但是以某种方式!initialized中的检查通过了,而containsAlias中的检查失败了。

还要注意,该异常在entryInstanceOf文件的第1690行上引发,但是该行从未在AOSP的整个历史记录中抛出该异常(我检查了该文件的提交文件历史记录)。这使我相信,三星必须针对其Android风格修改此文件。

有人知道这里发生了什么吗,还是有办法查看Samsung Android Java源文件?,我发现opensource.samsung.com,但是没有源下载包含任何Java文件。 (仅c文件)。

0 个答案:

没有答案
相关问题