diff options
author | fupduck <fupduck@riseup.net> | 2018-06-19 03:38:43 -0700 |
---|---|---|
committer | fupduck <fupduck@riseup.net> | 2018-06-19 03:38:43 -0700 |
commit | 55c3972e9ac0796a801c64788eb364cbd0c9cf02 (patch) | |
tree | c3a06ca78102791f0126031dbf5b4bd801168fa9 /app/src/main/java/se/leap/bitmaskclient/utils/KeyStoreHelper.java | |
parent | 77879cf10f7857b95c968446f5ce9e0437bceb0f (diff) | |
parent | 767862ceb2b5408be1ee0da5219b0921a35cbf03 (diff) |
Merge branch '#8885_testing_ProviderManager' into 'master'
#8885 testing provider manager
See merge request leap/bitmask_android!69
Diffstat (limited to 'app/src/main/java/se/leap/bitmaskclient/utils/KeyStoreHelper.java')
-rw-r--r-- | app/src/main/java/se/leap/bitmaskclient/utils/KeyStoreHelper.java | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/app/src/main/java/se/leap/bitmaskclient/utils/KeyStoreHelper.java b/app/src/main/java/se/leap/bitmaskclient/utils/KeyStoreHelper.java new file mode 100644 index 00000000..48d4cbad --- /dev/null +++ b/app/src/main/java/se/leap/bitmaskclient/utils/KeyStoreHelper.java @@ -0,0 +1,78 @@ +package se.leap.bitmaskclient.utils; + +import java.io.IOException; +import java.io.InputStream; +import java.security.KeyStore; +import java.security.KeyStoreException; +import java.security.NoSuchAlgorithmException; +import java.security.cert.CertificateException; +import java.security.cert.CertificateFactory; +import java.security.cert.X509Certificate; + +/** + * Created by cyberta on 18.03.18. + */ + +public class KeyStoreHelper { + private static KeyStore trustedKeystore; + + /** + * Adds a new X509 certificate given its input stream and its provider name + * + * @param provider used to store the certificate in the keystore + * @param inputStream from which X509 certificate must be generated. + */ + public static void addTrustedCertificate(String provider, InputStream inputStream) { + CertificateFactory cf; + try { + cf = CertificateFactory.getInstance("X.509"); + X509Certificate cert = + (X509Certificate) cf.generateCertificate(inputStream); + trustedKeystore.setCertificateEntry(provider, cert); + } catch (CertificateException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (KeyStoreException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + /** + * Adds a new X509 certificate given in its string from and using its provider name + * + * @param provider used to store the certificate in the keystore + * @param certificate + */ + public static void addTrustedCertificate(String provider, String certificate) { + + try { + X509Certificate cert = ConfigHelper.parseX509CertificateFromString(certificate); + if (trustedKeystore == null) { + trustedKeystore = KeyStore.getInstance("BKS"); + trustedKeystore.load(null); + } + trustedKeystore.setCertificateEntry(provider, cert); + } catch (KeyStoreException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (NoSuchAlgorithmException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (CertificateException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } catch (IOException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + /** + * @return class wide keystore + */ + public static KeyStore getKeystore() { + return trustedKeystore; + } + +} |