public class org.bouncycastle.crypto.generators.DSAParametersGenerator
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.bouncycastle.crypto.generators.DSAParametersGenerator
super_class: java.lang.Object
{
private int L;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int N;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int certainty;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private java.security.SecureRandom random;
descriptor: Ljava/security/SecureRandom;
flags: (0x0002) ACC_PRIVATE
private static final java.math.BigInteger ZERO;
descriptor: Ljava/math/BigInteger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.math.BigInteger ONE;
descriptor: Ljava/math/BigInteger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final java.math.BigInteger TWO;
descriptor: Ljava/math/BigInteger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: lconst_0
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
putstatic org.bouncycastle.crypto.generators.DSAParametersGenerator.ZERO:Ljava/math/BigInteger;
1: lconst_1
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
putstatic org.bouncycastle.crypto.generators.DSAParametersGenerator.ONE:Ljava/math/BigInteger;
2: ldc 2
invokestatic java.math.BigInteger.valueOf:(J)Ljava/math/BigInteger;
putstatic org.bouncycastle.crypto.generators.DSAParametersGenerator.TWO:Ljava/math/BigInteger;
return
LocalVariableTable:
Start End Slot Name Signature
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/bouncycastle/crypto/generators/DSAParametersGenerator;
public void init(int, int, java.security.SecureRandom);
descriptor: (IILjava/security/SecureRandom;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
iload 1
iload 1
invokestatic org.bouncycastle.crypto.generators.DSAParametersGenerator.getDefaultN:(I)I
iload 2
aload 3
invokevirtual org.bouncycastle.crypto.generators.DSAParametersGenerator.init:(IIILjava/security/SecureRandom;)V
1: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/bouncycastle/crypto/generators/DSAParametersGenerator;
0 2 1 size I
0 2 2 certainty I
0 2 3 random Ljava/security/SecureRandom;
MethodParameters:
Name Flags
size
certainty
random
private void init(int, int, int, java.security.SecureRandom);
descriptor: (IIILjava/security/SecureRandom;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
iload 1
putfield org.bouncycastle.crypto.generators.DSAParametersGenerator.L:I
1: aload 0
iload 2
putfield org.bouncycastle.crypto.generators.DSAParametersGenerator.N:I
2: aload 0
iload 3
putfield org.bouncycastle.crypto.generators.DSAParametersGenerator.certainty:I
3: aload 0
aload 4
putfield org.bouncycastle.crypto.generators.DSAParametersGenerator.random:Ljava/security/SecureRandom;
4: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/bouncycastle/crypto/generators/DSAParametersGenerator;
0 5 1 L I
0 5 2 N I
0 5 3 certainty I
0 5 4 random Ljava/security/SecureRandom;
MethodParameters:
Name Flags
L
N
certainty
random
public org.bouncycastle.crypto.params.DSAParameters generateParameters();
descriptor: ()Lorg/bouncycastle/crypto/params/DSAParameters;
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield org.bouncycastle.crypto.generators.DSAParametersGenerator.L:I
sipush 1024
if_icmple 2
1: aload 0
invokevirtual org.bouncycastle.crypto.generators.DSAParametersGenerator.generateParameters_FIPS186_3:()Lorg/bouncycastle/crypto/params/DSAParameters;
goto 3
2: StackMap locals:
StackMap stack:
aload 0
invokevirtual org.bouncycastle.crypto.generators.DSAParametersGenerator.generateParameters_FIPS186_2:()Lorg/bouncycastle/crypto/params/DSAParameters;
3: StackMap locals:
StackMap stack: org.bouncycastle.crypto.params.DSAParameters
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/bouncycastle/crypto/generators/DSAParametersGenerator;
private org.bouncycastle.crypto.params.DSAParameters generateParameters_FIPS186_2();
descriptor: ()Lorg/bouncycastle/crypto/params/DSAParameters;
flags: (0x0002) ACC_PRIVATE
Code:
stack=9, locals=15, args_size=1
start local 0 0: bipush 20
newarray 8
astore 1
start local 1 1: bipush 20
newarray 8
astore 2
start local 2 2: bipush 20
newarray 8
astore 3
start local 3 3: bipush 20
newarray 8
astore 4
start local 4 4: new org.bouncycastle.crypto.digests.SHA1Digest
dup
invokespecial org.bouncycastle.crypto.digests.SHA1Digest.<init>:()V
astore 5
start local 5 5: aload 0
getfield org.bouncycastle.crypto.generators.DSAParametersGenerator.L:I
iconst_1
isub
sipush 160
idiv
istore 6
start local 6 6: aload 0
getfield org.bouncycastle.crypto.generators.DSAParametersGenerator.L:I
bipush 8
idiv
newarray 8
astore 7
start local 7 7: StackMap locals: org.bouncycastle.crypto.generators.DSAParametersGenerator byte[] byte[] byte[] byte[] org.bouncycastle.crypto.digests.SHA1Digest int byte[]
StackMap stack:
aload 0
getfield org.bouncycastle.crypto.generators.DSAParametersGenerator.random:Ljava/security/SecureRandom;
aload 1
invokevirtual java.security.SecureRandom.nextBytes:([B)V
8: aload 5
aload 1
aload 2
invokestatic org.bouncycastle.crypto.generators.DSAParametersGenerator.hash:(Lorg/bouncycastle/crypto/Digest;[B[B)V
9: aload 1
iconst_0
aload 3
iconst_0
aload 1
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
10: aload 3
invokestatic org.bouncycastle.crypto.generators.DSAParametersGenerator.inc:([B)V
11: aload 5
aload 3
aload 3
invokestatic org.bouncycastle.crypto.generators.DSAParametersGenerator.hash:(Lorg/bouncycastle/crypto/Digest;[B[B)V
12: iconst_0
istore 8
start local 8 13: goto 16
14: StackMap locals: int
StackMap stack:
aload 4
iload 8
aload 2
iload 8
baload
aload 3
iload 8
baload
ixor
i2b
bastore
15: iinc 8 1
StackMap locals:
StackMap stack:
16: iload 8
aload 4
arraylength
if_icmpne 14
end local 8 17: aload 4
iconst_0
dup2
baload
bipush -128
ior
i2b
bastore
18: aload 4
bipush 19
dup2
baload
iconst_1
ior
i2b
bastore
19: new java.math.BigInteger
dup
iconst_1
aload 4
invokespecial java.math.BigInteger.<init>:(I[B)V
astore 8
start local 8 20: aload 8
aload 0
getfield org.bouncycastle.crypto.generators.DSAParametersGenerator.certainty:I
invokevirtual java.math.BigInteger.isProbablePrime:(I)Z
ifne 22
21: goto 7
22: StackMap locals: org.bouncycastle.crypto.generators.DSAParametersGenerator byte[] byte[] byte[] byte[] org.bouncycastle.crypto.digests.SHA1Digest int byte[] java.math.BigInteger
StackMap stack:
aload 1
invokestatic org.bouncycastle.util.Arrays.clone:([B)[B
astore 9
start local 9 23: aload 9
invokestatic org.bouncycastle.crypto.generators.DSAParametersGenerator.inc:([B)V
24: iconst_0
istore 10
start local 10 25: goto 46
26: StackMap locals: byte[] int
StackMap stack:
iconst_0
istore 11
start local 11 27: goto 32
28: StackMap locals: int
StackMap stack:
aload 9
invokestatic org.bouncycastle.crypto.generators.DSAParametersGenerator.inc:([B)V
29: aload 5
aload 9
aload 2
invokestatic org.bouncycastle.crypto.generators.DSAParametersGenerator.hash:(Lorg/bouncycastle/crypto/Digest;[B[B)V
30: aload 2
iconst_0
aload 7
aload 7
arraylength
iload 11
iconst_1
iadd
aload 2
arraylength
imul
isub
aload 2
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
31: iinc 11 1
StackMap locals:
StackMap stack:
32: iload 11
iload 6
if_icmplt 28
end local 11 33: aload 9
invokestatic org.bouncycastle.crypto.generators.DSAParametersGenerator.inc:([B)V
34: aload 5
aload 9
aload 2
invokestatic org.bouncycastle.crypto.generators.DSAParametersGenerator.hash:(Lorg/bouncycastle/crypto/Digest;[B[B)V
35: aload 2
aload 2
arraylength
aload 7
arraylength
iload 6
aload 2
arraylength
imul
isub
isub
aload 7
iconst_0
aload 7
arraylength
iload 6
aload 2
arraylength
imul
isub
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
36: aload 7
iconst_0
dup2
baload
bipush -128
ior
i2b
bastore
37: new java.math.BigInteger
dup
iconst_1
aload 7
invokespecial java.math.BigInteger.<init>:(I[B)V
astore 11
start local 11 38: aload 11
aload 8
iconst_1
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 12
start local 12 39: aload 11
aload 12
getstatic org.bouncycastle.crypto.generators.DSAParametersGenerator.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 13
start local 13 40: aload 13
invokevirtual java.math.BigInteger.bitLength:()I
aload 0
getfield org.bouncycastle.crypto.generators.DSAParametersGenerator.L:I
if_icmpeq 42
41: goto 45
42: StackMap locals: org.bouncycastle.crypto.generators.DSAParametersGenerator byte[] byte[] byte[] byte[] org.bouncycastle.crypto.digests.SHA1Digest int byte[] java.math.BigInteger byte[] int java.math.BigInteger java.math.BigInteger java.math.BigInteger
StackMap stack:
aload 13
aload 0
getfield org.bouncycastle.crypto.generators.DSAParametersGenerator.certainty:I
invokevirtual java.math.BigInteger.isProbablePrime:(I)Z
ifeq 45
43: aload 13
aload 8
aload 0
getfield org.bouncycastle.crypto.generators.DSAParametersGenerator.random:Ljava/security/SecureRandom;
invokestatic org.bouncycastle.crypto.generators.DSAParametersGenerator.calculateGenerator_FIPS186_2:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/security/SecureRandom;)Ljava/math/BigInteger;
astore 14
start local 14 44: new org.bouncycastle.crypto.params.DSAParameters
dup
aload 13
aload 8
aload 14
new org.bouncycastle.crypto.params.DSAValidationParameters
dup
aload 1
iload 10
invokespecial org.bouncycastle.crypto.params.DSAValidationParameters.<init>:([BI)V
invokespecial org.bouncycastle.crypto.params.DSAParameters.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Lorg/bouncycastle/crypto/params/DSAValidationParameters;)V
areturn
end local 14 end local 13 end local 12 end local 11 45: StackMap locals:
StackMap stack:
iinc 10 1
StackMap locals:
StackMap stack:
46: iload 10
sipush 4096
if_icmplt 26
end local 10 end local 9 end local 8 47: goto 7
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 48 0 this Lorg/bouncycastle/crypto/generators/DSAParametersGenerator;
1 48 1 seed [B
2 48 2 part1 [B
3 48 3 part2 [B
4 48 4 u [B
5 48 5 sha1 Lorg/bouncycastle/crypto/digests/SHA1Digest;
6 48 6 n I
7 48 7 w [B
13 17 8 i I
20 47 8 q Ljava/math/BigInteger;
23 47 9 offset [B
25 47 10 counter I
27 33 11 k I
38 45 11 x Ljava/math/BigInteger;
39 45 12 c Ljava/math/BigInteger;
40 45 13 p Ljava/math/BigInteger;
44 45 14 g Ljava/math/BigInteger;
private static java.math.BigInteger calculateGenerator_FIPS186_2(java.math.BigInteger, java.math.BigInteger, java.security.SecureRandom);
descriptor: (Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/security/SecureRandom;)Ljava/math/BigInteger;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getstatic org.bouncycastle.crypto.generators.DSAParametersGenerator.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aload 1
invokevirtual java.math.BigInteger.divide:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 3
start local 3 1: aload 0
getstatic org.bouncycastle.crypto.generators.DSAParametersGenerator.TWO:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 4
start local 4 2: StackMap locals: java.math.BigInteger java.math.BigInteger
StackMap stack:
getstatic org.bouncycastle.crypto.generators.DSAParametersGenerator.TWO:Ljava/math/BigInteger;
aload 4
aload 2
invokestatic org.bouncycastle.util.BigIntegers.createRandomInRange:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/security/SecureRandom;)Ljava/math/BigInteger;
astore 5
start local 5 3: aload 5
aload 3
aload 0
invokevirtual java.math.BigInteger.modPow:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 6
start local 6 4: aload 6
invokevirtual java.math.BigInteger.bitLength:()I
iconst_1
if_icmple 2
5: aload 6
areturn
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 6 0 p Ljava/math/BigInteger;
0 6 1 q Ljava/math/BigInteger;
0 6 2 r Ljava/security/SecureRandom;
1 6 3 e Ljava/math/BigInteger;
2 6 4 pSub2 Ljava/math/BigInteger;
3 6 5 h Ljava/math/BigInteger;
4 6 6 g Ljava/math/BigInteger;
MethodParameters:
Name Flags
p
q
r
private org.bouncycastle.crypto.params.DSAParameters generateParameters_FIPS186_3();
descriptor: ()Lorg/bouncycastle/crypto/params/DSAParameters;
flags: (0x0002) ACC_PRIVATE
Code:
stack=9, locals=18, args_size=1
start local 0 0: new org.bouncycastle.crypto.digests.SHA256Digest
dup
invokespecial org.bouncycastle.crypto.digests.SHA256Digest.<init>:()V
astore 1
start local 1 1: aload 1
invokeinterface org.bouncycastle.crypto.Digest.getDigestSize:()I
bipush 8
imul
istore 2
start local 2 2: aload 0
getfield org.bouncycastle.crypto.generators.DSAParametersGenerator.N:I
istore 3
start local 3 3: iload 3
bipush 8
idiv
newarray 8
astore 4
start local 4 4: aload 0
getfield org.bouncycastle.crypto.generators.DSAParametersGenerator.L:I
iconst_1
isub
iload 2
idiv
istore 5
start local 5 5: aload 0
getfield org.bouncycastle.crypto.generators.DSAParametersGenerator.L:I
iconst_1
isub
iload 2
irem
istore 6
start local 6 6: aload 1
invokeinterface org.bouncycastle.crypto.Digest.getDigestSize:()I
newarray 8
astore 7
start local 7 7: StackMap locals: org.bouncycastle.crypto.generators.DSAParametersGenerator org.bouncycastle.crypto.Digest int int byte[] int int byte[]
StackMap stack:
aload 0
getfield org.bouncycastle.crypto.generators.DSAParametersGenerator.random:Ljava/security/SecureRandom;
aload 4
invokevirtual java.security.SecureRandom.nextBytes:([B)V
8: aload 1
aload 4
aload 7
invokestatic org.bouncycastle.crypto.generators.DSAParametersGenerator.hash:(Lorg/bouncycastle/crypto/Digest;[B[B)V
9: new java.math.BigInteger
dup
iconst_1
aload 7
invokespecial java.math.BigInteger.<init>:(I[B)V
getstatic org.bouncycastle.crypto.generators.DSAParametersGenerator.ONE:Ljava/math/BigInteger;
aload 0
getfield org.bouncycastle.crypto.generators.DSAParametersGenerator.N:I
iconst_1
isub
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 8
start local 8 10: getstatic org.bouncycastle.crypto.generators.DSAParametersGenerator.ONE:Ljava/math/BigInteger;
aload 0
getfield org.bouncycastle.crypto.generators.DSAParametersGenerator.N:I
iconst_1
isub
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
aload 8
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
getstatic org.bouncycastle.crypto.generators.DSAParametersGenerator.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
aload 8
getstatic org.bouncycastle.crypto.generators.DSAParametersGenerator.TWO:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 9
start local 9 11: aload 9
aload 0
getfield org.bouncycastle.crypto.generators.DSAParametersGenerator.certainty:I
invokevirtual java.math.BigInteger.isProbablePrime:(I)Z
ifne 13
12: goto 7
13: StackMap locals: java.math.BigInteger java.math.BigInteger
StackMap stack:
aload 4
invokestatic org.bouncycastle.util.Arrays.clone:([B)[B
astore 10
start local 10 14: iconst_4
aload 0
getfield org.bouncycastle.crypto.generators.DSAParametersGenerator.L:I
imul
istore 11
start local 11 15: iconst_0
istore 12
start local 12 16: goto 38
17: StackMap locals: byte[] int int
StackMap stack:
getstatic org.bouncycastle.crypto.generators.DSAParametersGenerator.ZERO:Ljava/math/BigInteger;
astore 13
start local 13 18: iconst_0
istore 14
start local 14 19: iconst_0
istore 15
start local 15 20: goto 28
21: StackMap locals: java.math.BigInteger int int
StackMap stack:
aload 10
invokestatic org.bouncycastle.crypto.generators.DSAParametersGenerator.inc:([B)V
22: aload 1
aload 10
aload 7
invokestatic org.bouncycastle.crypto.generators.DSAParametersGenerator.hash:(Lorg/bouncycastle/crypto/Digest;[B[B)V
23: new java.math.BigInteger
dup
iconst_1
aload 7
invokespecial java.math.BigInteger.<init>:(I[B)V
astore 16
start local 16 24: iload 14
iload 5
if_icmpne 26
25: aload 16
getstatic org.bouncycastle.crypto.generators.DSAParametersGenerator.ONE:Ljava/math/BigInteger;
iload 6
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 16
26: StackMap locals: java.math.BigInteger
StackMap stack:
aload 13
aload 16
iload 15
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 13
end local 16 27: iinc 14 1
iload 15
iload 2
iadd
istore 15
StackMap locals:
StackMap stack:
28: iload 14
iload 5
if_icmple 21
end local 15 end local 14 29: aload 13
getstatic org.bouncycastle.crypto.generators.DSAParametersGenerator.ONE:Ljava/math/BigInteger;
aload 0
getfield org.bouncycastle.crypto.generators.DSAParametersGenerator.L:I
iconst_1
isub
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.add:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 14
start local 14 30: aload 14
aload 9
iconst_1
invokevirtual java.math.BigInteger.shiftLeft:(I)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 15
start local 15 31: aload 14
aload 15
getstatic org.bouncycastle.crypto.generators.DSAParametersGenerator.ONE:Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.subtract:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 16
start local 16 32: aload 16
invokevirtual java.math.BigInteger.bitLength:()I
aload 0
getfield org.bouncycastle.crypto.generators.DSAParametersGenerator.L:I
if_icmpeq 34
33: goto 37
34: StackMap locals: org.bouncycastle.crypto.generators.DSAParametersGenerator org.bouncycastle.crypto.Digest int int byte[] int int byte[] java.math.BigInteger java.math.BigInteger byte[] int int java.math.BigInteger java.math.BigInteger java.math.BigInteger java.math.BigInteger
StackMap stack:
aload 16
aload 0
getfield org.bouncycastle.crypto.generators.DSAParametersGenerator.certainty:I
invokevirtual java.math.BigInteger.isProbablePrime:(I)Z
ifeq 37
35: aload 16
aload 9
aload 0
getfield org.bouncycastle.crypto.generators.DSAParametersGenerator.random:Ljava/security/SecureRandom;
invokestatic org.bouncycastle.crypto.generators.DSAParametersGenerator.calculateGenerator_FIPS186_3_Unverifiable:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/security/SecureRandom;)Ljava/math/BigInteger;
astore 17
start local 17 36: new org.bouncycastle.crypto.params.DSAParameters
dup
aload 16
aload 9
aload 17
new org.bouncycastle.crypto.params.DSAValidationParameters
dup
aload 4
iload 12
invokespecial org.bouncycastle.crypto.params.DSAValidationParameters.<init>:([BI)V
invokespecial org.bouncycastle.crypto.params.DSAParameters.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Lorg/bouncycastle/crypto/params/DSAValidationParameters;)V
areturn
end local 17 end local 16 end local 15 end local 14 end local 13 37: StackMap locals: org.bouncycastle.crypto.generators.DSAParametersGenerator org.bouncycastle.crypto.Digest int int byte[] int int byte[] java.math.BigInteger java.math.BigInteger byte[] int int
StackMap stack:
iinc 12 1
StackMap locals:
StackMap stack:
38: iload 12
iload 11
if_icmplt 17
end local 12 end local 11 end local 10 end local 9 end local 8 39: goto 7
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 40 0 this Lorg/bouncycastle/crypto/generators/DSAParametersGenerator;
1 40 1 d Lorg/bouncycastle/crypto/Digest;
2 40 2 outlen I
3 40 3 seedlen I
4 40 4 seed [B
5 40 5 n I
6 40 6 b I
7 40 7 output [B
10 39 8 U Ljava/math/BigInteger;
11 39 9 q Ljava/math/BigInteger;
14 39 10 offset [B
15 39 11 counterLimit I
16 39 12 counter I
18 37 13 W Ljava/math/BigInteger;
19 29 14 j I
20 29 15 exp I
24 27 16 Vj Ljava/math/BigInteger;
30 37 14 X Ljava/math/BigInteger;
31 37 15 c Ljava/math/BigInteger;
32 37 16 p Ljava/math/BigInteger;
36 37 17 g Ljava/math/BigInteger;
private static java.math.BigInteger calculateGenerator_FIPS186_3_Unverifiable(java.math.BigInteger, java.math.BigInteger, java.security.SecureRandom);
descriptor: (Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/security/SecureRandom;)Ljava/math/BigInteger;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
invokestatic org.bouncycastle.crypto.generators.DSAParametersGenerator.calculateGenerator_FIPS186_2:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/security/SecureRandom;)Ljava/math/BigInteger;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 p Ljava/math/BigInteger;
0 1 1 q Ljava/math/BigInteger;
0 1 2 r Ljava/security/SecureRandom;
MethodParameters:
Name Flags
p
q
r
private static void hash(org.bouncycastle.crypto.Digest, byte[], byte[]);
descriptor: (Lorg/bouncycastle/crypto/Digest;[B[B)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
iconst_0
aload 1
arraylength
invokeinterface org.bouncycastle.crypto.Digest.update:([BII)V
1: aload 0
aload 2
iconst_0
invokeinterface org.bouncycastle.crypto.Digest.doFinal:([BI)I
pop
2: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 d Lorg/bouncycastle/crypto/Digest;
0 3 1 input [B
0 3 2 output [B
MethodParameters:
Name Flags
d
input
output
private static int getDefaultN(int);
descriptor: (I)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: iload 0
sipush 1024
if_icmple 1
sipush 256
goto 2
StackMap locals:
StackMap stack:
1: sipush 160
StackMap locals:
StackMap stack: int
2: ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 L I
MethodParameters:
Name Flags
L
private static void inc(byte[]);
descriptor: ([B)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=3, args_size=1
start local 0 0: aload 0
arraylength
iconst_1
isub
istore 1
start local 1 1: goto 7
2: StackMap locals: int
StackMap stack:
aload 0
iload 1
baload
iconst_1
iadd
sipush 255
iand
i2b
istore 2
start local 2 3: aload 0
iload 1
iload 2
bastore
4: iload 2
ifeq 6
5: goto 8
end local 2 6: StackMap locals:
StackMap stack:
iinc 1 -1
StackMap locals:
StackMap stack:
7: iload 1
ifge 2
end local 1 8: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 buf [B
1 8 1 i I
3 6 2 b B
MethodParameters:
Name Flags
buf
}
SourceFile: "DSAParametersGenerator.java"