I have some code for my app that creates a keystore in android,
creates some default keys then saves the keystore.

Later on the code tries to reload the keystore, on the emulator this
runs fine however when run on a phone I get an EOFException. Any
advice on where I'm going wrong?


An out take of the code is below:

In the class I have the following variables

static KeyStore keyStore;
String filenameKeyStore = "KeyStore.kstore";


Then the following two functions

        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;
        }

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to