public final class org.bouncycastle.crypto.CryptoServicesRegistrar
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: org.bouncycastle.crypto.CryptoServicesRegistrar
super_class: java.lang.Object
{
private static final java.security.Permission CanSetDefaultProperty;
descriptor: Ljava/security/Permission;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.security.Permission CanSetThreadProperty;
descriptor: Ljava/security/Permission;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.security.Permission CanSetDefaultRandom;
descriptor: Ljava/security/Permission;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.lang.ThreadLocal<java.util.Map<java.lang.String, java.lang.Object[]>> threadProperties;
descriptor: Ljava/lang/ThreadLocal;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/lang/ThreadLocal<Ljava/util/Map<Ljava/lang/String;[Ljava/lang/Object;>;>;
private static final java.util.Map<java.lang.String, java.lang.Object[]> globalProperties;
descriptor: Ljava/util/Map;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
Signature: Ljava/util/Map<Ljava/lang/String;[Ljava/lang/Object;>;
private static volatile java.security.SecureRandom defaultSecureRandom;
descriptor: Ljava/security/SecureRandom;
flags: (0x004a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=9, locals=4, args_size=0
0: new org.bouncycastle.crypto.CryptoServicesPermission
dup
ldc "globalConfig"
invokespecial org.bouncycastle.crypto.CryptoServicesPermission.<init>:(Ljava/lang/String;)V
putstatic org.bouncycastle.crypto.CryptoServicesRegistrar.CanSetDefaultProperty:Ljava/security/Permission;
1: new org.bouncycastle.crypto.CryptoServicesPermission
dup
ldc "threadLocalConfig"
invokespecial org.bouncycastle.crypto.CryptoServicesPermission.<init>:(Ljava/lang/String;)V
putstatic org.bouncycastle.crypto.CryptoServicesRegistrar.CanSetThreadProperty:Ljava/security/Permission;
2: new org.bouncycastle.crypto.CryptoServicesPermission
dup
ldc "defaultRandomConfig"
invokespecial org.bouncycastle.crypto.CryptoServicesPermission.<init>:(Ljava/lang/String;)V
putstatic org.bouncycastle.crypto.CryptoServicesRegistrar.CanSetDefaultRandom:Ljava/security/Permission;
3: new java.lang.ThreadLocal
dup
invokespecial java.lang.ThreadLocal.<init>:()V
putstatic org.bouncycastle.crypto.CryptoServicesRegistrar.threadProperties:Ljava/lang/ThreadLocal;
4: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
invokestatic java.util.Collections.synchronizedMap:(Ljava/util/Map;)Ljava/util/Map;
putstatic org.bouncycastle.crypto.CryptoServicesRegistrar.globalProperties:Ljava/util/Map;
5: new org.bouncycastle.crypto.params.DSAParameters
dup
6: new java.math.BigInteger
dup
ldc "fca682ce8e12caba26efccf7110e526db078b05edecbcd1eb4a208f3ae1617ae01f35b91a47e6df63413c5e12ed0899bcd132acd50d99151bdc43ee737592e17"
bipush 16
invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
7: new java.math.BigInteger
dup
ldc "962eddcc369cba8ebb260ee6b6a126d9346e38c5"
bipush 16
invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
8: new java.math.BigInteger
dup
ldc "678471b27a9cf44ee91a49c5147db1a9aaf244f05a434d6486931d2d14271b9e35030b71fd73da179069b32e2935630e1c2062354d0da20a6c416e50be794ca4"
bipush 16
invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
9: new org.bouncycastle.crypto.params.DSAValidationParameters
dup
ldc "b869c82b35d70e1b1ff91b28e37a62ecdc34409b"
invokestatic org.bouncycastle.util.encoders.Hex.decode:(Ljava/lang/String;)[B
bipush 123
invokespecial org.bouncycastle.crypto.params.DSAValidationParameters.<init>:([BI)V
10: invokespecial org.bouncycastle.crypto.params.DSAParameters.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Lorg/bouncycastle/crypto/params/DSAValidationParameters;)V
astore 0
start local 0 11: new org.bouncycastle.crypto.params.DSAParameters
dup
12: new java.math.BigInteger
dup
ldc "e9e642599d355f37c97ffd3567120b8e25c9cd43e927b3a9670fbec5d890141922d2c3b3ad2480093799869d1e846aab49fab0ad26d2ce6a22219d470bce7d777d4a21fbe9c270b57f607002f3cef8393694cf45ee3688c11a8c56ab127a3daf"
13: bipush 16
14: invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
15: new java.math.BigInteger
dup
ldc "9cdbd84c9f1ac2f38d0f80f42ab952e7338bf511"
bipush 16
invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
16: new java.math.BigInteger
dup
ldc "30470ad5a005fb14ce2d9dcd87e38bc7d1b1c5facbaecbe95f190aa7a31d23c4dbbcbe06174544401a5b2c020965d8c2bd2171d3668445771f74ba084d2029d83c1c158547f3a9f1a2715be23d51ae4d3e5a1f6a7064f316933a346d3f529252"
17: bipush 16
18: invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
19: new org.bouncycastle.crypto.params.DSAValidationParameters
dup
ldc "77d0f8c4dad15eb8c4f2f8d6726cefd96d5bb399"
invokestatic org.bouncycastle.util.encoders.Hex.decode:(Ljava/lang/String;)[B
sipush 263
invokespecial org.bouncycastle.crypto.params.DSAValidationParameters.<init>:([BI)V
20: invokespecial org.bouncycastle.crypto.params.DSAParameters.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Lorg/bouncycastle/crypto/params/DSAValidationParameters;)V
astore 1
start local 1 21: new org.bouncycastle.crypto.params.DSAParameters
dup
22: new java.math.BigInteger
dup
ldc "fd7f53811d75122952df4a9c2eece4e7f611b7523cef4400c31e3f80b6512669455d402251fb593d8d58fabfc5f5ba30f6cb9b556cd7813b801d346ff26660b76b9950a5a49f9fe8047b1022c24fbba9d7feb7c61bf83b57e7c6a8a6150f04fb83f6d3c51ec3023554135a169132f675f3ae2b61d72aeff22203199dd14801c7"
23: bipush 16
24: invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
25: new java.math.BigInteger
dup
ldc "9760508f15230bccb292b982a2eb840bf0581cf5"
bipush 16
invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
26: new java.math.BigInteger
dup
ldc "f7e1a085d69b3ddecbbcab5c36b857b97994afbbfa3aea82f9574c0b3d0782675159578ebad4594fe67107108180b449167123e84c281613b7cf09328cc8a6e13c167a8b547c8d28e0a3ae1e2bb3a675916ea37f0bfa213562f1fb627a01243bcca4f1bea8519089a883dfe15ae59f06928b665e807b552564014c3bfecf492a"
27: bipush 16
28: invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
29: new org.bouncycastle.crypto.params.DSAValidationParameters
dup
ldc "8d5155894229d5e689ee01e6018a237e2cae64cd"
invokestatic org.bouncycastle.util.encoders.Hex.decode:(Ljava/lang/String;)[B
bipush 92
invokespecial org.bouncycastle.crypto.params.DSAValidationParameters.<init>:([BI)V
30: invokespecial org.bouncycastle.crypto.params.DSAParameters.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Lorg/bouncycastle/crypto/params/DSAValidationParameters;)V
astore 2
start local 2 31: new org.bouncycastle.crypto.params.DSAParameters
dup
32: new java.math.BigInteger
dup
ldc "95475cf5d93e596c3fcd1d902add02f427f5f3c7210313bb45fb4d5bb2e5fe1cbd678cd4bbdd84c9836be1f31c0777725aeb6c2fc38b85f48076fa76bcd8146cc89a6fb2f706dd719898c2083dc8d896f84062e2c9c94d137b054a8d8096adb8d51952398eeca852a0af12df83e475aa65d4ec0c38a9560d5661186ff98b9fc9eb60eee8b030376b236bc73be3acdbd74fd61c1d2475fa3077b8f080467881ff7e1ca56fee066d79506ade51edbb5443a563927dbc4ba520086746175c8885925ebc64c6147906773496990cb714ec667304e261faee33b3cbdf008e0c3fa90650d97d3909c9275bf4ac86ffcb3d03e6dfc8ada5934242dd6d3bcca2a406cb0b"
33: bipush 16
34: invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
35: new java.math.BigInteger
dup
ldc "f8183668ba5fc5bb06b5981e6d8b795d30b8978d43ca0ec572e37e09939a9773"
bipush 16
invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
36: new java.math.BigInteger
dup
ldc "42debb9da5b3d88cc956e08787ec3f3a09bba5f48b889a74aaf53174aa0fbe7e3c5b8fcd7a53bef563b0e98560328960a9517f4014d3325fc7962bf1e049370d76d1314a76137e792f3f0db859d095e4a5b932024f079ecf2ef09c797452b0770e1350782ed57ddf794979dcef23cb96f183061965c4ebc93c9c71c56b925955a75f94cccf1449ac43d586d0beee43251b0b2287349d68de0d144403f13e802f4146d882e057af19b6f6275c6676c8fa0e3ca2713a3257fd1b27d0639f695e347d8d1cf9ac819a26ca9b04cb0eb9b7b035988d15bbac65212a55239cfc7e58fae38d7250ab9991ffbc97134025fe8ce04c4399ad96569be91a546f4978693c7a"
37: bipush 16
38: invokespecial java.math.BigInteger.<init>:(Ljava/lang/String;I)V
39: new org.bouncycastle.crypto.params.DSAValidationParameters
dup
ldc "b0b4417601b59cbc9d8ac8f935cadaec4f5fbb2f23785609ae466748d9b5a536"
invokestatic org.bouncycastle.util.encoders.Hex.decode:(Ljava/lang/String;)[B
sipush 497
invokespecial org.bouncycastle.crypto.params.DSAValidationParameters.<init>:([BI)V
40: invokespecial org.bouncycastle.crypto.params.DSAParameters.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Lorg/bouncycastle/crypto/params/DSAValidationParameters;)V
astore 3
start local 3 41: getstatic org.bouncycastle.crypto.CryptoServicesRegistrar$Property.DSA_DEFAULT_PARAMS:Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
iconst_4
anewarray org.bouncycastle.crypto.params.DSAParameters
dup
iconst_0
aload 0
aastore
dup
iconst_1
aload 1
aastore
dup
iconst_2
aload 2
aastore
dup
iconst_3
aload 3
aastore
invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.localSetGlobalProperty:(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[Ljava/lang/Object;)V
42: getstatic org.bouncycastle.crypto.CryptoServicesRegistrar$Property.DH_DEFAULT_PARAMS:Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
iconst_4
anewarray org.bouncycastle.crypto.params.DHParameters
dup
iconst_0
aload 0
invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.toDH:(Lorg/bouncycastle/crypto/params/DSAParameters;)Lorg/bouncycastle/crypto/params/DHParameters;
aastore
dup
iconst_1
aload 1
invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.toDH:(Lorg/bouncycastle/crypto/params/DSAParameters;)Lorg/bouncycastle/crypto/params/DHParameters;
aastore
dup
iconst_2
aload 2
invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.toDH:(Lorg/bouncycastle/crypto/params/DSAParameters;)Lorg/bouncycastle/crypto/params/DHParameters;
aastore
dup
iconst_3
aload 3
invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.toDH:(Lorg/bouncycastle/crypto/params/DSAParameters;)Lorg/bouncycastle/crypto/params/DHParameters;
aastore
invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.localSetGlobalProperty:(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[Ljava/lang/Object;)V
end local 3 end local 2 end local 1 end local 0 43: return
LocalVariableTable:
Start End Slot Name Signature
11 43 0 def512Params Lorg/bouncycastle/crypto/params/DSAParameters;
21 43 1 def768Params Lorg/bouncycastle/crypto/params/DSAParameters;
31 43 2 def1024Params Lorg/bouncycastle/crypto/params/DSAParameters;
41 43 3 def2048Params Lorg/bouncycastle/crypto/params/DSAParameters;
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 Lorg/bouncycastle/crypto/CryptoServicesRegistrar;
public static java.security.SecureRandom getSecureRandom();
descriptor: ()Ljava/security/SecureRandom;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.defaultSecureRandom:Ljava/security/SecureRandom;
ifnonnull 2
1: new java.security.SecureRandom
dup
invokespecial java.security.SecureRandom.<init>:()V
areturn
2: StackMap locals:
StackMap stack:
getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.defaultSecureRandom:Ljava/security/SecureRandom;
areturn
LocalVariableTable:
Start End Slot Name Signature
public static void setSecureRandom(java.security.SecureRandom);
descriptor: (Ljava/security/SecureRandom;)V
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.CanSetDefaultRandom:Ljava/security/Permission;
invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.checkPermission:(Ljava/security/Permission;)V
1: aload 0
putstatic org.bouncycastle.crypto.CryptoServicesRegistrar.defaultSecureRandom:Ljava/security/SecureRandom;
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 secureRandom Ljava/security/SecureRandom;
MethodParameters:
Name Flags
secureRandom
public static <T> T getProperty(org.bouncycastle.crypto.CryptoServicesRegistrar$Property);
descriptor: (Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)Ljava/lang/Object;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: aload 0
invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.lookupProperty:(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[Ljava/lang/Object;
astore 1
start local 1 1: aload 1
ifnull 3
2: aload 1
iconst_0
aaload
areturn
3: StackMap locals: java.lang.Object[]
StackMap stack:
aconst_null
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 property Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
1 4 1 values [Ljava/lang/Object;
Signature: <T:Ljava/lang/Object;>(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)TT;
MethodParameters:
Name Flags
property
private static java.lang.Object[] lookupProperty(org.bouncycastle.crypto.CryptoServicesRegistrar$Property);
descriptor: (Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=3, args_size=1
start local 0 0: getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.threadProperties:Ljava/lang/ThreadLocal;
invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
checkcast java.util.Map
astore 1
start local 1 1: aload 1
ifnull 2
aload 1
aload 0
getfield org.bouncycastle.crypto.CryptoServicesRegistrar$Property.name:Ljava/lang/String;
invokeinterface java.util.Map.containsKey:(Ljava/lang/Object;)Z
ifne 4
2: StackMap locals: java.util.Map
StackMap stack:
getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.globalProperties:Ljava/util/Map;
aload 0
getfield org.bouncycastle.crypto.CryptoServicesRegistrar$Property.name:Ljava/lang/String;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Object[]
astore 2
start local 2 3: goto 5
end local 2 4: StackMap locals:
StackMap stack:
aload 1
aload 0
getfield org.bouncycastle.crypto.CryptoServicesRegistrar$Property.name:Ljava/lang/String;
invokeinterface java.util.Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Object[]
astore 2
start local 2 5: StackMap locals: java.lang.Object[]
StackMap stack:
aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 property Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
1 6 1 properties Ljava/util/Map<Ljava/lang/String;[Ljava/lang/Object;>;
3 4 2 values [Ljava/lang/Object;
5 6 2 values [Ljava/lang/Object;
MethodParameters:
Name Flags
property
public static <T> T[] getSizedProperty(org.bouncycastle.crypto.CryptoServicesRegistrar$Property);
descriptor: (Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[Ljava/lang/Object;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=2, args_size=1
start local 0 0: aload 0
invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.lookupProperty:(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[Ljava/lang/Object;
astore 1
start local 1 1: aload 1
ifnonnull 3
2: aconst_null
areturn
3: StackMap locals: java.lang.Object[]
StackMap stack:
aload 1
invokevirtual java.lang.Object[].clone:()Ljava/lang/Object;
checkcast java.lang.Object[]
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 property Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
1 4 1 values [Ljava/lang/Object;
Signature: <T:Ljava/lang/Object;>(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[TT;
MethodParameters:
Name Flags
property
public static <T> T getSizedProperty(org.bouncycastle.crypto.CryptoServicesRegistrar$Property, );
descriptor: (Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;I)Ljava/lang/Object;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=5, args_size=2
start local 0 start local 1 0: aload 0
invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.lookupProperty:(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[Ljava/lang/Object;
astore 2
start local 2 1: aload 2
ifnonnull 3
2: aconst_null
areturn
3: StackMap locals: java.lang.Object[]
StackMap stack:
aload 0
getfield org.bouncycastle.crypto.CryptoServicesRegistrar$Property.type:Ljava/lang/Class;
ldc Lorg/bouncycastle/crypto/params/DHParameters;
invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
ifeq 12
4: iconst_0
istore 3
start local 3 5: goto 10
6: StackMap locals: int
StackMap stack:
aload 2
iload 3
aaload
checkcast org.bouncycastle.crypto.params.DHParameters
astore 4
start local 4 7: aload 4
invokevirtual org.bouncycastle.crypto.params.DHParameters.getP:()Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.bitLength:()I
iload 1
if_icmpne 9
8: aload 4
areturn
end local 4 9: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
10: iload 3
aload 2
arraylength
if_icmpne 6
end local 3 11: goto 20
12: StackMap locals:
StackMap stack:
aload 0
getfield org.bouncycastle.crypto.CryptoServicesRegistrar$Property.type:Ljava/lang/Class;
ldc Lorg/bouncycastle/crypto/params/DSAParameters;
invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
ifeq 20
13: iconst_0
istore 3
start local 3 14: goto 19
15: StackMap locals: int
StackMap stack:
aload 2
iload 3
aaload
checkcast org.bouncycastle.crypto.params.DSAParameters
astore 4
start local 4 16: aload 4
invokevirtual org.bouncycastle.crypto.params.DSAParameters.getP:()Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.bitLength:()I
iload 1
if_icmpne 18
17: aload 4
areturn
end local 4 18: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
19: iload 3
aload 2
arraylength
if_icmpne 15
end local 3 20: StackMap locals:
StackMap stack:
aconst_null
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 property Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
0 21 1 size I
1 21 2 values [Ljava/lang/Object;
5 11 3 i I
7 9 4 params Lorg/bouncycastle/crypto/params/DHParameters;
14 20 3 i I
16 18 4 params Lorg/bouncycastle/crypto/params/DSAParameters;
Signature: <T:Ljava/lang/Object;>(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;I)TT;
MethodParameters:
Name Flags
property
size
public static <T> void setThreadProperty(org.bouncycastle.crypto.CryptoServicesRegistrar$Property, );
descriptor: (Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[Ljava/lang/Object;)V
flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.CanSetThreadProperty:Ljava/security/Permission;
invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.checkPermission:(Ljava/security/Permission;)V
1: aload 0
getfield org.bouncycastle.crypto.CryptoServicesRegistrar$Property.type:Ljava/lang/Class;
aload 1
iconst_0
aaload
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
ifne 3
2: new java.lang.IllegalArgumentException
dup
ldc "Bad property value passed"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
3: StackMap locals:
StackMap stack:
aload 0
aload 1
invokevirtual java.lang.Object[].clone:()Ljava/lang/Object;
checkcast java.lang.Object[]
invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.localSetThread:(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[Ljava/lang/Object;)V
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 property Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
0 5 1 propertyValue [Ljava/lang/Object;
Signature: <T:Ljava/lang/Object;>(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[TT;)V
MethodParameters:
Name Flags
property
propertyValue
public static <T> void setGlobalProperty(org.bouncycastle.crypto.CryptoServicesRegistrar$Property, );
descriptor: (Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[Ljava/lang/Object;)V
flags: (0x0089) ACC_PUBLIC, ACC_STATIC, ACC_VARARGS
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.CanSetDefaultProperty:Ljava/security/Permission;
invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.checkPermission:(Ljava/security/Permission;)V
1: aload 0
aload 1
invokevirtual java.lang.Object[].clone:()Ljava/lang/Object;
checkcast java.lang.Object[]
invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.localSetGlobalProperty:(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[Ljava/lang/Object;)V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 property Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
0 3 1 propertyValue [Ljava/lang/Object;
Signature: <T:Ljava/lang/Object;>(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[TT;)V
MethodParameters:
Name Flags
property
propertyValue
private static <T> void localSetThread(org.bouncycastle.crypto.CryptoServicesRegistrar$Property, );
descriptor: (Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[Ljava/lang/Object;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=2
start local 0 start local 1 0: getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.threadProperties:Ljava/lang/ThreadLocal;
invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
checkcast java.util.Map
astore 2
start local 2 1: aload 2
ifnonnull 4
2: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
astore 2
3: getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.threadProperties:Ljava/lang/ThreadLocal;
aload 2
invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
4: StackMap locals: java.util.Map
StackMap stack:
aload 2
aload 0
getfield org.bouncycastle.crypto.CryptoServicesRegistrar$Property.name:Ljava/lang/String;
aload 1
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
5: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 property Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
0 6 1 propertyValue [Ljava/lang/Object;
1 6 2 properties Ljava/util/Map<Ljava/lang/String;[Ljava/lang/Object;>;
Signature: <T:Ljava/lang/Object;>(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[TT;)V
MethodParameters:
Name Flags
property
propertyValue
private static <T> void localSetGlobalProperty(org.bouncycastle.crypto.CryptoServicesRegistrar$Property, );
descriptor: (Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[Ljava/lang/Object;)V
flags: (0x008a) ACC_PRIVATE, ACC_STATIC, ACC_VARARGS
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.bouncycastle.crypto.CryptoServicesRegistrar$Property.type:Ljava/lang/Class;
aload 1
iconst_0
aaload
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.isAssignableFrom:(Ljava/lang/Class;)Z
ifne 2
1: new java.lang.IllegalArgumentException
dup
ldc "Bad property value passed"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
aload 1
invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.localSetThread:(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[Ljava/lang/Object;)V
3: getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.globalProperties:Ljava/util/Map;
aload 0
getfield org.bouncycastle.crypto.CryptoServicesRegistrar$Property.name:Ljava/lang/String;
aload 1
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
4: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 property Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
0 5 1 propertyValue [Ljava/lang/Object;
Signature: <T:Ljava/lang/Object;>(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;[TT;)V
MethodParameters:
Name Flags
property
propertyValue
public static <T> T[] clearGlobalProperty(org.bouncycastle.crypto.CryptoServicesRegistrar$Property);
descriptor: (Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[Ljava/lang/Object;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.CanSetDefaultProperty:Ljava/security/Permission;
invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.checkPermission:(Ljava/security/Permission;)V
1: aload 0
invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.localClearThreadProperty:(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[Ljava/lang/Object;
pop
2: getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.globalProperties:Ljava/util/Map;
aload 0
getfield org.bouncycastle.crypto.CryptoServicesRegistrar$Property.name:Ljava/lang/String;
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Object[]
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 property Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
Signature: <T:Ljava/lang/Object;>(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[TT;
MethodParameters:
Name Flags
property
public static <T> T[] clearThreadProperty(org.bouncycastle.crypto.CryptoServicesRegistrar$Property);
descriptor: (Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[Ljava/lang/Object;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.CanSetThreadProperty:Ljava/security/Permission;
invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.checkPermission:(Ljava/security/Permission;)V
1: aload 0
invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.localClearThreadProperty:(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[Ljava/lang/Object;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 property Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
Signature: <T:Ljava/lang/Object;>(Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[TT;
MethodParameters:
Name Flags
property
private static java.lang.Object[] localClearThreadProperty(org.bouncycastle.crypto.CryptoServicesRegistrar$Property);
descriptor: (Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;)[Ljava/lang/Object;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.threadProperties:Ljava/lang/ThreadLocal;
invokevirtual java.lang.ThreadLocal.get:()Ljava/lang/Object;
checkcast java.util.Map
astore 1
start local 1 1: aload 1
ifnonnull 4
2: new java.util.HashMap
dup
invokespecial java.util.HashMap.<init>:()V
astore 1
3: getstatic org.bouncycastle.crypto.CryptoServicesRegistrar.threadProperties:Ljava/lang/ThreadLocal;
aload 1
invokevirtual java.lang.ThreadLocal.set:(Ljava/lang/Object;)V
4: StackMap locals: java.util.Map
StackMap stack:
aload 1
aload 0
getfield org.bouncycastle.crypto.CryptoServicesRegistrar$Property.name:Ljava/lang/String;
invokeinterface java.util.Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast java.lang.Object[]
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 property Lorg/bouncycastle/crypto/CryptoServicesRegistrar$Property;
1 5 1 properties Ljava/util/Map<Ljava/lang/String;[Ljava/lang/Object;>;
MethodParameters:
Name Flags
property
private static void checkPermission(java.security.Permission);
descriptor: (Ljava/security/Permission;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=2, args_size=1
start local 0 0: invokestatic java.lang.System.getSecurityManager:()Ljava/lang/SecurityManager;
astore 1
start local 1 1: aload 1
ifnull 3
2: new org.bouncycastle.crypto.CryptoServicesRegistrar$1
dup
aload 1
aload 0
invokespecial org.bouncycastle.crypto.CryptoServicesRegistrar$1.<init>:(Ljava/lang/SecurityManager;Ljava/security/Permission;)V
invokestatic java.security.AccessController.doPrivileged:(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
pop
3: StackMap locals: java.lang.SecurityManager
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 permission Ljava/security/Permission;
1 4 1 securityManager Ljava/lang/SecurityManager;
MethodParameters:
Name Flags
permission final
private static org.bouncycastle.crypto.params.DHParameters toDH(org.bouncycastle.crypto.params.DSAParameters);
descriptor: (Lorg/bouncycastle/crypto/params/DSAParameters;)Lorg/bouncycastle/crypto/params/DHParameters;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=12, locals=3, args_size=1
start local 0 0: aload 0
invokevirtual org.bouncycastle.crypto.params.DSAParameters.getP:()Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.bitLength:()I
istore 1
start local 1 1: iload 1
invokestatic org.bouncycastle.crypto.CryptoServicesRegistrar.chooseLowerBound:(I)I
istore 2
start local 2 2: new org.bouncycastle.crypto.params.DHParameters
dup
aload 0
invokevirtual org.bouncycastle.crypto.params.DSAParameters.getP:()Ljava/math/BigInteger;
aload 0
invokevirtual org.bouncycastle.crypto.params.DSAParameters.getG:()Ljava/math/BigInteger;
aload 0
invokevirtual org.bouncycastle.crypto.params.DSAParameters.getQ:()Ljava/math/BigInteger;
iload 2
iconst_0
aconst_null
3: new org.bouncycastle.crypto.params.DHValidationParameters
dup
aload 0
invokevirtual org.bouncycastle.crypto.params.DSAParameters.getValidationParameters:()Lorg/bouncycastle/crypto/params/DSAValidationParameters;
invokevirtual org.bouncycastle.crypto.params.DSAValidationParameters.getSeed:()[B
aload 0
invokevirtual org.bouncycastle.crypto.params.DSAParameters.getValidationParameters:()Lorg/bouncycastle/crypto/params/DSAValidationParameters;
invokevirtual org.bouncycastle.crypto.params.DSAValidationParameters.getCounter:()I
invokespecial org.bouncycastle.crypto.params.DHValidationParameters.<init>:([BI)V
4: invokespecial org.bouncycastle.crypto.params.DHParameters.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;IILjava/math/BigInteger;Lorg/bouncycastle/crypto/params/DHValidationParameters;)V
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 dsaParams Lorg/bouncycastle/crypto/params/DSAParameters;
1 5 1 pSize I
2 5 2 m I
MethodParameters:
Name Flags
dsaParams
private static int chooseLowerBound(int);
descriptor: (I)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: sipush 160
istore 1
start local 1 1: iload 0
sipush 1024
if_icmple 12
2: iload 0
sipush 2048
if_icmpgt 5
3: sipush 224
istore 1
4: goto 12
5: StackMap locals: int
StackMap stack:
iload 0
sipush 3072
if_icmpgt 8
6: sipush 256
istore 1
7: goto 12
8: StackMap locals:
StackMap stack:
iload 0
sipush 7680
if_icmpgt 11
9: sipush 384
istore 1
10: goto 12
11: StackMap locals:
StackMap stack:
sipush 512
istore 1
12: StackMap locals:
StackMap stack:
iload 1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 pSize I
1 13 1 m I
MethodParameters:
Name Flags
pSize
}
SourceFile: "CryptoServicesRegistrar.java"
NestMembers:
org.bouncycastle.crypto.CryptoServicesRegistrar$1 org.bouncycastle.crypto.CryptoServicesRegistrar$Property
InnerClasses:
org.bouncycastle.crypto.CryptoServicesRegistrar$1
public final Property = org.bouncycastle.crypto.CryptoServicesRegistrar$Property of org.bouncycastle.crypto.CryptoServicesRegistrar