From 61267e40e7398c51c49a94994dc64fc0081f30f2 Mon Sep 17 00:00:00 2001 From: olegivo Date: Thu, 21 May 2020 11:08:00 +0300 Subject: [PATCH] konvert SSLContextProvider --- .../androidbase/SSLContextProvider.java | 70 ------------------- .../isoron/androidbase/SSLContextProvider.kt | 51 ++++++++++++++ 2 files changed, 51 insertions(+), 70 deletions(-) delete mode 100644 android/android-base/src/main/java/org/isoron/androidbase/SSLContextProvider.java create mode 100644 android/android-base/src/main/java/org/isoron/androidbase/SSLContextProvider.kt diff --git a/android/android-base/src/main/java/org/isoron/androidbase/SSLContextProvider.java b/android/android-base/src/main/java/org/isoron/androidbase/SSLContextProvider.java deleted file mode 100644 index a522cb023..000000000 --- a/android/android-base/src/main/java/org/isoron/androidbase/SSLContextProvider.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (C) 2017 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.androidbase; - -import android.content.*; - -import androidx.annotation.NonNull; - -import java.io.*; -import java.security.*; -import java.security.cert.Certificate; -import java.security.cert.*; - -import javax.inject.*; -import javax.net.ssl.*; - -public class SSLContextProvider -{ - private Context context; - - @Inject - public SSLContextProvider(@NonNull @AppContext Context context) - { - this.context = context; - } - - public SSLContext getCACertSSLContext() - { - try - { - CertificateFactory cf = CertificateFactory.getInstance("X.509"); - InputStream caInput = context.getAssets().open("cacert.pem"); - Certificate ca = cf.generateCertificate(caInput); - - KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); - ks.load(null, null); - ks.setCertificateEntry("ca", ca); - - TrustManagerFactory tmf = TrustManagerFactory.getInstance( - TrustManagerFactory.getDefaultAlgorithm()); - tmf.init(ks); - - SSLContext ctx = SSLContext.getInstance("TLS"); - ctx.init(null, tmf.getTrustManagers(), null); - - return ctx; - } - catch (Exception e) - { - throw new RuntimeException(e); - } - } -} diff --git a/android/android-base/src/main/java/org/isoron/androidbase/SSLContextProvider.kt b/android/android-base/src/main/java/org/isoron/androidbase/SSLContextProvider.kt new file mode 100644 index 000000000..315e08596 --- /dev/null +++ b/android/android-base/src/main/java/org/isoron/androidbase/SSLContextProvider.kt @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2017 Álinson Santos Xavier + * + * This file is part of Loop Habit Tracker. + * + * Loop Habit Tracker is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * Loop Habit Tracker is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ +package org.isoron.androidbase + +import android.content.Context +import java.security.KeyStore +import java.security.cert.CertificateFactory +import javax.inject.Inject +import javax.net.ssl.SSLContext +import javax.net.ssl.TrustManagerFactory + +class SSLContextProvider @Inject constructor(@param:AppContext private val context: Context) { + fun getCACertSSLContext(): SSLContext = + try { + val ca = CertificateFactory.getInstance("X.509") + .let { cf -> + context.assets.open("cacert.pem") + .use { caInput -> + cf.generateCertificate(caInput) + } + } + val ks = KeyStore.getInstance(KeyStore.getDefaultType()) + .apply { + load(null, null) + setCertificateEntry("ca", ca) + } + val tmf = + TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()) + .apply { init(ks) } + SSLContext.getInstance("TLS") + .apply { init(null, tmf.trustManagers, null) } + } catch (e: Exception) { + throw RuntimeException(e) + } +} \ No newline at end of file