Я пытаюсь сохранить объект Android KeyStore
в файл, чтобы позже использовать сгенерированный закрытый ключ.Мне нужно сделать это, потому что после выхода из приложения закрытый ключ стирается.Для этого я записываю 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
?
Спасибо.