Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/javax/net/ssl/compatibility/SniTest.java
41152 views
1
/*
2
* Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
/*
25
* @test
26
* @summary This is an interop compatibility test on SNI.
27
*
28
* @library /test/lib
29
* ../TLSCommon
30
* ../TLSCommon/interop
31
* @compile -source 1.8 -target 1.8
32
* JdkInfoUtils.java
33
* ../TLSCommon/interop/JdkProcServer.java
34
* ../TLSCommon/interop/JdkProcClient.java
35
* @run main/manual SniTest true
36
* @run main/manual SniTest false
37
*/
38
39
import java.util.ArrayList;
40
import java.util.List;
41
import java.util.Set;
42
43
public class SniTest extends ExtInteropTest {
44
45
private JdkInfo serverJdkInfo;
46
private JdkInfo clientJdkInfo;
47
48
public SniTest(JdkInfo serverJdkInfo, JdkInfo clientJdkInfo) {
49
super(new Jdk(serverJdkInfo.version, serverJdkInfo.javaPath),
50
new Jdk(clientJdkInfo.version, clientJdkInfo.javaPath));
51
52
this.serverJdkInfo = serverJdkInfo;
53
this.clientJdkInfo = clientJdkInfo;
54
}
55
56
@Override
57
protected boolean skipExecute() {
58
return super.skipExecute() || !supportsSNI();
59
}
60
61
private boolean supportsSNI() {
62
boolean supported = true;
63
64
if (!serverJdkInfo.supportsSNI) {
65
System.out.println("The server doesn't support SNI.");
66
supported = false;
67
}
68
69
if (!clientJdkInfo.supportsSNI) {
70
System.out.println("The client doesn't support SNI.");
71
supported = false;
72
}
73
74
return supported;
75
}
76
77
@Override
78
protected List<TestCase<ExtUseCase>> getTestCases() {
79
List<TestCase<ExtUseCase>> testCases = new ArrayList<>();
80
81
for (Protocol protocol : new Protocol[] {
82
Protocol.TLSV1_2, Protocol.TLSV1_3 }) {
83
for (CipherSuite cipherSuite : Utilities.ALL_CIPHER_SUITES) {
84
if (!cipherSuite.supportedByProtocol(protocol)) {
85
continue;
86
}
87
88
Cert cert = Utils.getCert(cipherSuite.keyExAlgorithm);
89
CertTuple certTuple = new CertTuple(cert, cert);
90
91
ExtUseCase serverCase = ExtUseCase.newInstance();
92
serverCase.setCertTuple(certTuple);
93
serverCase.setServerNames("SNI");
94
95
ExtUseCase clientCase = ExtUseCase.newInstance();
96
clientCase.setCertTuple(certTuple);
97
clientCase.setProtocols(protocol);
98
clientCase.setCipherSuites(cipherSuite);
99
clientCase.setServerNames(serverCase.getServerNames());
100
101
testCases.add(
102
new TestCase<ExtUseCase>(serverCase, clientCase));
103
}
104
}
105
106
return testCases;
107
}
108
109
@Override
110
protected boolean ignoreTestCase(TestCase<ExtUseCase> testCase) {
111
CipherSuite cipherSuite = testCase.clientCase.getCipherSuite();
112
return !serverJdkInfo.enablesCipherSuite(cipherSuite)
113
|| !clientJdkInfo.supportsCipherSuite(cipherSuite);
114
}
115
116
@Override
117
protected AbstractServer.Builder createServerBuilder(ExtUseCase useCase)
118
throws Exception {
119
return serverJdkInfo == JdkInfo.DEFAULT
120
? createJdkServerBuilder(useCase)
121
: createAltJdkServerBuilder(useCase);
122
}
123
124
private JdkServer.Builder createJdkServerBuilder(ExtUseCase useCase) {
125
JdkServer.Builder builder = new JdkServer.Builder();
126
builder.setCertTuple(useCase.getCertTuple());
127
builder.setProtocols(useCase.getProtocols());
128
builder.setCipherSuites(useCase.getCipherSuites());
129
builder.setServerNames(useCase.getServerNames());
130
return builder;
131
}
132
133
private JdkProcServer.Builder createAltJdkServerBuilder(ExtUseCase useCase) {
134
JdkProcServer.Builder builder = new JdkProcServer.Builder();
135
builder.setJdk((Jdk) serverProduct);
136
builder.setCertTuple(useCase.getCertTuple());
137
builder.setProtocols(useCase.getProtocols());
138
builder.setCipherSuites(useCase.getCipherSuites());
139
builder.setServerNames(useCase.getServerNames());
140
return builder;
141
}
142
143
@Override
144
protected AbstractClient.Builder createClientBuilder(ExtUseCase useCase)
145
throws Exception {
146
return clientJdkInfo == JdkInfo.DEFAULT
147
? createJdkClientBuilder(useCase)
148
: createAltJdkClientBuilder(useCase);
149
}
150
151
private JdkClient.Builder createJdkClientBuilder(ExtUseCase useCase) {
152
JdkClient.Builder builder = new JdkClient.Builder();
153
builder.setCertTuple(useCase.getCertTuple());
154
builder.setProtocols(useCase.getProtocols());
155
builder.setCipherSuites(useCase.getCipherSuites());
156
builder.setServerNames(useCase.getServerNames());
157
return builder;
158
}
159
160
private JdkProcClient.Builder createAltJdkClientBuilder(ExtUseCase useCase) {
161
JdkProcClient.Builder builder = new JdkProcClient.Builder();
162
builder.setJdk((Jdk) clientProduct);
163
builder.setCertTuple(useCase.getCertTuple());
164
builder.setProtocols(useCase.getProtocols());
165
builder.setCipherSuites(useCase.getCipherSuites());
166
builder.setServerNames(useCase.getServerNames());
167
return builder;
168
}
169
170
public static void main(String[] args) throws Exception {
171
Boolean defaultJdkAsServer = Boolean.valueOf(args[0]);
172
173
Set<JdkInfo> jdkInfos = Utils.jdkInfoList();
174
for (JdkInfo jdkInfo : jdkInfos) {
175
SniTest test = new SniTest(
176
defaultJdkAsServer ? JdkInfo.DEFAULT : jdkInfo,
177
defaultJdkAsServer ? jdkInfo : JdkInfo.DEFAULT);
178
test.execute();
179
}
180
}
181
}
182
183