Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/javax/net/ssl/TLSCommon/interop/AbstractPeer.java
41154 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
import java.io.IOException;
25
import java.nio.file.Path;
26
import java.util.Collections;
27
import java.util.HashMap;
28
import java.util.Map;
29
import java.util.Objects;
30
31
/*
32
* Abstract peer implementation.
33
*/
34
public abstract class AbstractPeer implements Peer {
35
36
/*
37
* Peer's log path. The path could be null.
38
*/
39
protected Path getLogPath() {
40
return null;
41
}
42
43
/*
44
* Prints the content of log file to stdout.
45
*/
46
protected void printLog() throws IOException {
47
Path logPath = getLogPath();
48
Objects.requireNonNull(logPath, "Please specify log path.");
49
System.out.println(Utilities.readFile(logPath).orElse(""));
50
}
51
52
/*
53
* Deletes log file if exists.
54
*/
55
protected void deleteLog() throws IOException {
56
Utilities.deleteFile(getLogPath());
57
}
58
59
/*
60
* The negotiated application protocol.
61
*/
62
public String getNegoAppProtocol() throws SSLTestException {
63
throw new UnsupportedOperationException("getNegoAppProtocol");
64
}
65
66
@Override
67
public void close() throws IOException { }
68
69
public static abstract class Builder implements Peer.Builder {
70
71
// The supported SSL/TLS protocols.
72
private Protocol[] protocols;
73
74
// The supported cipher suites.
75
private CipherSuite[] cipherSuites;
76
77
// The trusted CAs and certificates.
78
private CertTuple certTuple;
79
80
// The server-acceptable SNI server name patterns;
81
// Or the client-desired SNI server names.
82
private String[] serverNames;
83
84
// The supported application protocols.
85
private String[] appProtocols;
86
87
// The supported named groups.
88
private NamedGroup[] namedGroups;
89
90
private String message = "M";
91
92
private int timeout = Utilities.TIMEOUT;
93
94
// System properties
95
private final Map<String, String> props = new HashMap<>();
96
97
public Protocol[] getProtocols() {
98
return protocols;
99
}
100
101
public Protocol getProtocol() {
102
return protocols != null && protocols.length > 0
103
? protocols[0]
104
: null;
105
}
106
107
public Builder setProtocols(Protocol... protocols) {
108
this.protocols = protocols;
109
return this;
110
}
111
112
public CipherSuite[] getCipherSuites() {
113
return cipherSuites;
114
}
115
116
public CipherSuite getCipherSuite() {
117
return cipherSuites != null && cipherSuites.length > 0
118
? cipherSuites[0]
119
: null;
120
}
121
122
public Builder setCipherSuites(CipherSuite... cipherSuites) {
123
this.cipherSuites = cipherSuites;
124
return this;
125
}
126
127
public CertTuple getCertTuple() {
128
return certTuple;
129
}
130
131
public Builder setCertTuple(CertTuple certTuple) {
132
this.certTuple = certTuple;
133
return this;
134
}
135
136
public String[] getServerNames() {
137
return serverNames;
138
}
139
140
public String getServerName() {
141
return serverNames != null && serverNames.length > 0
142
? serverNames[0]
143
: null;
144
}
145
146
public Builder setServerNames(String... serverNames) {
147
this.serverNames = serverNames;
148
return this;
149
}
150
151
public String[] getAppProtocols() {
152
return appProtocols;
153
}
154
155
public String getAppProtocol() {
156
return appProtocols != null && appProtocols.length > 0
157
? appProtocols[0]
158
: null;
159
}
160
161
public Builder setAppProtocols(String... appProtocols) {
162
this.appProtocols = appProtocols;
163
return this;
164
}
165
166
public NamedGroup[] getNamedGroups() {
167
return namedGroups;
168
}
169
170
public Builder setNamedGroups(NamedGroup... namedGroups) {
171
this.namedGroups = namedGroups;
172
return this;
173
}
174
175
public String getMessage() {
176
return message;
177
}
178
179
public Builder setMessage(String message) {
180
this.message = message;
181
return this;
182
}
183
184
public int getTimeout() {
185
return timeout;
186
}
187
188
public Builder setTimeout(int timeout) {
189
this.timeout = timeout;
190
return this;
191
}
192
193
public Builder addProp(String prop, String value) {
194
props.put(prop, value);
195
return this;
196
}
197
198
public String getProp(String prop) {
199
return props.get(prop);
200
}
201
202
public Builder addAllProps(Map<String, String> props) {
203
this.props.putAll(props);
204
return this;
205
}
206
207
public Map<String, String> getAllProps() {
208
return Collections.unmodifiableMap(props);
209
}
210
211
public abstract AbstractPeer build() throws Exception;
212
}
213
}
214
215