final class javax.crypto.JceSecurity
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: javax.crypto.JceSecurity
super_class: java.lang.Object
{
static final java.security.SecureRandom RANDOM;
descriptor: Ljava/security/SecureRandom;
flags: (0x0018) ACC_STATIC, ACC_FINAL
private static javax.crypto.CryptoPermissions defaultPolicy;
descriptor: Ljavax/crypto/CryptoPermissions;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static javax.crypto.CryptoPermissions exemptPolicy;
descriptor: Ljavax/crypto/CryptoPermissions;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
private static final java.util.Map<java.security.Provider, java.lang.Object> verificationResults;
descriptor: Ljava/util/Map;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/Map<Ljava/security/Provider;Ljava/lang/Object;>;
private static final java.util.Map<java.security.Provider, java.lang.Object> verifyingProviders;
descriptor: Ljava/util/Map;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/Map<Ljava/security/Provider;Ljava/lang/Object;>;
private static final boolean isRestricted;
descriptor: Z
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final sun.security.util.Debug debug;
descriptor: Lsun/security/util/Debug;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.lang.Object PROVIDER_VERIFIED;
descriptor: Ljava/lang/Object;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.net.URL NULL_URL;
descriptor: Ljava/net/URL;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.util.Map<java.lang.Class<?>, java.net.URL> codeBaseCacheRef;
descriptor: Ljava/util/Map;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/Map<Ljava/lang/Class<*>;Ljava/net/URL;>;
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=1, args_size=0
0: new java.security.SecureRandom
dup
invokespecial java.security.SecureRandom.<init>:()V
putstatic javax.crypto.JceSecurity.RANDOM:Ljava/security/SecureRandom;
1: aconst_null
putstatic javax.crypto.JceSecurity.defaultPolicy:Ljavax/crypto/CryptoPermissions;
2: aconst_null
putstatic javax.crypto.JceSecurity.exemptPolicy:Ljavax/crypto/CryptoPermissions;
3: new java.util.IdentityHashMap
dup
invokespecial java.util.IdentityHashMap.<init>:()V
4: putstatic javax.crypto.JceSecurity.verificationResults:Ljava/util/Map;
5: new java.util.IdentityHashMap
dup
invokespecial java.util.IdentityHashMap.<init>:()V
6: putstatic javax.crypto.JceSecurity.verifyingProviders:Ljava/util/Map;
7: ldc "jca"
ldc "Cipher"
invokestatic sun.security.util.Debug.getInstance:(Ljava/lang/String;Ljava/lang/String;)Lsun/security/util/Debug;
8: putstatic javax.crypto.JceSecurity.debug:Lsun/security/util/Debug;
9: new javax.crypto.JceSecurity$1
dup
invokespecial javax.crypto.JceSecurity$1.<init>:()V
10: invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
pop
11: getstatic javax.crypto.JceSecurity.defaultPolicy:Ljavax/crypto/CryptoPermissions;
12: getstatic javax.crypto.CryptoAllPermission.INSTANCE:Ljavax/crypto/CryptoAllPermission;
13: invokevirtual javax.crypto.CryptoPermissions.implies:(Ljava/security/Permission;)Z
14: ifeq 15
iconst_0
goto 16
StackMap locals:
StackMap stack:
15: iconst_1
16: StackMap locals:
StackMap stack: int
putstatic javax.crypto.JceSecurity.isRestricted:Z
17: goto 22
StackMap locals:
StackMap stack: java.lang.Exception
18: astore 0
start local 0 19: new java.lang.SecurityException
dup
20: ldc "Can not initialize cryptographic mechanism"
aload 0
21: invokespecial java.lang.SecurityException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 0 22: StackMap locals:
StackMap stack:
getstatic java.lang.Boolean.TRUE:Ljava/lang/Boolean;
putstatic javax.crypto.JceSecurity.PROVIDER_VERIFIED:Ljava/lang/Object;
23: new java.net.URL
dup
ldc "http://null.oracle.com/"
invokespecial java.net.URL.<init>:(Ljava/lang/String;)V
putstatic javax.crypto.JceSecurity.NULL_URL:Ljava/net/URL;
24: goto 27
StackMap locals:
StackMap stack: java.lang.Exception
25: astore 0
start local 0 26: new java.lang.RuntimeException
dup
aload 0
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 0 27: StackMap locals:
StackMap stack:
new java.util.WeakHashMap
dup
invokespecial java.util.WeakHashMap.<init>:()V
28: putstatic javax.crypto.JceSecurity.codeBaseCacheRef:Ljava/util/Map;
29: return
LocalVariableTable:
Start End Slot Name Signature
19 22 0 e Ljava/lang/Exception;
26 27 0 e Ljava/lang/Exception;
Exception table:
from to target type
9 17 18 Class java.lang.Exception
23 24 25 Class java.lang.Exception
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.Object.<init>:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Ljavax/crypto/JceSecurity;
static sun.security.jca.GetInstance$Instance getInstance(java.lang.String, java.lang.Class<?>, java.lang.String, java.lang.String);
descriptor: (Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)Lsun/security/jca/GetInstance$Instance;
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 2
aload 3
invokestatic sun.security.jca.GetInstance.getService:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/security/Provider$Service;
astore 4
start local 4 1: aload 4
invokevirtual java.security.Provider$Service.getProvider:()Ljava/security/Provider;
invokestatic javax.crypto.JceSecurity.getVerificationResult:(Ljava/security/Provider;)Ljava/lang/Exception;
astore 5
start local 5 2: aload 5
ifnull 6
3: new java.lang.StringBuilder
dup
ldc "JCE cannot authenticate the provider "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 3
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 6
start local 6 4: new java.security.NoSuchProviderException
dup
aload 6
invokespecial java.security.NoSuchProviderException.<init>:(Ljava/lang/String;)V
aload 5
invokevirtual java.security.NoSuchProviderException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
5: checkcast java.security.NoSuchProviderException
athrow
end local 6 6: StackMap locals: java.security.Provider$Service java.lang.Exception
StackMap stack:
aload 4
aload 1
invokestatic sun.security.jca.GetInstance.getInstance:(Ljava/security/Provider$Service;Ljava/lang/Class;)Lsun/security/jca/GetInstance$Instance;
areturn
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 7 0 type Ljava/lang/String;
0 7 1 clazz Ljava/lang/Class<*>;
0 7 2 algorithm Ljava/lang/String;
0 7 3 provider Ljava/lang/String;
1 7 4 s Ljava/security/Provider$Service;
2 7 5 ve Ljava/lang/Exception;
4 6 6 msg Ljava/lang/String;
Exceptions:
throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException
Signature: (Ljava/lang/String;Ljava/lang/Class<*>;Ljava/lang/String;Ljava/lang/String;)Lsun/security/jca/GetInstance$Instance;
MethodParameters:
Name Flags
type
clazz
algorithm
provider
static sun.security.jca.GetInstance$Instance getInstance(java.lang.String, java.lang.Class<?>, java.lang.String, java.security.Provider);
descriptor: (Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/security/Provider;)Lsun/security/jca/GetInstance$Instance;
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 2
aload 3
invokestatic sun.security.jca.GetInstance.getService:(Ljava/lang/String;Ljava/lang/String;Ljava/security/Provider;)Ljava/security/Provider$Service;
astore 4
start local 4 1: aload 3
invokestatic javax.crypto.JceSecurity.getVerificationResult:(Ljava/security/Provider;)Ljava/lang/Exception;
astore 5
start local 5 2: aload 5
ifnull 7
3: new java.lang.StringBuilder
dup
ldc "JCE cannot authenticate the provider "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
4: aload 3
invokevirtual java.security.Provider.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
5: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
astore 6
start local 6 6: new java.lang.SecurityException
dup
aload 6
aload 5
invokespecial java.lang.SecurityException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 6 7: StackMap locals: java.security.Provider$Service java.lang.Exception
StackMap stack:
aload 4
aload 1
invokestatic sun.security.jca.GetInstance.getInstance:(Ljava/security/Provider$Service;Ljava/lang/Class;)Lsun/security/jca/GetInstance$Instance;
areturn
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 8 0 type Ljava/lang/String;
0 8 1 clazz Ljava/lang/Class<*>;
0 8 2 algorithm Ljava/lang/String;
0 8 3 provider Ljava/security/Provider;
1 8 4 s Ljava/security/Provider$Service;
2 8 5 ve Ljava/lang/Exception;
6 7 6 msg Ljava/lang/String;
Exceptions:
throws java.security.NoSuchAlgorithmException
Signature: (Ljava/lang/String;Ljava/lang/Class<*>;Ljava/lang/String;Ljava/security/Provider;)Lsun/security/jca/GetInstance$Instance;
MethodParameters:
Name Flags
type
clazz
algorithm
provider
static sun.security.jca.GetInstance$Instance getInstance(java.lang.String, java.lang.Class<?>, java.lang.String);
descriptor: (Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;)Lsun/security/jca/GetInstance$Instance;
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=8, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 2
invokestatic sun.security.jca.GetInstance.getServices:(Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
astore 3
start local 3 1: aconst_null
astore 4
start local 4 2: aload 3
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 6
goto 11
StackMap locals: java.lang.String java.lang.Class java.lang.String java.util.List java.security.NoSuchAlgorithmException top java.util.Iterator
StackMap stack:
3: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.security.Provider$Service
astore 5
start local 5 4: aload 5
invokevirtual java.security.Provider$Service.getProvider:()Ljava/security/Provider;
invokestatic javax.crypto.JceSecurity.canUseProvider:(Ljava/security/Provider;)Z
ifne 6
5: goto 11
6: StackMap locals: java.lang.String java.lang.Class java.lang.String java.util.List java.security.NoSuchAlgorithmException java.security.Provider$Service java.util.Iterator
StackMap stack:
aload 5
aload 1
invokestatic sun.security.jca.GetInstance.getInstance:(Ljava/security/Provider$Service;Ljava/lang/Class;)Lsun/security/jca/GetInstance$Instance;
astore 7
start local 7 7: aload 7
8: areturn
end local 7 9: StackMap locals:
StackMap stack: java.security.NoSuchAlgorithmException
astore 7
start local 7 10: aload 7
astore 4
end local 7 end local 5 11: StackMap locals: java.lang.String java.lang.Class java.lang.String java.util.List java.security.NoSuchAlgorithmException top java.util.Iterator
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
12: new java.security.NoSuchAlgorithmException
dup
new java.lang.StringBuilder
dup
ldc "Algorithm "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
13: ldc " not available"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 4
14: invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 type Ljava/lang/String;
0 15 1 clazz Ljava/lang/Class<*>;
0 15 2 algorithm Ljava/lang/String;
1 15 3 services Ljava/util/List<Ljava/security/Provider$Service;>;
2 15 4 failure Ljava/security/NoSuchAlgorithmException;
4 11 5 s Ljava/security/Provider$Service;
7 9 7 instance Lsun/security/jca/GetInstance$Instance;
10 11 7 e Ljava/security/NoSuchAlgorithmException;
Exception table:
from to target type
6 8 9 Class java.security.NoSuchAlgorithmException
Exceptions:
throws java.security.NoSuchAlgorithmException
Signature: (Ljava/lang/String;Ljava/lang/Class<*>;Ljava/lang/String;)Lsun/security/jca/GetInstance$Instance;
MethodParameters:
Name Flags
type
clazz
algorithm
static javax.crypto.CryptoPermissions verifyExemptJar(java.net.URL);
descriptor: (Ljava/net/URL;)Ljavax/crypto/CryptoPermissions;
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=2, args_size=1
start local 0 0: new javax.crypto.JarVerifier
dup
aload 0
iconst_1
invokespecial javax.crypto.JarVerifier.<init>:(Ljava/net/URL;Z)V
astore 1
start local 1 1: aload 1
invokevirtual javax.crypto.JarVerifier.verify:()V
2: aload 1
invokevirtual javax.crypto.JarVerifier.getPermissions:()Ljavax/crypto/CryptoPermissions;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 codeBase Ljava/net/URL;
1 3 1 jv Ljavax/crypto/JarVerifier;
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
codeBase
static void verifyProviderJar(java.net.URL);
descriptor: (Ljava/net/URL;)V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=2, args_size=1
start local 0 0: new javax.crypto.JarVerifier
dup
aload 0
iconst_0
invokespecial javax.crypto.JarVerifier.<init>:(Ljava/net/URL;Z)V
astore 1
start local 1 1: aload 1
invokevirtual javax.crypto.JarVerifier.verify:()V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 codeBase Ljava/net/URL;
1 3 1 jv Ljavax/crypto/JarVerifier;
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
codeBase
static synchronized java.lang.Exception getVerificationResult(java.security.Provider);
descriptor: (Ljava/security/Provider;)Ljava/lang/Exception;
flags: (0x0028) ACC_STATIC, ACC_SYNCHRONIZED
Code:
stack=3, locals=5, args_size=1
start local 0 0: getstatic javax.crypto.JceSecurity.verificationResults:Ljava/util/Map;
aload 0
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
astore 1
start local 1 1: aload 1
getstatic javax.crypto.JceSecurity.PROVIDER_VERIFIED:Ljava/lang/Object;
if_acmpne 3
2: aconst_null
areturn
3: StackMap locals: java.lang.Object
StackMap stack:
aload 1
ifnull 5
4: aload 1
checkcast java.lang.Exception
areturn
5: StackMap locals:
StackMap stack:
getstatic javax.crypto.JceSecurity.verifyingProviders:Ljava/util/Map;
aload 0
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
ifnull 7
6: new java.security.NoSuchProviderException
dup
ldc "Recursion during verification"
invokespecial java.security.NoSuchProviderException.<init>:(Ljava/lang/String;)V
areturn
7: StackMap locals:
StackMap stack:
getstatic javax.crypto.JceSecurity.verifyingProviders:Ljava/util/Map;
aload 0
getstatic java.lang.Boolean.FALSE:Ljava/lang/Boolean;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
8: aload 0
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokestatic javax.crypto.JceSecurity.getCodeBase:(Ljava/lang/Class;)Ljava/net/URL;
astore 2
start local 2 9: aload 2
invokestatic javax.crypto.JceSecurity.verifyProviderJar:(Ljava/net/URL;)V
10: getstatic javax.crypto.JceSecurity.verificationResults:Ljava/util/Map;
aload 0
getstatic javax.crypto.JceSecurity.PROVIDER_VERIFIED:Ljava/lang/Object;
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
11: getstatic javax.crypto.JceSecurity.verifyingProviders:Ljava/util/Map;
aload 0
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
12: aconst_null
areturn
end local 2 13: StackMap locals:
StackMap stack: java.lang.Exception
astore 2
start local 2 14: getstatic javax.crypto.JceSecurity.verificationResults:Ljava/util/Map;
aload 0
aload 2
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
15: aload 2
astore 4
16: getstatic javax.crypto.JceSecurity.verifyingProviders:Ljava/util/Map;
aload 0
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
17: aload 4
areturn
end local 2 18: StackMap locals:
StackMap stack: java.lang.Throwable
astore 3
19: getstatic javax.crypto.JceSecurity.verifyingProviders:Ljava/util/Map;
aload 0
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
20: aload 3
athrow
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 p Ljava/security/Provider;
1 21 1 o Ljava/lang/Object;
9 13 2 providerURL Ljava/net/URL;
14 18 2 e Ljava/lang/Exception;
Exception table:
from to target type
7 11 13 Class java.lang.Exception
7 11 18 any
13 16 18 any
MethodParameters:
Name Flags
p
static boolean canUseProvider(java.security.Provider);
descriptor: (Ljava/security/Provider;)Z
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokestatic javax.crypto.JceSecurity.getVerificationResult:(Ljava/security/Provider;)Ljava/lang/Exception;
ifnonnull 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 p Ljava/security/Provider;
MethodParameters:
Name Flags
p
static java.net.URL getCodeBase(java.lang.Class<?>);
descriptor: (Ljava/lang/Class;)Ljava/net/URL;
flags: (0x0008) ACC_STATIC
Code:
stack=3, locals=3, args_size=1
start local 0 0: getstatic javax.crypto.JceSecurity.codeBaseCacheRef:Ljava/util/Map;
dup
astore 1
monitorenter
1: getstatic javax.crypto.JceSecurity.codeBaseCacheRef:Ljava/util/Map;
aload 0
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.net.URL
astore 2
start local 2 2: aload 2
ifnonnull 5
3: new javax.crypto.JceSecurity$2
dup
aload 0
invokespecial javax.crypto.JceSecurity$2.<init>:(Ljava/lang/Class;)V
invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
checkcast java.net.URL
astore 2
4: getstatic javax.crypto.JceSecurity.codeBaseCacheRef:Ljava/util/Map;
aload 0
aload 2
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
5: StackMap locals: java.util.Map java.net.URL
StackMap stack:
aload 2
getstatic javax.crypto.JceSecurity.NULL_URL:Ljava/net/URL;
if_acmpne 6
aconst_null
goto 7
StackMap locals:
StackMap stack:
6: aload 2
StackMap locals:
StackMap stack: java.net.URL
7: aload 1
monitorexit
8: areturn
end local 2 9: StackMap locals: java.lang.Class java.util.Map
StackMap stack: java.lang.Throwable
aload 1
monitorexit
10: athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 clazz Ljava/lang/Class<*>;
2 9 2 url Ljava/net/URL;
Exception table:
from to target type
1 8 9 any
9 10 9 any
Signature: (Ljava/lang/Class<*>;)Ljava/net/URL;
MethodParameters:
Name Flags
clazz final
private static void setupJurisdictionPolicies();
descriptor: ()V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=10, args_size=0
0: ldc "java.home"
invokestatic java.lang.System.getProperty:(Ljava/lang/String;)Ljava/lang/String;
astore 0
start local 0 1: ldc "crypto.policy"
invokestatic java.security.Security.getProperty:(Ljava/lang/String;)Ljava/lang/String;
astore 1
start local 1 2: aload 1
ifnonnull 3
aconst_null
goto 4
3: StackMap locals: java.lang.String java.lang.String
StackMap stack:
aload 1
iconst_0
anewarray java.lang.String
invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
4: StackMap locals:
StackMap stack: java.nio.file.Path
astore 2
start local 2 5: aload 2
ifnull 12
aload 2
invokeinterface java.nio.file.Path.getNameCount:()I
iconst_1
if_icmpne 7
6: aload 2
aload 2
invokeinterface java.nio.file.Path.getFileName:()Ljava/nio/file/Path;
invokeinterface java.nio.file.Path.compareTo:(Ljava/nio/file/Path;)I
ifeq 12
7: StackMap locals: java.nio.file.Path
StackMap stack:
new java.lang.SecurityException
dup
8: new java.lang.StringBuilder
dup
ldc "Invalid policy directory name format: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
9: aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
10: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
11: invokespecial java.lang.SecurityException.<init>:(Ljava/lang/String;)V
athrow
12: StackMap locals:
StackMap stack:
aload 2
ifnonnull 15
13: aload 0
iconst_2
anewarray java.lang.String
dup
iconst_0
ldc "lib"
aastore
dup
iconst_1
ldc "security"
aastore
invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
astore 2
14: goto 18
15: StackMap locals:
StackMap stack:
aload 0
iconst_4
anewarray java.lang.String
dup
iconst_0
ldc "lib"
aastore
dup
iconst_1
ldc "security"
aastore
dup
iconst_2
16: ldc "policy"
aastore
dup
iconst_3
aload 1
aastore
17: invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
astore 2
18: StackMap locals:
StackMap stack:
getstatic javax.crypto.JceSecurity.debug:Lsun/security/util/Debug;
ifnull 20
19: getstatic javax.crypto.JceSecurity.debug:Lsun/security/util/Debug;
new java.lang.StringBuilder
dup
ldc "crypto policy directory: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokevirtual sun.security.util.Debug.println:(Ljava/lang/String;)V
20: StackMap locals:
StackMap stack:
new java.io.File
dup
aload 2
invokeinterface java.nio.file.Path.toFile:()Ljava/io/File;
ldc "US_export_policy.jar"
invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
astore 3
start local 3 21: new java.io.File
dup
aload 2
invokeinterface java.nio.file.Path.toFile:()Ljava/io/File;
ldc "local_policy.jar"
invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
astore 4
start local 4 22: aload 1
ifnonnull 28
aload 3
invokevirtual java.io.File.exists:()Z
ifeq 24
23: aload 4
invokevirtual java.io.File.exists:()Z
ifne 28
24: StackMap locals: java.io.File java.io.File
StackMap stack:
aload 0
iconst_4
anewarray java.lang.String
dup
iconst_0
ldc "lib"
aastore
dup
iconst_1
ldc "security"
aastore
dup
iconst_2
ldc "policy"
aastore
dup
iconst_3
ldc "unlimited"
aastore
25: invokestatic java.nio.file.Paths.get:(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
astore 2
26: new java.io.File
dup
aload 2
invokeinterface java.nio.file.Path.toFile:()Ljava/io/File;
ldc "US_export_policy.jar"
invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
astore 3
27: new java.io.File
dup
aload 2
invokeinterface java.nio.file.Path.toFile:()Ljava/io/File;
ldc "local_policy.jar"
invokespecial java.io.File.<init>:(Ljava/io/File;Ljava/lang/String;)V
astore 4
28: StackMap locals:
StackMap stack:
ldc "javax/crypto/Cipher.class"
29: invokestatic java.lang.ClassLoader.getSystemResource:(Ljava/lang/String;)Ljava/net/URL;
astore 5
start local 5 30: aload 5
ifnull 32
31: aload 3
invokevirtual java.io.File.exists:()Z
ifeq 32
aload 4
invokevirtual java.io.File.exists:()Z
ifne 35
32: StackMap locals: java.net.URL
StackMap stack:
new java.lang.SecurityException
dup
33: ldc "Cannot locate policy or framework files!"
34: invokespecial java.lang.SecurityException.<init>:(Ljava/lang/String;)V
athrow
35: StackMap locals:
StackMap stack:
new javax.crypto.CryptoPermissions
dup
invokespecial javax.crypto.CryptoPermissions.<init>:()V
astore 6
start local 6 36: new javax.crypto.CryptoPermissions
dup
invokespecial javax.crypto.CryptoPermissions.<init>:()V
astore 7
start local 7 37: aload 3
aload 6
aload 7
invokestatic javax.crypto.JceSecurity.loadPolicies:(Ljava/io/File;Ljavax/crypto/CryptoPermissions;Ljavax/crypto/CryptoPermissions;)V
38: new javax.crypto.CryptoPermissions
dup
invokespecial javax.crypto.CryptoPermissions.<init>:()V
astore 8
start local 8 39: new javax.crypto.CryptoPermissions
dup
invokespecial javax.crypto.CryptoPermissions.<init>:()V
astore 9
start local 9 40: aload 4
aload 8
aload 9
invokestatic javax.crypto.JceSecurity.loadPolicies:(Ljava/io/File;Ljavax/crypto/CryptoPermissions;Ljavax/crypto/CryptoPermissions;)V
41: aload 6
invokevirtual javax.crypto.CryptoPermissions.isEmpty:()Z
ifne 42
aload 8
invokevirtual javax.crypto.CryptoPermissions.isEmpty:()Z
ifeq 43
42: StackMap locals: java.lang.String java.lang.String java.nio.file.Path java.io.File java.io.File java.net.URL javax.crypto.CryptoPermissions javax.crypto.CryptoPermissions javax.crypto.CryptoPermissions javax.crypto.CryptoPermissions
StackMap stack:
new java.lang.SecurityException
dup
ldc "Missing mandatory jurisdiction policy files"
invokespecial java.lang.SecurityException.<init>:(Ljava/lang/String;)V
athrow
43: StackMap locals:
StackMap stack:
aload 6
aload 8
invokevirtual javax.crypto.CryptoPermissions.getMinimum:(Ljavax/crypto/CryptoPermissions;)Ljavax/crypto/CryptoPermissions;
putstatic javax.crypto.JceSecurity.defaultPolicy:Ljavax/crypto/CryptoPermissions;
44: aload 7
invokevirtual javax.crypto.CryptoPermissions.isEmpty:()Z
ifeq 49
45: aload 9
invokevirtual javax.crypto.CryptoPermissions.isEmpty:()Z
ifeq 46
aconst_null
goto 47
StackMap locals:
StackMap stack:
46: aload 9
StackMap locals:
StackMap stack: javax.crypto.CryptoPermissions
47: putstatic javax.crypto.JceSecurity.exemptPolicy:Ljavax/crypto/CryptoPermissions;
48: goto 50
49: StackMap locals:
StackMap stack:
aload 7
aload 9
invokevirtual javax.crypto.CryptoPermissions.getMinimum:(Ljavax/crypto/CryptoPermissions;)Ljavax/crypto/CryptoPermissions;
putstatic javax.crypto.JceSecurity.exemptPolicy:Ljavax/crypto/CryptoPermissions;
50: StackMap locals:
StackMap stack:
return
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
1 51 0 javaHomeProperty Ljava/lang/String;
2 51 1 cryptoPolicyProperty Ljava/lang/String;
5 51 2 cpPath Ljava/nio/file/Path;
21 51 3 exportJar Ljava/io/File;
22 51 4 importJar Ljava/io/File;
30 51 5 jceCipherURL Ljava/net/URL;
36 51 6 defaultExport Ljavax/crypto/CryptoPermissions;
37 51 7 exemptExport Ljavax/crypto/CryptoPermissions;
39 51 8 defaultImport Ljavax/crypto/CryptoPermissions;
40 51 9 exemptImport Ljavax/crypto/CryptoPermissions;
Exceptions:
throws java.lang.Exception
private static void loadPolicies(java.io.File, javax.crypto.CryptoPermissions, javax.crypto.CryptoPermissions);
descriptor: (Ljava/io/File;Ljavax/crypto/CryptoPermissions;Ljavax/crypto/CryptoPermissions;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=8, args_size=3
start local 0 start local 1 start local 2 0: new java.util.jar.JarFile
dup
aload 0
invokespecial java.util.jar.JarFile.<init>:(Ljava/io/File;)V
astore 3
start local 3 1: aload 3
invokevirtual java.util.jar.JarFile.entries:()Ljava/util/Enumeration;
astore 4
start local 4 2: goto 23
3: StackMap locals: java.util.jar.JarFile java.util.Enumeration
StackMap stack:
aload 4
invokeinterface java.util.Enumeration.nextElement:()Ljava/lang/Object;
checkcast java.util.jar.JarEntry
astore 5
start local 5 4: aconst_null
astore 6
start local 6 5: aload 5
invokevirtual java.util.jar.JarEntry.getName:()Ljava/lang/String;
ldc "default_"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 9
6: aload 3
aload 5
invokevirtual java.util.jar.JarFile.getInputStream:(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;
astore 6
7: aload 1
aload 6
invokevirtual javax.crypto.CryptoPermissions.load:(Ljava/io/InputStream;)V
8: goto 20
StackMap locals: java.util.jar.JarEntry java.io.InputStream
StackMap stack:
9: aload 5
invokevirtual java.util.jar.JarEntry.getName:()Ljava/lang/String;
ldc "exempt_"
invokevirtual java.lang.String.startsWith:(Ljava/lang/String;)Z
ifeq 13
10: aload 3
aload 5
invokevirtual java.util.jar.JarFile.getInputStream:(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;
astore 6
11: aload 2
aload 6
invokevirtual javax.crypto.CryptoPermissions.load:(Ljava/io/InputStream;)V
12: goto 20
13: StackMap locals:
StackMap stack:
aload 6
ifnull 23
14: aload 6
invokevirtual java.io.InputStream.close:()V
15: goto 23
16: StackMap locals:
StackMap stack: java.lang.Throwable
astore 7
17: aload 6
ifnull 19
18: aload 6
invokevirtual java.io.InputStream.close:()V
19: StackMap locals: java.lang.Throwable
StackMap stack:
aload 7
athrow
20: StackMap locals:
StackMap stack:
aload 6
ifnull 22
21: aload 6
invokevirtual java.io.InputStream.close:()V
22: StackMap locals:
StackMap stack:
aload 5
invokevirtual java.util.jar.JarEntry.getCertificates:()[Ljava/security/cert/Certificate;
invokestatic javax.crypto.JarVerifier.verifyPolicySigned:([Ljava/security/cert/Certificate;)V
end local 6 end local 5 23: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Enumeration.hasMoreElements:()Z
ifne 3
24: aload 3
invokevirtual java.util.jar.JarFile.close:()V
25: aconst_null
astore 3
26: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 jarPathName Ljava/io/File;
0 27 1 defaultPolicy Ljavax/crypto/CryptoPermissions;
0 27 2 exemptPolicy Ljavax/crypto/CryptoPermissions;
1 27 3 jf Ljava/util/jar/JarFile;
2 27 4 entries Ljava/util/Enumeration<Ljava/util/jar/JarEntry;>;
4 23 5 je Ljava/util/jar/JarEntry;
5 23 6 is Ljava/io/InputStream;
Exception table:
from to target type
5 13 16 any
Exceptions:
throws java.lang.Exception
MethodParameters:
Name Flags
jarPathName
defaultPolicy
exemptPolicy
static javax.crypto.CryptoPermissions getDefaultPolicy();
descriptor: ()Ljavax/crypto/CryptoPermissions;
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: getstatic javax.crypto.JceSecurity.defaultPolicy:Ljavax/crypto/CryptoPermissions;
areturn
LocalVariableTable:
Start End Slot Name Signature
static javax.crypto.CryptoPermissions getExemptPolicy();
descriptor: ()Ljavax/crypto/CryptoPermissions;
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: getstatic javax.crypto.JceSecurity.exemptPolicy:Ljavax/crypto/CryptoPermissions;
areturn
LocalVariableTable:
Start End Slot Name Signature
static boolean isRestricted();
descriptor: ()Z
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: getstatic javax.crypto.JceSecurity.isRestricted:Z
ireturn
LocalVariableTable:
Start End Slot Name Signature
}
SourceFile: "JceSecurity.java"
NestMembers:
javax.crypto.JceSecurity$1 javax.crypto.JceSecurity$2
InnerClasses:
public Service = java.security.Provider$Service of java.security.Provider
javax.crypto.JceSecurity$1
javax.crypto.JceSecurity$2
public final Instance = sun.security.jca.GetInstance$Instance of sun.security.jca.GetInstance