Java 密钥库加载导致Android上出现EOFEException错误
我的应用程序有一些代码,可以在android中创建密钥库, 创建一些默认密钥,然后保存密钥库 稍后,代码尝试在模拟器上重新加载密钥库 运行良好,但当在电话上运行时,我收到一个EOFEException。任何 关于我哪里出错的建议 下面是代码的一个示例: 在这个类中,我有以下变量Java 密钥库加载导致Android上出现EOFEException错误,java,android,bouncycastle,keystore,Java,Android,Bouncycastle,Keystore,我的应用程序有一些代码,可以在android中创建密钥库, 创建一些默认密钥,然后保存密钥库 稍后,代码尝试在模拟器上重新加载密钥库 运行良好,但当在电话上运行时,我收到一个EOFEException。任何 关于我哪里出错的建议 下面是代码的一个示例: 在这个类中,我有以下变量 static KeyStore keyStore; String filenameKeyStore = "KeyStore.kstore"; 然后是以下两个函数 public KeyHandler(Cont
static KeyStore keyStore;
String filenameKeyStore = "KeyStore.kstore";
然后是以下两个函数
public KeyHandler(Context context) {
if(keyStore == null) {
Log.d("KeyStore", "Keystore is null so loading");
if(initialiseKeyStore(context) == false) {
// KeyStore failed to initialise
Log.e("ERROR", "Store failed to initialise");
}
}
}
private boolean initialiseKeyStore(Context context) {
FileInputStream input = null;
try {
// Get an instance of KeyStore
keyStore = KeyStore.getInstance("BKS");
// Load the KeyStore file
try {
// Try and open the private key store
input = context.openFileInput(filenameKeyStore);
} catch (FileNotFoundException e) {
// If the file doesn't exist then create the file, a ECDH key and
store the key
Log.w("Warning","File does not exist, creating new file");
try {
// Load the default Key Store
keyStore.load(null, null);
// Create the file
FileOutputStream output =
context.openFileOutput(filenameKeyStore, 0);
// Reset private key
resetPrivateKey(context);
// Save the key
keyStore.store(output, "password".toCharArray());
// Close the keystore and set the input stream
output.close();
input = context.openFileInput(filenameKeyStore);
// Reset the keyStore
keyStore = KeyStore.getInstance("BKS");
} catch (FileNotFoundException ee) {
Log.e("ERROR", "File not found, even though we just created it");
return false;
} catch (NoSuchProviderException e1) {
// BC isn't working exit
e1.printStackTrace();
System.exit(1);
} catch (InvalidAlgorithmParameterException e1) {
Log.e("ERROR", "The algorithm used for secure algorithm is
incorrect");
e1.printStackTrace();
return false;
}
}
// Load the store
keyStore.load(input, "password".toCharArray());
} catch (KeyStoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} catch (CertificateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} catch (EOFException e) {
// Where the exception is caught
e.printStackTrace();
return false;
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return false;
} catch (NoSuchProviderException e) {
// Serious error, return
e.printStackTrace();
System.exit(1);
}
return true;
}
这通常发生在密钥库文件损坏时。我们刚刚(再次)遇到了这样一个问题,一个外部开发人员发送的密钥库无法回忆起他是如何创建密钥库文件的
创建新的密钥库文件并导入证书-这将解决问题。这通常发生在密钥库文件损坏时。我们刚刚(再次)遇到了这样一个问题,一个外部开发人员发送的密钥库无法回忆起他是如何创建密钥库文件的
创建一个新的密钥库文件并导入证书-这将解决问题。哪一行引发EOFEException?更不用说排序了,另一个异常在之前发生,这意味着无论密钥库是空的。哪一行引发EOFEException?更不用说排序了,另一个例外是发生在之前,这意味着无论密钥库是空的。