Skip to content

Commit 504faef

Browse files
authored
Conscrypt 2.5.0 upgrade (#6228)
Conscrypt 2.5.0 upgrade with a workaround for changed Conscrypt API
1 parent 96a2118 commit 504faef

File tree

3 files changed

+27
-9
lines changed

3 files changed

+27
-9
lines changed

android-test/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ dependencies {
4747
}
4848
androidTestImplementation "org.bouncycastle:bcprov-jdk15on:${versions.bouncycastle}"
4949
androidTestImplementation "org.bouncycastle:bctls-jdk15on:${versions.bouncycastle}"
50-
androidTestImplementation "org.conscrypt:conscrypt-android:2.4.0"
50+
androidTestImplementation "org.conscrypt:conscrypt-android:2.5.0"
5151
androidTestImplementation project(':mockwebserver')
5252
androidTestImplementation project(':okhttp-tls')
5353
androidTestImplementation project(':okhttp-dnsoverhttps')

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ buildscript {
77
'bouncycastle': '1.65',
88
'brotli': '0.1.2',
99
'checkstyle': '8.28',
10-
'conscrypt': '2.4.0',
10+
'conscrypt': '2.5.0',
1111
'corretto': '1.3.1',
1212
'findbugs': '3.0.2',
1313
'guava': '28.2-jre',

okhttp/src/main/kotlin/okhttp3/internal/platform/ConscryptPlatform.kt

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,25 @@ package okhttp3.internal.platform
1717

1818
import java.security.KeyStore
1919
import java.security.Provider
20+
import java.security.cert.X509Certificate
2021
import javax.net.ssl.SSLContext
22+
import javax.net.ssl.SSLSession
2123
import javax.net.ssl.SSLSocket
2224
import javax.net.ssl.SSLSocketFactory
2325
import javax.net.ssl.TrustManager
2426
import javax.net.ssl.TrustManagerFactory
2527
import javax.net.ssl.X509TrustManager
2628
import okhttp3.Protocol
2729
import org.conscrypt.Conscrypt
30+
import org.conscrypt.ConscryptHostnameVerifier
2831

2932
/**
3033
* Platform using Conscrypt (conscrypt.org) if installed as the first Security Provider.
3134
*
3235
* Requires org.conscrypt:conscrypt-openjdk-uber >= 2.1.0 on the classpath.
3336
*/
3437
class ConscryptPlatform private constructor() : Platform() {
35-
// n.b. We should consider defaulting to OpenJDK 11 trust manager
36-
// https://groups.google.com/forum/#!topic/conscrypt/3vYzbesjOb4
37-
private val provider: Provider = Conscrypt.newProviderBuilder().provideTrustManager(true).build()
38+
private val provider: Provider = Conscrypt.newProvider()
3839

3940
// See release notes https://groups.google.com/forum/#!forum/conscrypt
4041
// for version differences
@@ -50,10 +51,28 @@ class ConscryptPlatform private constructor() : Platform() {
5051
"Unexpected default trust managers: ${trustManagers.contentToString()}"
5152
}
5253
val x509TrustManager = trustManagers[0] as X509TrustManager
53-
Conscrypt.setHostnameVerifier(x509TrustManager) { _, _ -> true }
54+
// Disabled because OkHttp will run anyway
55+
Conscrypt.setHostnameVerifier(x509TrustManager, DisabledHostnameVerifier)
5456
return x509TrustManager
5557
}
5658

59+
internal object DisabledHostnameVerifier : ConscryptHostnameVerifier {
60+
fun verify(
61+
hostname: String?,
62+
session: SSLSession?
63+
): Boolean {
64+
return true
65+
}
66+
67+
override fun verify(
68+
certs: Array<out X509Certificate>?,
69+
hostname: String?,
70+
session: SSLSession?
71+
): Boolean {
72+
return true
73+
}
74+
}
75+
5776
override fun trustManager(sslSocketFactory: SSLSocketFactory): X509TrustManager? = null
5877

5978
override fun configureTlsExtensions(
@@ -83,9 +102,7 @@ class ConscryptPlatform private constructor() : Platform() {
83102
override fun newSslSocketFactory(trustManager: X509TrustManager): SSLSocketFactory {
84103
return newSSLContext().apply {
85104
init(null, arrayOf<TrustManager>(trustManager), null)
86-
}.socketFactory.also {
87-
Conscrypt.setUseEngineSocket(it, true)
88-
}
105+
}.socketFactory
89106
}
90107

91108
companion object {
@@ -94,6 +111,7 @@ class ConscryptPlatform private constructor() : Platform() {
94111
Class.forName("org.conscrypt.Conscrypt\$Version", false, javaClass.classLoader)
95112

96113
when {
114+
// Bump this version if we ever have a binary incompatibility
97115
Conscrypt.isAvailable() && atLeastVersion(2, 1, 0) -> true
98116
else -> false
99117
}

0 commit comments

Comments
 (0)