Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/javax/crypto/Cipher/GetMaxAllowed.java
41149 views
1
/*
2
* Copyright (c) 2003, 2012, 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 4807942 7033170
27
* @summary Test the Cipher.getMaxAllowedKeyLength(String) and
28
* getMaxAllowedParameterSpec(String) methods
29
* @author Valerie Peng
30
*/
31
32
import java.util.*;
33
import java.nio.*;
34
35
import java.security.*;
36
import java.security.spec.*;
37
38
import javax.crypto.*;
39
import javax.crypto.spec.*;
40
41
public class GetMaxAllowed {
42
43
private static void runTest1(boolean isUnlimited) throws Exception {
44
System.out.println("Testing " + (isUnlimited? "un":"") +
45
"limited policy...");
46
47
String algo = "Blowfish";
48
int keyLength = Cipher.getMaxAllowedKeyLength(algo);
49
AlgorithmParameterSpec spec = Cipher.getMaxAllowedParameterSpec(algo);
50
if (isUnlimited) {
51
if ((keyLength != Integer.MAX_VALUE) || (spec != null)) {
52
throw new Exception("Check for " + algo +
53
" failed under unlimited policy");
54
}
55
} else {
56
if ((keyLength != 128) || (spec != null)) {
57
throw new Exception("Check for " + algo +
58
" failed under default policy");
59
}
60
}
61
algo = "RC5";
62
keyLength = Cipher.getMaxAllowedKeyLength(algo);
63
RC5ParameterSpec rc5param = (RC5ParameterSpec)
64
Cipher.getMaxAllowedParameterSpec(algo);
65
if (isUnlimited) {
66
if ((keyLength != Integer.MAX_VALUE) || (rc5param != null)) {
67
throw new Exception("Check for " + algo +
68
" failed under unlimited policy");
69
}
70
} else {
71
if ((keyLength != 128) || (rc5param.getRounds() != 12) ||
72
(rc5param.getVersion() != Integer.MAX_VALUE) ||
73
(rc5param.getWordSize() != Integer.MAX_VALUE)) {
74
throw new Exception("Check for " + algo +
75
" failed under default policy");
76
}
77
}
78
System.out.println("All tests passed");
79
}
80
81
private static void runTest2() throws Exception {
82
System.out.println("Testing against Security.getAlgorithms()");
83
84
Set<String> algorithms = Security.getAlgorithms("Cipher");
85
86
for (String algorithm: algorithms) {
87
int keylength = -1;
88
89
// if 7033170 is not fixed, NoSuchAlgorithmException is thrown
90
keylength = Cipher.getMaxAllowedKeyLength(algorithm);
91
92
}
93
}
94
95
public static void main(String[] args) throws Exception {
96
// decide if the installed jurisdiction policy file is the
97
// unlimited version
98
boolean isUnlimited = true;
99
Cipher c = Cipher.getInstance("AES", "SunJCE");
100
try {
101
c.init(Cipher.ENCRYPT_MODE, new SecretKeySpec(new byte[24], "AES"));
102
} catch (InvalidKeyException ike) {
103
isUnlimited = false;
104
}
105
runTest1(isUnlimited);
106
107
// test using the set of algorithms returned by Security.getAlgorithms()
108
runTest2();
109
}
110
}
111
112