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文件)。