1
0
mirror of https://github.com/square/okhttp.git synced 2025-11-24 18:41:06 +03:00

Add bouncy castle platform for tests (#5695)

* Add basic bouncy castle test

* Remove other tests

* Activate platform for TLS tests
This commit is contained in:
Yuri Schimke
2020-01-11 15:29:17 +00:00
committed by Jesse Wilson
parent 04b4fbb6b5
commit 604e2705e7
6 changed files with 139 additions and 1 deletions

View File

@@ -22,6 +22,8 @@ import okhttp3.internal.platform.OpenJSSEPlatform
import com.amazon.corretto.crypto.provider.AmazonCorrettoCryptoProvider
import com.amazon.corretto.crypto.provider.SelfTestStatus
import okhttp3.internal.platform.Platform
import org.bouncycastle.jce.provider.BouncyCastleProvider
import org.bouncycastle.jsse.provider.BouncyCastleJsseProvider
import org.conscrypt.Conscrypt
import org.hamcrest.BaseMatcher
import org.hamcrest.CoreMatchers
@@ -221,6 +223,11 @@ open class PlatformRule @JvmOverloads constructor(
CORRETTO_PROPERTY))
}
fun assumeBouncyCastle() {
assumeThat(getPlatformSystemProperty(), equalTo(
BOUNCYCASTLE_PROPERTY))
}
fun assumeHttp2Support() {
assumeThat(getPlatformSystemProperty(), not(
JDK8_PROPERTY))
@@ -256,6 +263,11 @@ open class PlatformRule @JvmOverloads constructor(
CORRETTO_PROPERTY))
}
fun assumeNotBouncyCastle() {
assumeThat(getPlatformSystemProperty(), not(
BOUNCYCASTLE_PROPERTY))
}
fun assumeNotHttp2Support() {
assumeThat(getPlatformSystemProperty(), equalTo(
JDK8_PROPERTY))
@@ -273,6 +285,7 @@ open class PlatformRule @JvmOverloads constructor(
const val JDK8_ALPN_PROPERTY = "jdk8alpn"
const val JDK8_PROPERTY = "jdk8"
const val OPENJSSE_PROPERTY = "openjsse"
const val BOUNCYCASTLE_PROPERTY = "bouncycastle"
init {
if (getPlatformSystemProperty() == CONSCRYPT_PROPERTY && Security.getProviders()[0].name != "Conscrypt") {
@@ -296,6 +309,9 @@ open class PlatformRule @JvmOverloads constructor(
}
Security.insertProviderAt(OpenJSSE(), 1)
} else if (getPlatformSystemProperty() == BOUNCYCASTLE_PROPERTY && Security.getProviders()[0].name != "BC") {
Security.insertProviderAt(BouncyCastleProvider(), 1)
Security.insertProviderAt(BouncyCastleJsseProvider(), 2)
} else if (getPlatformSystemProperty() == CORRETTO_PROPERTY) {
AmazonCorrettoCryptoProvider.install()
@@ -340,6 +356,9 @@ open class PlatformRule @JvmOverloads constructor(
@JvmStatic
fun jdk8alpn() = PlatformRule(JDK8_ALPN_PROPERTY)
@JvmStatic
fun bouncycastle() = PlatformRule(BOUNCYCASTLE_PROPERTY)
@JvmStatic
fun isAlpnBootEnabled(): Boolean = try {
Class.forName("org.eclipse.jetty.alpn.ALPN", true, null)