0

I'm writing Android application. It connects to server though TLS. I received from server author 3 files to use (to check communication, later keys will be generated): - server certificate (cacrt.crt) - client certificate (clientcrt.crt) - client private key (clientkey.key)

I'm trying to create SSLContext with these keys but I have some problems. I wasn't able to load them in format as .crt and .key files so I converted them to BKS format (client.bks for client and server.bks for server key). But I get exception while creating KeyStore KeyStoreException: KeyStore was not initialized.

Here's my code:

val clientCrt = CertificateFactory.getInstance("X.509").generateCertificate(resources.openRawResource(R.raw.clientcrt))
val keyManagerFactory = KeyManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm())
val keyStore = KeyStore.getInstance("BKS")
val keyInputClient = resources.openRawResource(R.raw.client)
keyStore.load(keyInputClient, "123456".toCharArray())
keyStore.setCertificateEntry("ca", clientCrt)
keyInputClient.close()
keyManagerFactory.init(keyStore, "123456".toCharArray())

val inputStream2 = 
val serverCrt = CertificateFactory.getInstance("X.509").generateCertificate(resources.openRawResource(R.raw.cacrt))
val keyStore2 = KeyStore.getInstance("BKS")
val keyInputServer = resources.openRawResource(R.raw.server)
keyStore.load(keyInputServer, "123456".toCharArray())
keyStore2.setCertificateEntry("ca", serverCrt)     // <--- KeyStoreException: KeyStore was not initialized
keyInputServer.close()

val trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm())
trustManagerFactory.init(keyStore2);

val sslContext = SSLContext.getInstance("TLS")
sslContext.init(keyManagerFactory.keyManagers, trustManagerFactory.trustManagers, SecureRandom())

Could you help me to fix it? I have no idea what I'm doing wrong.

Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
user3626048
  • 706
  • 4
  • 19
  • 52

0 Answers0