Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/test/sun/security/provider/PolicyParser/TokenStore.java
38853 views
1
/*
2
* Copyright (c) 2003, 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 4919147
27
* @summary Support for token-based KeyStores
28
*/
29
30
import java.io.*;
31
import java.util.*;
32
import sun.security.provider.*;
33
34
public class TokenStore {
35
36
private static final String POLICY_NO_STORE =
37
"grant { permission java.security.AllPermission; };";
38
39
private static final String POLICY_URL =
40
"keystore \"file:${test.src}${/}TokenStore.keystore\";" +
41
"grant signedby \"POLICY_URL\" {" +
42
" permission java.security.AllPermission;" +
43
"};" ;
44
45
private static final String POLICY_URL_T =
46
"keystore \"file:${test.src}${/}TokenStore.keystore\", \"JKS\";"+
47
"grant signedby \"POLICY_URL_T\" {" +
48
" permission java.security.AllPermission;" +
49
"};" ;
50
51
private static final String POLICY_URL_T_P =
52
"keystore \"file:${test.src}${/}TokenStore.keystore\"," +
53
" \"JKS\", \"SUN\";" +
54
"grant signedby \"POLICY_URL_T_P\" {" +
55
" permission java.security.AllPermission;" +
56
"};" ;
57
58
private static final String POLICY_URL_PWD =
59
"keystore \"file:${test.src}${/}TokenStore.keystore\";" +
60
"keystorePasswordURL \"file:${test.src}${/}TokenStore.pwd\";" +
61
"grant signedby \"POLICY_URL\" {" +
62
" permission java.security.AllPermission;" +
63
"};" ;
64
65
private static final String POLICY_URL_T_P_PWD =
66
"keystore \"file:${test.src}${/}TokenStore.keystore\"," +
67
" \"JKS\", \"SUN\";" +
68
"keystorePasswordURL \"file:${test.src}${/}TokenStore.pwd\";" +
69
"grant signedby \"POLICY_URL_T_P\" {" +
70
" permission java.security.AllPermission;" +
71
"};" ;
72
73
private static final String POLICY_PASS_NO_STORE =
74
"keystorePasswordURL \"file:${test.src}${/}TokenStore.pwd\";" +
75
"grant signedby \"POLICY_URL_T_P\" {" +
76
" permission java.security.AllPermission;" +
77
"};" ;
78
79
public static void main(String[] args) throws Exception {
80
81
// test no key store in policy
82
83
PolicyParser p = new PolicyParser();
84
p.read(new StringReader(POLICY_NO_STORE));
85
doNoStore(p);
86
StringWriter sw = new StringWriter();
87
p.write(sw);
88
PolicyParser newP = new PolicyParser();
89
newP.read(new StringReader(sw.toString()));
90
doNoStore(p);
91
92
// test policy keystore + URL
93
94
p = new PolicyParser();
95
p.read(new StringReader(POLICY_URL));
96
doURL(p, true);
97
sw = new StringWriter();
98
p.write(sw);
99
newP = new PolicyParser();
100
newP.read(new StringReader(sw.toString()));
101
doURL(p, true);
102
103
// test policy keystore + URL + type
104
105
p = new PolicyParser();
106
p.read(new StringReader(POLICY_URL_T));
107
doURL_T(p, true);
108
sw = new StringWriter();
109
p.write(sw);
110
newP = new PolicyParser();
111
newP.read(new StringReader(sw.toString()));
112
doURL_T(p, true);
113
114
// test policy keystore + URL + type + provider
115
116
p = new PolicyParser();
117
p.read(new StringReader(POLICY_URL_T_P));
118
doURL_T_P(p, true);
119
sw = new StringWriter();
120
p.write(sw);
121
newP = new PolicyParser();
122
newP.read(new StringReader(sw.toString()));
123
doURL_T_P(p, true);
124
125
// test policy keystore + URL + password
126
127
p = new PolicyParser();
128
p.read(new StringReader(POLICY_URL_PWD));
129
doURL(p, false);
130
doPwd(p);
131
sw = new StringWriter();
132
p.write(sw);
133
newP = new PolicyParser();
134
newP.read(new StringReader(sw.toString()));
135
doURL(p, false);
136
doPwd(p);
137
138
// test policy keystore + URL + type + provider + password
139
140
p = new PolicyParser();
141
p.read(new StringReader(POLICY_URL_T_P_PWD));
142
doURL_T_P(p, false);
143
doPwd(p);
144
sw = new StringWriter();
145
p.write(sw);
146
newP = new PolicyParser();
147
newP.read(new StringReader(sw.toString()));
148
doURL_T_P(p, false);
149
doPwd(p);
150
151
// test policy password with no keystore
152
p = new PolicyParser();
153
try {
154
p.read(new StringReader(POLICY_PASS_NO_STORE));
155
throw new SecurityException("expected parsing exception");
156
} catch (PolicyParser.ParsingException pe) {
157
// good
158
}
159
160
}
161
162
private static void checkPerm(PolicyParser p) throws Exception {
163
Enumeration e = p.grantElements();
164
boolean foundOne = false;
165
while (e.hasMoreElements()) {
166
PolicyParser.GrantEntry ge = (PolicyParser.GrantEntry)
167
e.nextElement();
168
if (ge.permissionEntries == null) {
169
throw new SecurityException("expected non-null perms");
170
} else {
171
foundOne = true;
172
}
173
}
174
if (!foundOne) {
175
throw new SecurityException("expected non-null grant entries");
176
}
177
}
178
179
private static void doNoStore(PolicyParser p) throws Exception {
180
if (p.getKeyStoreUrl() != null ||
181
p.getKeyStoreType() != null ||
182
p.getKeyStoreProvider() != null ||
183
p.getStorePassURL() != null) {
184
throw new SecurityException("expected null keystore");
185
}
186
checkPerm(p);
187
}
188
189
private static void doURL(PolicyParser p, boolean checkPwd)
190
throws Exception {
191
if (p.getKeyStoreUrl() == null ||
192
!(p.getKeyStoreUrl().endsWith("TokenStore.keystore")) ||
193
p.getKeyStoreType() != null ||
194
p.getKeyStoreProvider() != null) {
195
throw new SecurityException("invalid keystore values");
196
}
197
if (checkPwd) {
198
if (p.getStorePassURL() != null) {
199
throw new SecurityException("invalid keystore values");
200
}
201
}
202
checkPerm(p);
203
}
204
205
private static void doURL_T(PolicyParser p, boolean checkPwd)
206
throws Exception {
207
if (p.getKeyStoreUrl() == null ||
208
!(p.getKeyStoreUrl().endsWith("TokenStore.keystore")) ||
209
p.getKeyStoreType() == null ||
210
!(p.getKeyStoreType().equals("JKS")) ||
211
p.getKeyStoreProvider() != null) {
212
throw new SecurityException("invalid keystore values");
213
}
214
if (checkPwd) {
215
if (p.getStorePassURL() != null) {
216
throw new SecurityException("invalid keystore values");
217
}
218
}
219
checkPerm(p);
220
}
221
222
private static void doURL_T_P(PolicyParser p, boolean checkPwd)
223
throws Exception {
224
if (p.getKeyStoreUrl() == null ||
225
!(p.getKeyStoreUrl().endsWith("TokenStore.keystore")) ||
226
p.getKeyStoreType() == null ||
227
!(p.getKeyStoreType().equals("JKS")) ||
228
p.getKeyStoreProvider() == null ||
229
!(p.getKeyStoreProvider().equals("SUN"))) {
230
throw new SecurityException("invalid keystore values");
231
}
232
if (checkPwd) {
233
if (p.getStorePassURL() != null) {
234
throw new SecurityException("invalid keystore values");
235
}
236
}
237
checkPerm(p);
238
}
239
240
private static void doPwd(PolicyParser p) throws Exception {
241
if (p.getStorePassURL() == null ||
242
!(p.getStorePassURL().endsWith("TokenStore.pwd"))) {
243
throw new SecurityException("invalid password values");
244
}
245
}
246
}
247
248