diff --git a/app/src/main/java/de/kuschku/quasseldroid/ui/info/core/CoreInfoFragment.kt b/app/src/main/java/de/kuschku/quasseldroid/ui/info/core/CoreInfoFragment.kt index e4686c0bf832a2f41ba0e575a60a39447d3f708b..6215546c3537177d854ffcaa397117e6c2712fd2 100644 --- a/app/src/main/java/de/kuschku/quasseldroid/ui/info/core/CoreInfoFragment.kt +++ b/app/src/main/java/de/kuschku/quasseldroid/ui/info/core/CoreInfoFragment.kt @@ -52,6 +52,7 @@ import org.threeten.bp.ZoneId import org.threeten.bp.format.DateTimeFormatter import org.threeten.bp.format.FormatStyle import javax.inject.Inject +import javax.net.ssl.SSLPeerUnverifiedException class CoreInfoFragment : ServiceBoundFragment() { @@ -163,7 +164,12 @@ class CoreInfoFragment : ServiceBoundFragment() { } modelHelper.sslSession.toLiveData().observe(this, Observer { - val certificateChain = it?.orNull()?.peerCertificateChain?.map(X509Helper::convert).orEmpty() + val peerCertificateChain = try { + it?.orNull()?.peerCertificateChain + } catch (ignored: SSLPeerUnverifiedException) { + null + } + val certificateChain = peerCertificateChain?.mapNotNull(X509Helper::convert).orEmpty() val leafCertificate = certificateChain.firstOrNull() if (leafCertificate != null) { secureCertificate.text = requireContext().getString( diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/helper/QuasselViewModelHelper.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/helper/QuasselViewModelHelper.kt index 717f4dcfc41c3be4204e766a176e1264d1d20277..61f74827b3053b32f81ee30ec0f1dff94db86c0c 100644 --- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/helper/QuasselViewModelHelper.kt +++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/helper/QuasselViewModelHelper.kt @@ -39,7 +39,7 @@ import de.kuschku.quasseldroid.viewmodel.QuasselViewModel import de.kuschku.quasseldroid.viewmodel.data.* import io.reactivex.Observable import javax.inject.Inject -import javax.net.ssl.SSLSession +import javax.net.ssl.SSLPeerUnverifiedException open class QuasselViewModelHelper @Inject constructor( val quassel: QuasselViewModel @@ -80,8 +80,12 @@ open class QuasselViewModelHelper @Inject constructor( } val sslSession = connectedSession.flatMapSwitchMap(ISession::sslSession) - val peerCertificateChain = sslSession.mapMap(SSLSession::getPeerCertificateChain).mapMap { - it.mapNotNull(X509Helper::convert) + val peerCertificateChain = sslSession.mapMapNullable { + try { + it.peerCertificateChain.mapNotNull(X509Helper::convert) + } catch (ignored: SSLPeerUnverifiedException) { + null + } }.mapOrElse(emptyList()) val leafCertificate = peerCertificateChain.map { Optional.ofNullable(it.firstOrNull()) }