Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/javax/net/ssl/compatibility/BasicConnectTest.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 basic handshaking and
27
* client authentication against all SSL/TLS protocols.
28
*
29
* @library /test/lib
30
* ../TLSCommon
31
* ../TLSCommon/interop
32
* @compile -source 1.8 -target 1.8
33
* JdkInfoUtils.java
34
* ../TLSCommon/interop/JdkProcServer.java
35
* ../TLSCommon/interop/JdkProcClient.java
36
* @run main/manual BasicConnectTest true
37
* @run main/manual BasicConnectTest false
38
*/
39
40
import java.nio.file.Paths;
41
import java.util.ArrayList;
42
import java.util.List;
43
import java.util.Set;
44
45
public class BasicConnectTest extends BaseInteropTest<UseCase> {
46
47
private JdkInfo serverJdkInfo;
48
private JdkInfo clientJdkInfo;
49
50
public BasicConnectTest(JdkInfo serverJdkInfo, JdkInfo clientJdkInfo) {
51
super(new Jdk(serverJdkInfo.version, serverJdkInfo.javaPath),
52
new Jdk(clientJdkInfo.version, clientJdkInfo.javaPath));
53
54
this.serverJdkInfo = serverJdkInfo;
55
this.clientJdkInfo = clientJdkInfo;
56
}
57
58
@Override
59
protected List<TestCase<UseCase>> getTestCases() {
60
List<TestCase<UseCase>> useCases = new ArrayList<>();
61
for (Protocol protocol : new Protocol[] {
62
Protocol.SSLV3,
63
Protocol.TLSV1,
64
Protocol.TLSV1_1,
65
Protocol.TLSV1_2,
66
Protocol.TLSV1_3 }) {
67
for (CipherSuite cipherSuite : Utilities.ALL_CIPHER_SUITES) {
68
if (!cipherSuite.supportedByProtocol(protocol)) {
69
continue;
70
}
71
72
Cert cert = Utils.getCert(cipherSuite.keyExAlgorithm);
73
CertTuple certTuple = new CertTuple(cert, cert);
74
75
UseCase serverCase = UseCase.newInstance()
76
.setCertTuple(certTuple)
77
.setClientAuth(true);
78
79
UseCase clientCase = UseCase.newInstance()
80
.setCertTuple(certTuple)
81
.setProtocols(protocol)
82
.setCipherSuites(cipherSuite);
83
84
useCases.add(new TestCase<UseCase>(serverCase, clientCase));
85
}
86
}
87
return useCases;
88
}
89
90
@Override
91
protected boolean ignoreTestCase(TestCase<UseCase> testCase) {
92
Protocol protocol = testCase.clientCase.getProtocol();
93
CipherSuite cipherSuite = testCase.clientCase.getCipherSuite();
94
return !supportsProtocol(protocol)
95
|| !supportsCipherSuite(cipherSuite)
96
// DHE_DSS cipher suites cannot work with pre-TLSv1.2 protocols,
97
// see JDK-8242928 for more details.
98
|| (protocol.id < Protocol.TLSV1_2.id
99
&& (cipherSuite.keyExAlgorithm == KeyExAlgorithm.DHE_DSS
100
|| cipherSuite.keyExAlgorithm == KeyExAlgorithm.DHE_DSS_EXPORT));
101
}
102
103
private boolean supportsProtocol(Protocol protocol) {
104
return serverJdkInfo.enablesProtocol(protocol)
105
&& clientJdkInfo.supportsProtocol(protocol);
106
}
107
108
private boolean supportsCipherSuite(CipherSuite cipherSuite) {
109
return serverJdkInfo.enablesCipherSuite(cipherSuite)
110
&& clientJdkInfo.supportsCipherSuite(cipherSuite);
111
}
112
113
@Override
114
protected AbstractServer.Builder createServerBuilder(UseCase useCase)
115
throws Exception {
116
return serverJdkInfo == JdkInfo.DEFAULT
117
? createJdkServerBuilder(useCase)
118
: createAltJdkServerBuilder(useCase);
119
}
120
121
private JdkServer.Builder createJdkServerBuilder(UseCase useCase) {
122
JdkServer.Builder builder = new JdkServer.Builder();
123
builder.setCertTuple(useCase.getCertTuple());
124
builder.setProtocols(useCase.getProtocols());
125
builder.setCipherSuites(useCase.getCipherSuites());
126
builder.setClientAuth(useCase.isClientAuth());
127
return builder;
128
}
129
130
private JdkProcServer.Builder createAltJdkServerBuilder(UseCase useCase) {
131
JdkProcServer.Builder builder = new JdkProcServer.Builder();
132
builder.setJdk((Jdk) serverProduct);
133
builder.setSecPropsFile(Paths.get(Utils.SEC_PROPS_FILE));
134
builder.setCertTuple(useCase.getCertTuple());
135
builder.setProtocols(useCase.getProtocols());
136
builder.setCipherSuites(useCase.getCipherSuites());
137
builder.setClientAuth(useCase.isClientAuth());
138
return builder;
139
}
140
141
@Override
142
protected AbstractClient.Builder createClientBuilder(UseCase useCase)
143
throws Exception {
144
return serverJdkInfo == JdkInfo.DEFAULT
145
? createJdkClientBuilder(useCase)
146
: createAltJdkClientBuilder(useCase);
147
}
148
149
private JdkClient.Builder createJdkClientBuilder(UseCase useCase) {
150
JdkClient.Builder builder = new JdkClient.Builder();
151
builder.setCertTuple(useCase.getCertTuple());
152
builder.setProtocols(useCase.getProtocols());
153
builder.setCipherSuites(useCase.getCipherSuites());
154
return builder;
155
}
156
157
private JdkProcClient.Builder createAltJdkClientBuilder(UseCase useCase) {
158
JdkProcClient.Builder builder = new JdkProcClient.Builder();
159
builder.setJdk((Jdk) clientProduct);
160
builder.setSecPropsFile(Paths.get(Utils.SEC_PROPS_FILE));
161
builder.setCertTuple(useCase.getCertTuple());
162
builder.setProtocols(useCase.getProtocols());
163
builder.setCipherSuites(useCase.getCipherSuites());
164
return builder;
165
}
166
167
public static void main(String[] args) throws Exception {
168
Boolean defaultJdkAsServer = Boolean.valueOf(args[0]);
169
170
System.setProperty("java.security.properties", Utils.SEC_PROPS_FILE);
171
172
Set<JdkInfo> jdkInfos = Utils.jdkInfoList();
173
for (JdkInfo jdkInfo : jdkInfos) {
174
BasicConnectTest test = new BasicConnectTest(
175
defaultJdkAsServer ? JdkInfo.DEFAULT : jdkInfo,
176
defaultJdkAsServer ? jdkInfo : JdkInfo.DEFAULT);
177
test.execute();
178
}
179
}
180
}
181
182