Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/javax/security/auth/login/Configuration/GetInstance.java
51695 views
1
/*
2
* Copyright (c) 2005, 2017, 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
* @bug 6268315
27
* @bug 6273812
28
* @modules jdk.security.auth
29
* @summary Configuration should be provider-based
30
* @build GetInstanceConfigSpi GetInstanceProvider
31
* @run main/othervm -Djava.security.auth.login.config==${test.src}${/}GetInstance.config GetInstance
32
*/
33
34
import java.security.NoSuchAlgorithmException;
35
import java.security.NoSuchProviderException;
36
import java.security.Provider;
37
import java.security.Security;
38
import java.security.URIParameter;
39
import java.io.File;
40
import java.net.URI;
41
import javax.security.auth.login.AppConfigurationEntry;
42
import javax.security.auth.login.Configuration;
43
44
public class GetInstance {
45
46
private static final String JAVA_CONFIG = "JavaLoginConfig";
47
48
private static final String MOD0 = "com.foo.Module";
49
private static final String MOD1 = "com.bar.Module";
50
private static final String MOD2 = "com.foobar.Module";
51
private static final String MOD3 = "Module";
52
53
private static class BadParam implements Configuration.Parameters { }
54
55
public static void main(String[] args) throws Exception {
56
57
int testnum = 1;
58
GetInstance gi = new GetInstance();
59
60
testnum = gi.testDefault(testnum);
61
testnum = gi.testStringProvider(testnum);
62
testnum = gi.testProvider(testnum);
63
testnum = gi.testCustomImpl(testnum);
64
testnum = gi.testURIParam(testnum);
65
testnum = gi.testException(testnum);
66
}
67
68
private int testDefault(int testnum) throws Exception {
69
// get an instance of the default ConfigSpiFile
70
Configuration c = Configuration.getInstance(JAVA_CONFIG, null);
71
doTest(c, testnum++);
72
73
// get an instance of FooConfig
74
try {
75
c = Configuration.getInstance("FooConfig", null);
76
throw new SecurityException("test " + testnum++ + " failed");
77
} catch (NoSuchAlgorithmException nsae) {
78
// good
79
System.out.println("test " + testnum++ + " passed");
80
}
81
82
return testnum;
83
}
84
85
private int testStringProvider(int testnum) throws Exception {
86
// get an instance of JavaLoginConfig from SUN
87
Configuration c = Configuration.getInstance(JAVA_CONFIG, null, "SUN");
88
doTest(c, testnum++);
89
90
// get an instance of JavaLoginConfig from SunRsaSign
91
try {
92
c = Configuration.getInstance(JAVA_CONFIG, null, "SunRsaSign");
93
throw new SecurityException("test " + testnum++ + " failed");
94
} catch (NoSuchAlgorithmException nsae) {
95
// good
96
System.out.println("test " + testnum++ + " passed");
97
}
98
99
// get an instance of JavaLoginConfig from FOO
100
try {
101
c = Configuration.getInstance(JAVA_CONFIG, null, "FOO");
102
throw new SecurityException("test " + testnum++ + " failed");
103
} catch (NoSuchProviderException nspe) {
104
// good
105
System.out.println("test " + testnum++ + " passed");
106
}
107
108
return testnum;
109
}
110
111
private int testProvider(int testnum) throws Exception {
112
// get an instance of JavaLoginConfig from SUN
113
Configuration c = Configuration.getInstance(JAVA_CONFIG,
114
null,
115
Security.getProvider("SUN"));
116
doTest(c, testnum++);
117
118
// get an instance of JavaLoginConfig from SunRsaSign
119
try {
120
c = Configuration.getInstance(JAVA_CONFIG,
121
null,
122
Security.getProvider("SunRsaSign"));
123
throw new SecurityException("test " + testnum++ + " failed");
124
} catch (NoSuchAlgorithmException nsae) {
125
// good
126
System.out.println("test " + testnum++ + " passed");
127
}
128
129
return testnum;
130
}
131
132
private int testCustomImpl(int testnum) throws Exception {
133
Provider customProvider = new GetInstanceProvider();
134
Configuration c = Configuration.getInstance("GetInstanceConfigSpi",
135
null,
136
customProvider);
137
doCustomTest(c, testnum++, customProvider);
138
return testnum;
139
}
140
141
private int testURIParam(int testnum) throws Exception {
142
// get an instance of JavaLoginConfig
143
// from SUN and have it read from the URI
144
145
File file = new File(System.getProperty("test.src", "."),
146
"GetInstance.configURI");
147
URI uri = file.toURI();
148
URIParameter uriParam = new URIParameter(uri);
149
Configuration c = Configuration.getInstance(JAVA_CONFIG, uriParam);
150
doTestURI(c, uriParam, testnum++);
151
152
return testnum;
153
}
154
155
private int testException(int testnum) throws Exception {
156
// get an instance of JavaLoginConfig
157
// from SUN and have it read from the bad URI
158
159
File file = new File(System.getProperty("test.src", "."),
160
"GetInstance.bad.configURI");
161
URI uri = file.toURI();
162
URIParameter uriParam = new URIParameter(uri);
163
164
try {
165
Configuration c = Configuration.getInstance(JAVA_CONFIG, uriParam);
166
throw new SecurityException("expected IOException");
167
} catch (NoSuchAlgorithmException nsae) {
168
if (nsae.getCause() instanceof java.io.IOException) {
169
System.out.println("exception test passed: " +
170
nsae.getCause().getMessage());
171
} else {
172
throw new SecurityException("expected IOException");
173
}
174
}
175
176
// pass bad param
177
try {
178
Configuration c = Configuration.getInstance(JAVA_CONFIG,
179
new BadParam());
180
throw new SecurityException("test " + testnum++ + " failed");
181
} catch (IllegalArgumentException iae) {
182
// good
183
System.out.println("test " + testnum++ + " passed");
184
}
185
186
try {
187
Configuration c = Configuration.getInstance(JAVA_CONFIG,
188
new BadParam(),
189
"SUN");
190
throw new SecurityException("test " + testnum++ + " failed");
191
} catch (IllegalArgumentException iae) {
192
// good
193
System.out.println("test " + testnum++ + " passed");
194
}
195
196
try {
197
Configuration c = Configuration.getInstance(JAVA_CONFIG,
198
new BadParam(),
199
Security.getProvider("SUN"));
200
throw new SecurityException("test " + testnum++ + " failed");
201
} catch (IllegalArgumentException iae) {
202
// good
203
System.out.println("test " + testnum++ + " passed");
204
}
205
206
return testnum;
207
}
208
209
private int doCommon(Configuration c, int testnum) throws Exception {
210
211
AppConfigurationEntry[] entries = c.getAppConfigurationEntry("EMPTY");
212
if (entries == null) {
213
System.out.println("test " + testnum + ".1 passed");
214
} else {
215
throw new SecurityException("test " + testnum + ".1 failed");
216
}
217
218
entries = c.getAppConfigurationEntry("one");
219
if (entries.length == 1 &&
220
MOD0.equals(entries[0].getLoginModuleName()) &&
221
AppConfigurationEntry.LoginModuleControlFlag.REQUIRED ==
222
entries[0].getControlFlag()) {
223
System.out.println("test " + testnum + ".2 passed");
224
} else {
225
throw new SecurityException("test " + testnum + ".2 failed");
226
}
227
228
entries = c.getAppConfigurationEntry("two");
229
if (entries.length == 2 &&
230
MOD0.equals(entries[0].getLoginModuleName()) &&
231
AppConfigurationEntry.LoginModuleControlFlag.SUFFICIENT ==
232
entries[0].getControlFlag() &&
233
MOD1.equals(entries[1].getLoginModuleName()) &&
234
AppConfigurationEntry.LoginModuleControlFlag.REQUIRED ==
235
entries[1].getControlFlag()) {
236
System.out.println("test " + testnum + ".3 passed");
237
} else {
238
throw new SecurityException("test " + testnum + ".3 failed");
239
}
240
241
entries = c.getAppConfigurationEntry("three");
242
if (entries.length == 3 &&
243
MOD0.equals(entries[0].getLoginModuleName()) &&
244
AppConfigurationEntry.LoginModuleControlFlag.SUFFICIENT ==
245
entries[0].getControlFlag() &&
246
MOD1.equals(entries[1].getLoginModuleName()) &&
247
AppConfigurationEntry.LoginModuleControlFlag.REQUIRED ==
248
entries[1].getControlFlag() &&
249
MOD2.equals(entries[2].getLoginModuleName()) &&
250
AppConfigurationEntry.LoginModuleControlFlag.OPTIONAL ==
251
entries[2].getControlFlag()) {
252
System.out.println("test " + testnum + ".4 passed");
253
} else {
254
throw new SecurityException("test " + testnum + ".4 failed");
255
}
256
257
return testnum;
258
}
259
260
private void doCustomTest(Configuration c,
261
int testnum,
262
Provider custom) throws Exception {
263
264
testnum = doCommon(c, testnum);
265
266
// test getProvider
267
if (custom == c.getProvider() &&
268
"GetInstanceProvider".equals(c.getProvider().getName())) {
269
System.out.println("test " + testnum + " (getProvider) passed");
270
} else {
271
throw new SecurityException
272
("test " + testnum + " (getProvider) failed");
273
}
274
275
// test getType
276
if ("GetInstanceConfigSpi".equals(c.getType())) {
277
System.out.println("test " + testnum + "(getType) passed");
278
} else {
279
throw new SecurityException("test " + testnum +
280
" (getType) failed");
281
}
282
}
283
284
private void doTest(Configuration c, int testnum) throws Exception {
285
testnum = doCommon(c, testnum);
286
287
// test getProvider
288
if ("SUN".equals(c.getProvider().getName())) {
289
System.out.println("test " + testnum + " (getProvider) passed");
290
} else {
291
throw new SecurityException("test " + testnum +
292
" (getProvider) failed");
293
}
294
295
// test getType
296
if (JAVA_CONFIG.equals(c.getType())) {
297
System.out.println("test " + testnum + " (getType) passed");
298
} else {
299
throw new SecurityException("test " + testnum +
300
" (getType) failed");
301
}
302
}
303
304
private void doTestURI(Configuration c,
305
Configuration.Parameters uriParam,
306
int testnum) throws Exception {
307
308
AppConfigurationEntry[] entries = c.getAppConfigurationEntry("four");
309
if (entries.length == 4 &&
310
MOD0.equals(entries[0].getLoginModuleName()) &&
311
AppConfigurationEntry.LoginModuleControlFlag.SUFFICIENT ==
312
entries[0].getControlFlag() &&
313
MOD1.equals(entries[1].getLoginModuleName()) &&
314
AppConfigurationEntry.LoginModuleControlFlag.REQUIRED ==
315
entries[1].getControlFlag() &&
316
MOD2.equals(entries[2].getLoginModuleName()) &&
317
AppConfigurationEntry.LoginModuleControlFlag.OPTIONAL ==
318
entries[2].getControlFlag() &&
319
MOD3.equals(entries[3].getLoginModuleName()) &&
320
AppConfigurationEntry.LoginModuleControlFlag.REQUIRED ==
321
entries[3].getControlFlag()) {
322
System.out.println("test " + testnum + ".1 passed");
323
} else {
324
throw new SecurityException("test " + testnum + ".1 failed");
325
}
326
327
// test getProvider
328
if ("SUN".equals(c.getProvider().getName())) {
329
System.out.println("test " + testnum + " (getProvider) passed");
330
} else {
331
throw new SecurityException("test " + testnum +
332
" (getProvider) failed");
333
}
334
335
// test getType
336
if (JAVA_CONFIG.equals(c.getType())) {
337
System.out.println("test " + testnum + " (getType) passed");
338
} else {
339
throw new SecurityException("test " + testnum +
340
" (getType) failed");
341
}
342
343
// test getParameters
344
if (uriParam.equals(c.getParameters())) {
345
System.out.println("test " + testnum + " (getParameters) passed");
346
} else {
347
throw new SecurityException("test " + testnum +
348
" (getParameters) failed");
349
}
350
}
351
}
352
353