【发布时间】:2019-03-15 16:07:50
【问题描述】:
我正在尝试将 Android KeyStore 对象保存到文件中,以便以后使用生成的私钥。我需要这样做,因为一旦退出应用程序,私钥就会被删除。为此,我根据this 和this 将KeyStore 对象写入输出流
例子。但是,当我尝试这样做时,出现以下错误:
java.lang.UnsupportedOperationException: 无法将 AndroidKeyStore 序列化为 OutputStream
它发生在mKeyStore.store(keyStoreOutputStream, keyStorePassword);
mKeyStore = KeyStore.getInstance("AndroidKeyStore");
mSignature = Signature.getInstance("SHA256withECDSA");
mKeyStore.load(null);
// Generate private key
PrivateKey key = (PrivateKey) mKeyStore.getKey(KEY_NAME, null);
Certificate [] cert = mKeyStore.getCertificateChain(KEY_NAME);
char[] keyStorePassword = null;
// Store private key into mKeyStore
mKeyStore.setKeyEntry(KEY_NAME, key, null, cert);
// Save mKeyStore to outputstream
String filepath = activity.getFilesDir().getPath().toString() + "/keystore.ks";
try (FileOutputStream keyStoreOutputStream = new FileOutputStream(filepath)) {
mKeyStore.store(keyStoreOutputStream, keyStorePassword);
}
mSignature.initSign(key);
这是存储我的KeyStore 对象以供以后使用的最佳方式吗?如果是这样,我该如何解决Can not serialize AndroidKeyStore to OutputStream 错误?
谢谢。
【问题讨论】:
标签: java android serialization keystore