From 7e8ca08358f15418ffa842128035cf8b31bd51e3 Mon Sep 17 00:00:00 2001 From: Mara Sophie Grosch Date: Wed, 20 Jan 2021 22:03:23 +0100 Subject: [PATCH] Fallback to BKS when JKS is not available This is the case on e.g. Android. BKS is BouncyCastles JKS-compatible implementation of a KeyStore --- .../main/java/io/kubernetes/client/util/SSLUtils.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/util/src/main/java/io/kubernetes/client/util/SSLUtils.java b/util/src/main/java/io/kubernetes/client/util/SSLUtils.java index fd9822544c..1a568cb29c 100644 --- a/util/src/main/java/io/kubernetes/client/util/SSLUtils.java +++ b/util/src/main/java/io/kubernetes/client/util/SSLUtils.java @@ -179,7 +179,16 @@ public static KeyStore createKeyStore( PrivateKey privateKey = loadKey(keyInputStream, clientKeyAlgo); - KeyStore keyStore = KeyStore.getInstance("JKS"); + KeyStore keyStore; + try { + keyStore = KeyStore.getInstance("JKS"); + } catch (KeyStoreException e) { + // Not having an instance of JKS happens on Android, for example. + // Since we rely on BouncyCastle anyway, let's try BKS instead + // (which is BouncyCastle's JKS compatible provider). + keyStore = KeyStore.getInstance("BKS"); + } + if (keyStoreFile != null && keyStoreFile.length() > 0) { keyStore.load(new FileInputStream(keyStoreFile), keyStorePassphrase); } else {