final class javax.crypto.JceSecurityManager extends java.lang.SecurityManager
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: javax.crypto.JceSecurityManager
super_class: java.lang.SecurityManager
{
private static final javax.crypto.CryptoPermissions defaultPolicy;
descriptor: Ljavax/crypto/CryptoPermissions;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final javax.crypto.CryptoPermissions exemptPolicy;
descriptor: Ljavax/crypto/CryptoPermissions;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final javax.crypto.CryptoAllPermission allPerm;
descriptor: Ljavax/crypto/CryptoAllPermission;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.util.Vector<java.lang.Class<?>> TrustedCallersCache;
descriptor: Ljava/util/Vector;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/Vector<Ljava/lang/Class<*>;>;
private static final java.util.concurrent.ConcurrentMap<java.net.URL, javax.crypto.CryptoPermissions> exemptCache;
descriptor: Ljava/util/concurrent/ConcurrentMap;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/concurrent/ConcurrentMap<Ljava/net/URL;Ljavax/crypto/CryptoPermissions;>;
private static final javax.crypto.CryptoPermissions CACHE_NULL_MARK;
descriptor: Ljavax/crypto/CryptoPermissions;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static final javax.crypto.JceSecurityManager INSTANCE;
descriptor: Ljavax/crypto/JceSecurityManager;
flags: (0x0018) ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=0, args_size=0
0: new java.util.Vector
dup
iconst_2
invokespecial java.util.Vector.<init>:(I)V
1: putstatic javax.crypto.JceSecurityManager.TrustedCallersCache:Ljava/util/Vector;
2: new java.util.concurrent.ConcurrentHashMap
dup
invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
3: putstatic javax.crypto.JceSecurityManager.exemptCache:Ljava/util/concurrent/ConcurrentMap;
4: new javax.crypto.CryptoPermissions
dup
invokespecial javax.crypto.CryptoPermissions.<init>:()V
5: putstatic javax.crypto.JceSecurityManager.CACHE_NULL_MARK:Ljavax/crypto/CryptoPermissions;
6: invokestatic javax.crypto.JceSecurity.getDefaultPolicy:()Ljavax/crypto/CryptoPermissions;
putstatic javax.crypto.JceSecurityManager.defaultPolicy:Ljavax/crypto/CryptoPermissions;
7: invokestatic javax.crypto.JceSecurity.getExemptPolicy:()Ljavax/crypto/CryptoPermissions;
putstatic javax.crypto.JceSecurityManager.exemptPolicy:Ljavax/crypto/CryptoPermissions;
8: getstatic javax.crypto.CryptoAllPermission.INSTANCE:Ljavax/crypto/CryptoAllPermission;
putstatic javax.crypto.JceSecurityManager.allPerm:Ljavax/crypto/CryptoAllPermission;
9: new javax.crypto.JceSecurityManager$1
dup
invokespecial javax.crypto.JceSecurityManager$1.<init>:()V
10: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
checkcast javax.crypto.JceSecurityManager
putstatic javax.crypto.JceSecurityManager.INSTANCE:Ljavax/crypto/JceSecurityManager;
11: return
LocalVariableTable:
Start End Slot Name Signature
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.SecurityManager.<init>:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljavax/crypto/JceSecurityManager;
javax.crypto.CryptoPermission getCryptoPermission(java.lang.String);
descriptor: (Ljava/lang/String;)Ljavax/crypto/CryptoPermission;
flags: (0x0000)
Code:
stack=6, locals=12, args_size=2
start local 0 start local 1 0: aload 1
getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
invokevirtual java.lang.String.toUpperCase:(Ljava/util/Locale;)Ljava/lang/String;
astore 1
1: aload 0
aload 1
invokevirtual javax.crypto.JceSecurityManager.getDefaultPermission:(Ljava/lang/String;)Ljavax/crypto/CryptoPermission;
astore 2
start local 2 2: aload 2
getstatic javax.crypto.CryptoAllPermission.INSTANCE:Ljavax/crypto/CryptoAllPermission;
if_acmpne 4
3: aload 2
areturn
4: StackMap locals: javax.crypto.CryptoPermission
StackMap stack:
aload 0
invokevirtual javax.crypto.JceSecurityManager.getClassContext:()[Ljava/lang/Class;
astore 3
start local 3 5: aconst_null
astore 4
start local 4 6: iconst_0
istore 5
start local 5 7: goto 16
8: StackMap locals: java.lang.Class[] java.net.URL int
StackMap stack:
aload 3
iload 5
aaload
astore 6
start local 6 9: aload 6
invokestatic javax.crypto.JceSecurity.getCodeBase:(Ljava/lang/Class;)Ljava/net/URL;
astore 4
10: aload 4
ifnull 12
11: goto 17
12: StackMap locals: java.lang.Class
StackMap stack:
aload 6
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
ldc "javax.crypto."
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 14
13: goto 15
14: StackMap locals:
StackMap stack:
aload 2
areturn
end local 6 15: StackMap locals:
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
16: iload 5
aload 3
arraylength
if_icmplt 8
17: StackMap locals:
StackMap stack:
iload 5
aload 3
arraylength
if_icmpne 19
18: aload 2
areturn
19: StackMap locals:
StackMap stack:
getstatic javax.crypto.JceSecurityManager.exemptCache:Ljava/util/concurrent/ConcurrentMap;
aload 4
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast javax.crypto.CryptoPermissions
astore 6
start local 6 20: aload 6
ifnonnull 33
21: aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
dup
astore 7
monitorenter
22: getstatic javax.crypto.JceSecurityManager.exemptCache:Ljava/util/concurrent/ConcurrentMap;
aload 4
invokeinterface java.util.concurrent.ConcurrentMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast javax.crypto.CryptoPermissions
astore 6
23: aload 6
ifnonnull 29
24: aload 4
invokestatic javax.crypto.JceSecurityManager.getAppPermissions:(Ljava/net/URL;)Ljavax/crypto/CryptoPermissions;
astore 6
25: getstatic javax.crypto.JceSecurityManager.exemptCache:Ljava/util/concurrent/ConcurrentMap;
aload 4
26: aload 6
ifnonnull 27
getstatic javax.crypto.JceSecurityManager.CACHE_NULL_MARK:Ljavax/crypto/CryptoPermissions;
goto 28
StackMap locals: javax.crypto.JceSecurityManager java.lang.String javax.crypto.CryptoPermission java.lang.Class[] java.net.URL int javax.crypto.CryptoPermissions java.lang.Class
StackMap stack: java.util.concurrent.ConcurrentMap java.net.URL
27: aload 6
28: StackMap locals: javax.crypto.JceSecurityManager java.lang.String javax.crypto.CryptoPermission java.lang.Class[] java.net.URL int javax.crypto.CryptoPermissions java.lang.Class
StackMap stack: java.util.concurrent.ConcurrentMap java.net.URL javax.crypto.CryptoPermissions
invokeinterface java.util.concurrent.ConcurrentMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
29: StackMap locals:
StackMap stack:
aload 7
monitorexit
30: goto 33
StackMap locals:
StackMap stack: java.lang.Throwable
31: aload 7
monitorexit
32: athrow
33: StackMap locals:
StackMap stack:
aload 6
ifnull 34
aload 6
getstatic javax.crypto.JceSecurityManager.CACHE_NULL_MARK:Ljavax/crypto/CryptoPermissions;
if_acmpne 35
34: StackMap locals:
StackMap stack:
aload 2
areturn
35: StackMap locals:
StackMap stack:
aload 6
getstatic javax.crypto.JceSecurityManager.allPerm:Ljavax/crypto/CryptoAllPermission;
invokevirtual javax.crypto.CryptoPermissions.implies:(Ljava/security/Permission;)Z
ifeq 37
36: getstatic javax.crypto.JceSecurityManager.allPerm:Ljavax/crypto/CryptoAllPermission;
areturn
37: StackMap locals:
StackMap stack:
aload 6
aload 1
invokevirtual javax.crypto.CryptoPermissions.getPermissionCollection:(Ljava/lang/String;)Ljava/security/PermissionCollection;
astore 7
start local 7 38: aload 7
ifnonnull 40
39: aload 2
areturn
40: StackMap locals: java.security.PermissionCollection
StackMap stack:
aload 7
invokevirtual java.security.PermissionCollection.elements:()Ljava/util/Enumeration;
astore 8
start local 8 41: goto 45
42: StackMap locals: java.util.Enumeration
StackMap stack:
aload 8
invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
checkcast javax.crypto.CryptoPermission
astore 9
start local 9 43: aload 9
invokevirtual javax.crypto.CryptoPermission.getExemptionMechanism:()Ljava/lang/String;
ifnonnull 45
44: aload 9
areturn
end local 9 45: StackMap locals:
StackMap stack:
aload 8
invokeinterface java.util.Enumeration.hasMoreElements:()Z
ifne 42
46: getstatic javax.crypto.JceSecurityManager.exemptPolicy:Ljavax/crypto/CryptoPermissions;
aload 1
invokevirtual javax.crypto.CryptoPermissions.getPermissionCollection:(Ljava/lang/String;)Ljava/security/PermissionCollection;
47: astore 9
start local 9 48: aload 9
ifnonnull 50
49: aload 2
areturn
50: StackMap locals: java.security.PermissionCollection
StackMap stack:
aload 9
invokevirtual java.security.PermissionCollection.elements:()Ljava/util/Enumeration;
astore 8
51: goto 76
52: StackMap locals:
StackMap stack:
aload 8
invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
checkcast javax.crypto.CryptoPermission
astore 10
start local 10 53: aload 10
invokevirtual javax.crypto.CryptoPermission.getExemptionMechanism:()Ljava/lang/String;
invokestatic javax.crypto.ExemptionMechanism.getInstance:(Ljava/lang/String;)Ljavax/crypto/ExemptionMechanism;
pop
54: aload 10
invokevirtual javax.crypto.CryptoPermission.getAlgorithm:()Ljava/lang/String;
55: ldc "*"
56: invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
57: ifeq 72
58: aload 10
invokevirtual javax.crypto.CryptoPermission.getCheckParam:()Z
ifeq 65
59: new javax.crypto.CryptoPermission
dup
60: aload 1
aload 10
invokevirtual javax.crypto.CryptoPermission.getMaxKeySize:()I
61: aload 10
invokevirtual javax.crypto.CryptoPermission.getAlgorithmParameterSpec:()Ljava/security/spec/AlgorithmParameterSpec;
62: aload 10
invokevirtual javax.crypto.CryptoPermission.getExemptionMechanism:()Ljava/lang/String;
63: invokespecial javax.crypto.CryptoPermission.<init>:(Ljava/lang/String;ILjava/security/spec/AlgorithmParameterSpec;Ljava/lang/String;)V
astore 11
start local 11 64: goto 69
end local 11 65: StackMap locals: javax.crypto.CryptoPermission
StackMap stack:
new javax.crypto.CryptoPermission
dup
66: aload 1
aload 10
invokevirtual javax.crypto.CryptoPermission.getMaxKeySize:()I
67: aload 10
invokevirtual javax.crypto.CryptoPermission.getExemptionMechanism:()Ljava/lang/String;
68: invokespecial javax.crypto.CryptoPermission.<init>:(Ljava/lang/String;ILjava/lang/String;)V
astore 11
start local 11 69: StackMap locals: javax.crypto.CryptoPermission
StackMap stack:
aload 6
aload 11
invokevirtual javax.crypto.CryptoPermissions.implies:(Ljava/security/Permission;)Z
ifeq 72
70: aload 11
71: areturn
end local 11 72: StackMap locals:
StackMap stack:
aload 6
aload 10
invokevirtual javax.crypto.CryptoPermissions.implies:(Ljava/security/Permission;)Z
ifeq 76
73: aload 10
74: areturn
75: StackMap locals:
StackMap stack: java.lang.Exception
pop
end local 10 76: StackMap locals:
StackMap stack:
aload 8
invokeinterface java.util.Enumeration.hasMoreElements:()Z
ifne 52
77: aload 2
areturn
end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 78 0 this Ljavax/crypto/JceSecurityManager;
0 78 1 alg Ljava/lang/String;
2 78 2 defaultPerm Ljavax/crypto/CryptoPermission;
5 78 3 context [Ljava/lang/Class;
6 78 4 callerCodeBase Ljava/net/URL;
7 78 5 i I
9 15 6 cls Ljava/lang/Class<*>;
20 78 6 appPerms Ljavax/crypto/CryptoPermissions;
38 78 7 appPc Ljava/security/PermissionCollection;
41 78 8 enum_ Ljava/util/Enumeration<Ljava/security/Permission;>;
43 45 9 cp Ljavax/crypto/CryptoPermission;
48 78 9 exemptPc Ljava/security/PermissionCollection;
53 76 10 cp Ljavax/crypto/CryptoPermission;
64 65 11 newCp Ljavax/crypto/CryptoPermission;
69 72 11 newCp Ljavax/crypto/CryptoPermission;
Exception table:
from to target type
22 30 31 any
31 32 31 any
53 71 75 Class java.lang.Exception
72 74 75 Class java.lang.Exception
MethodParameters:
Name Flags
alg
private static javax.crypto.CryptoPermissions getAppPermissions(java.net.URL);
descriptor: (Ljava/net/URL;)Ljavax/crypto/CryptoPermissions;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokestatic javax.crypto.JceSecurity.verifyExemptJar:(Ljava/net/URL;)Ljavax/crypto/CryptoPermissions;
1: areturn
2: StackMap locals:
StackMap stack: java.lang.Exception
pop
3: aconst_null
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 callerCodeBase Ljava/net/URL;
Exception table:
from to target type
0 1 2 Class java.lang.Exception
MethodParameters:
Name Flags
callerCodeBase
private javax.crypto.CryptoPermission getDefaultPermission(java.lang.String);
descriptor: (Ljava/lang/String;)Ljavax/crypto/CryptoPermission;
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=2
start local 0 start local 1 0: getstatic javax.crypto.JceSecurityManager.defaultPolicy:Ljavax/crypto/CryptoPermissions;
aload 1
invokevirtual javax.crypto.CryptoPermissions.getPermissionCollection:(Ljava/lang/String;)Ljava/security/PermissionCollection;
invokevirtual java.security.PermissionCollection.elements:()Ljava/util/Enumeration;
1: astore 2
start local 2 2: aload 2
invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
checkcast javax.crypto.CryptoPermission
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Ljavax/crypto/JceSecurityManager;
0 3 1 alg Ljava/lang/String;
2 3 2 enum_ Ljava/util/Enumeration<Ljava/security/Permission;>;
MethodParameters:
Name Flags
alg
boolean isCallerTrusted();
descriptor: ()Z
flags: (0x0000)
Code:
stack=3, locals=4, args_size=1
start local 0 0: aload 0
invokevirtual javax.crypto.JceSecurityManager.getClassContext:()[Ljava/lang/Class;
astore 1
start local 1 1: aconst_null
astore 2
start local 2 2: iconst_0
istore 3
start local 3 3: goto 8
4: StackMap locals: java.lang.Class[] java.net.URL int
StackMap stack:
aload 1
iload 3
aaload
invokestatic javax.crypto.JceSecurity.getCodeBase:(Ljava/lang/Class;)Ljava/net/URL;
astore 2
5: aload 2
ifnull 7
6: goto 9
7: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
8: iload 3
aload 1
arraylength
if_icmplt 4
9: StackMap locals:
StackMap stack:
iload 3
aload 1
arraylength
if_icmpne 11
10: iconst_1
ireturn
11: StackMap locals:
StackMap stack:
getstatic javax.crypto.JceSecurityManager.TrustedCallersCache:Ljava/util/Vector;
aload 1
iload 3
aaload
invokevirtual java.util.Vector.contains:(Ljava/lang/Object;)Z
ifeq 13
12: iconst_1
ireturn
13: StackMap locals:
StackMap stack:
aload 2
invokestatic javax.crypto.JceSecurity.verifyProviderJar:(Ljava/net/URL;)V
14: goto 17
StackMap locals:
StackMap stack: java.lang.Exception
15: pop
16: iconst_0
ireturn
17: StackMap locals:
StackMap stack:
getstatic javax.crypto.JceSecurityManager.TrustedCallersCache:Ljava/util/Vector;
aload 1
iload 3
aaload
invokevirtual java.util.Vector.addElement:(Ljava/lang/Object;)V
18: iconst_1
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Ljavax/crypto/JceSecurityManager;
1 19 1 context [Ljava/lang/Class;
2 19 2 callerCodeBase Ljava/net/URL;
3 19 3 i I
Exception table:
from to target type
13 14 15 Class java.lang.Exception
}
SourceFile: "JceSecurityManager.java"
NestMembers:
javax.crypto.JceSecurityManager$1
InnerClasses:
javax.crypto.JceSecurityManager$1