mirror of
https://github.com/square/okhttp.git
synced 2025-08-07 12:42:57 +03:00
OpenJSSE Platform support (#5369)
Adds support for OpenJSSE when registered as the first security provider.
This commit is contained in:
@@ -3,6 +3,7 @@ dependencies {
|
||||
api deps.junit
|
||||
api deps.assertj
|
||||
api deps.conscrypt
|
||||
api deps.openjsse
|
||||
|
||||
compileOnly deps.jsr305
|
||||
}
|
||||
|
@@ -15,12 +15,16 @@
|
||||
*/
|
||||
package okhttp3;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.net.InetSocketAddress;
|
||||
import java.net.UnknownHostException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import okhttp3.internal.http2.Header;
|
||||
|
||||
import static org.junit.Assume.assumeNoException;
|
||||
|
||||
public final class TestUtil {
|
||||
public static final InetSocketAddress UNREACHABLE_ADDRESS
|
||||
= new InetSocketAddress("198.51.100.1", 8080);
|
||||
@@ -52,4 +56,12 @@ public final class TestUtil {
|
||||
Thread.sleep(100);
|
||||
System.runFinalization();
|
||||
}
|
||||
|
||||
public static void assumeNetwork() {
|
||||
try {
|
||||
InetAddress.getByName("www.google.com");
|
||||
} catch (UnknownHostException uhe) {
|
||||
assumeNoException(uhe);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -18,6 +18,7 @@ package okhttp3.testing
|
||||
import okhttp3.internal.platform.ConscryptPlatform
|
||||
import okhttp3.internal.platform.Jdk8WithJettyBootPlatform
|
||||
import okhttp3.internal.platform.Jdk9Platform
|
||||
import okhttp3.internal.platform.OpenJSSEPlatform
|
||||
import okhttp3.internal.platform.Platform
|
||||
import org.conscrypt.Conscrypt
|
||||
import org.hamcrest.BaseMatcher
|
||||
@@ -34,6 +35,7 @@ import org.junit.Assume.assumeTrue
|
||||
import org.junit.AssumptionViolatedException
|
||||
import org.junit.rules.TestRule
|
||||
import org.junit.runners.model.Statement
|
||||
import org.openjsse.net.ssl.OpenJSSE
|
||||
import java.security.Security
|
||||
|
||||
/**
|
||||
@@ -57,6 +59,8 @@ open class PlatformRule @JvmOverloads constructor(
|
||||
try {
|
||||
setupPlatform()
|
||||
|
||||
System.err.println("Running with ${Platform.get().javaClass.simpleName}")
|
||||
|
||||
base.evaluate()
|
||||
} catch (e: AssumptionViolatedException) {
|
||||
throw e
|
||||
@@ -95,6 +99,10 @@ open class PlatformRule @JvmOverloads constructor(
|
||||
expectFailure(platformMatches(CONSCRYPT_PROPERTY))
|
||||
}
|
||||
|
||||
fun expectFailureOnOpenJSSEPlatform() {
|
||||
expectFailure(platformMatches(OPENJSSE_PROPERTY))
|
||||
}
|
||||
|
||||
fun expectFailureFromJdkVersion(majorVersion: Int) {
|
||||
expectFailure(fromMajor(majorVersion))
|
||||
}
|
||||
@@ -118,7 +126,7 @@ open class PlatformRule @JvmOverloads constructor(
|
||||
|
||||
fun fromMajor(version: Int): Matcher<PlatformVersion> {
|
||||
return object : TypeSafeMatcher<PlatformVersion>() {
|
||||
override fun describeTo(description: org.hamcrest.Description) {
|
||||
override fun describeTo(description: Description) {
|
||||
description.appendText("JDK with version from $version")
|
||||
}
|
||||
|
||||
@@ -171,6 +179,11 @@ open class PlatformRule @JvmOverloads constructor(
|
||||
JDK9_PROPERTY))
|
||||
}
|
||||
|
||||
fun assumeOpenJSSE() {
|
||||
assumeThat(getPlatformSystemProperty(), equalTo(
|
||||
OPENJSSE_PROPERTY))
|
||||
}
|
||||
|
||||
fun assumeJdk8() {
|
||||
assumeThat(getPlatformSystemProperty(), equalTo(
|
||||
JDK8_PROPERTY))
|
||||
@@ -206,6 +219,11 @@ open class PlatformRule @JvmOverloads constructor(
|
||||
JDK8_ALPN_PROPERTY))
|
||||
}
|
||||
|
||||
fun assumeNotOpenJSSE() {
|
||||
assumeThat(getPlatformSystemProperty(), not(
|
||||
OPENJSSE_PROPERTY))
|
||||
}
|
||||
|
||||
fun assumeNotHttp2Support() {
|
||||
assumeThat(getPlatformSystemProperty(), equalTo(
|
||||
JDK8_PROPERTY))
|
||||
@@ -221,6 +239,7 @@ open class PlatformRule @JvmOverloads constructor(
|
||||
const val JDK9_PROPERTY = "jdk9"
|
||||
const val JDK8_ALPN_PROPERTY = "jdk8alpn"
|
||||
const val JDK8_PROPERTY = "jdk8"
|
||||
const val OPENJSSE_PROPERTY = "openjsse"
|
||||
|
||||
init {
|
||||
if (getPlatformSystemProperty() == CONSCRYPT_PROPERTY && Security.getProviders()[0].name != "Conscrypt") {
|
||||
@@ -238,7 +257,15 @@ open class PlatformRule @JvmOverloads constructor(
|
||||
if (isAlpnBootEnabled()) {
|
||||
System.err.println("Warning: ALPN Boot enabled unintentionally")
|
||||
}
|
||||
} else if (getPlatformSystemProperty() == OPENJSSE_PROPERTY && Security.getProviders()[0].name != "OpenJSSE") {
|
||||
if (!OpenJSSEPlatform.isSupported) {
|
||||
System.err.println("Warning: OpenJSSE not available")
|
||||
}
|
||||
|
||||
Security.insertProviderAt(OpenJSSE(), 1)
|
||||
}
|
||||
|
||||
Platform.resetForTests()
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@@ -249,6 +276,7 @@ open class PlatformRule @JvmOverloads constructor(
|
||||
if (property == null) {
|
||||
property = when (Platform.get()) {
|
||||
is ConscryptPlatform -> CONSCRYPT_PROPERTY
|
||||
is OpenJSSEPlatform -> OPENJSSE_PROPERTY
|
||||
is Jdk8WithJettyBootPlatform -> CONSCRYPT_PROPERTY
|
||||
is Jdk9Platform -> JDK9_PROPERTY
|
||||
else -> JDK8_PROPERTY
|
||||
@@ -261,6 +289,9 @@ open class PlatformRule @JvmOverloads constructor(
|
||||
@JvmStatic
|
||||
fun conscrypt() = PlatformRule(CONSCRYPT_PROPERTY)
|
||||
|
||||
@JvmStatic
|
||||
fun openjsse() = PlatformRule(OPENJSSE_PROPERTY)
|
||||
|
||||
@JvmStatic
|
||||
fun jdk9() = PlatformRule(JDK9_PROPERTY)
|
||||
|
||||
|
Reference in New Issue
Block a user