2

I am trying to use BKS keystore in an Android application but I keep getting this exception.

05-31 19:53:52.963: E/AndroidRuntime(18992): FATAL EXCEPTION: AsyncTask #2
05-31 19:53:52.963: E/AndroidRuntime(18992): java.lang.RuntimeException: An error occured while executing doInBackground()
05-31 19:53:52.963: E/AndroidRuntime(18992):    at android.os.AsyncTask$3.done(AsyncTask.java:278)
05-31 19:53:52.963: E/AndroidRuntime(18992):    at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
05-31 19:53:52.963: E/AndroidRuntime(18992):    at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
05-31 19:53:52.963: E/AndroidRuntime(18992):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
05-31 19:53:52.963: E/AndroidRuntime(18992):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
05-31 19:53:52.963: E/AndroidRuntime(18992):    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
05-31 19:53:52.963: E/AndroidRuntime(18992):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
05-31 19:53:52.963: E/AndroidRuntime(18992):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
05-31 19:53:52.963: E/AndroidRuntime(18992):    at java.lang.Thread.run(Thread.java:856)
05-31 19:53:52.963: E/AndroidRuntime(18992): Caused by: java.lang.RuntimeException: java.io.IOException: Wrong version of key store.
05-31 19:53:52.963: E/AndroidRuntime(18992):    at org.nick.customcert.https.MainActivity.loadTrustStore(MainActivity.java:691)
05-31 19:53:52.963: E/AndroidRuntime(18992):    at org.nick.customcert.https.MainActivity.access$4(MainActivity.java:677)
05-31 19:53:52.963: E/AndroidRuntime(18992):    at org.nick.customcert.https.MainActivity$2.manipulate(MainActivity.java:273)
05-31 19:53:52.963: E/AndroidRuntime(18992):    at org.nick.customcert.https.MainActivity$ManipulateTrustStoreTask.doInBackground(MainActivity.java:224)
05-31 19:53:52.963: E/AndroidRuntime(18992):    at org.nick.customcert.https.MainActivity$ManipulateTrustStoreTask.doInBackground(MainActivity.java:1)
05-31 19:53:52.963: E/AndroidRuntime(18992):    at android.os.AsyncTask$2.call(AsyncTask.java:264)
05-31 19:53:52.963: E/AndroidRuntime(18992):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
05-31 19:53:52.963: E/AndroidRuntime(18992):    ... 5 more
05-31 19:53:52.963: E/AndroidRuntime(18992): Caused by: java.io.IOException: Wrong version of key store.
05-31 19:53:52.963: E/AndroidRuntime(18992):    at com.android.org.bouncycastle.jce.provider.JDKKeyStore.engineLoad(JDKKeyStore.java:812)
05-31 19:53:52.963: E/AndroidRuntime(18992):    at java.security.KeyStore.load(KeyStore.java:589)
05-31 19:53:52.963: E/AndroidRuntime(18992):    at org.nick.customcert.https.MainActivity.loadTrustStore(MainActivity.java:684)
05-31 19:53:52.963: E/AndroidRuntime(18992):    ... 11 more

I did use the version 1.46 of BouncyCastle to generate the keystore. I tested it with keytool

keytool -list -keystore truststore.bks -provider org.bouncycastle.jce.provider.BouncyCastleProvider -providerpath bcprov-jdk15on-146.jar -storetype BKS

I also printed out the Provider on my Phone:

05-31 19:53:52.918: D/MainActivity(18992): Version : BouncyCastle Security Provider v1.46 : BouncyCastle Security Provider v1.46

I don't know what to do...

seven-down
  • 126
  • 10

1 Answers1

1

As answered here: Wrong version of keystore on android call

The certificate version that is needed depends of the android version: Android 15- needs BKS-V1 (old version) Android 15 + needs BKS/BKS-V1 (new version) Android 23 + needs BKS (BKS-V1 is NO MORE supported)

Community
  • 1
  • 1
Cukic0d
  • 5,111
  • 2
  • 19
  • 48