Java 密钥库加载导致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

我的应用程序有一些代码,可以在android中创建密钥库, 创建一些默认密钥,然后保存密钥库

稍后,代码尝试在模拟器上重新加载密钥库 运行良好,但当在电话上运行时,我收到一个EOFEException。任何 关于我哪里出错的建议

下面是代码的一个示例:

在这个类中,我有以下变量

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?更不用说排序了,另一个例外是发生在之前,这意味着无论密钥库是空的。