class sun.security.provider.DSAKeyPairGenerator extends java.security.KeyPairGenerator
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: sun.security.provider.DSAKeyPairGenerator
super_class: java.security.KeyPairGenerator
{
private int plen;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int qlen;
descriptor: I
flags: (0x0002) ACC_PRIVATE
boolean forceNewParameters;
descriptor: Z
flags: (0x0000)
private java.security.spec.DSAParameterSpec params;
descriptor: Ljava/security/spec/DSAParameterSpec;
flags: (0x0002) ACC_PRIVATE
private java.security.SecureRandom random;
descriptor: Ljava/security/SecureRandom;
flags: (0x0002) ACC_PRIVATE
void <init>(int);
descriptor: (I)V
flags: (0x0000)
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
ldc "DSA"
invokespecial java.security.KeyPairGenerator.<init>:(Ljava/lang/String;)V
1: aload 0
iload 1
aconst_null
invokevirtual sun.security.provider.DSAKeyPairGenerator.initialize:(ILjava/security/SecureRandom;)V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/provider/DSAKeyPairGenerator;
0 3 1 defaultKeySize I
MethodParameters:
Name Flags
defaultKeySize
private static void checkStrength(int, int);
descriptor: (II)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: iload 0
sipush 512
if_icmplt 2
iload 0
sipush 1024
if_icmpgt 2
iload 0
bipush 64
irem
ifne 2
1: iload 1
sipush 160
if_icmpeq 9
2: StackMap locals:
StackMap stack:
iload 0
sipush 2048
if_icmpne 3
iload 1
sipush 224
if_icmpeq 9
iload 1
sipush 256
if_icmpeq 9
3: StackMap locals:
StackMap stack:
iload 0
sipush 3072
if_icmpne 4
iload 1
sipush 256
if_icmpeq 9
4: StackMap locals:
StackMap stack:
new java.security.InvalidParameterException
dup
5: new java.lang.StringBuilder
dup
ldc "Unsupported prime and subprime size combination: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
6: iload 0
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ", "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 1
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
7: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
8: invokespecial java.security.InvalidParameterException.<init>:(Ljava/lang/String;)V
athrow
9: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 sizeP I
0 10 1 sizeQ I
MethodParameters:
Name Flags
sizeP
sizeQ
public void initialize(int, java.security.SecureRandom);
descriptor: (ILjava/security/SecureRandom;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
iload 1
iconst_1
aload 2
invokevirtual sun.security.provider.DSAKeyPairGenerator.initialize:(IZLjava/security/SecureRandom;)V
1: aload 0
iconst_0
putfield sun.security.provider.DSAKeyPairGenerator.forceNewParameters:Z
2: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/provider/DSAKeyPairGenerator;
0 3 1 modlen I
0 3 2 random Ljava/security/SecureRandom;
MethodParameters:
Name Flags
modlen
random
public void initialize(int, boolean, java.security.SecureRandom);
descriptor: (IZLjava/security/SecureRandom;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
iload 1
aload 3
iconst_0
invokevirtual sun.security.provider.DSAKeyPairGenerator.init:(ILjava/security/SecureRandom;Z)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 Lsun/security/provider/DSAKeyPairGenerator;
0 2 1 modlen I
0 2 2 genParams Z
0 2 3 random Ljava/security/SecureRandom;
MethodParameters:
Name Flags
modlen
genParams
random
public void initialize(java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom);
descriptor: (Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
instanceof java.security.spec.DSAParameterSpec
ifne 4
1: new java.security.InvalidAlgorithmParameterException
dup
2: ldc "Inappropriate parameter"
3: invokespecial java.security.InvalidAlgorithmParameterException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 0
aload 1
checkcast java.security.spec.DSAParameterSpec
aload 2
iconst_0
invokevirtual sun.security.provider.DSAKeyPairGenerator.init:(Ljava/security/spec/DSAParameterSpec;Ljava/security/SecureRandom;Z)V
5: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lsun/security/provider/DSAKeyPairGenerator;
0 6 1 params Ljava/security/spec/AlgorithmParameterSpec;
0 6 2 random Ljava/security/SecureRandom;
Exceptions:
throws java.security.InvalidAlgorithmParameterException
MethodParameters:
Name Flags
params
random
void init(int, java.security.SecureRandom, boolean);
descriptor: (ILjava/security/SecureRandom;Z)V
flags: (0x0000)
Code:
stack=2, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 1
invokestatic sun.security.util.SecurityProviderConstants.getDefDSASubprimeSize:(I)I
istore 4
start local 4 1: iload 1
iload 4
invokestatic sun.security.provider.DSAKeyPairGenerator.checkStrength:(II)V
2: aload 0
iload 1
putfield sun.security.provider.DSAKeyPairGenerator.plen:I
3: aload 0
iload 4
putfield sun.security.provider.DSAKeyPairGenerator.qlen:I
4: aload 0
aconst_null
putfield sun.security.provider.DSAKeyPairGenerator.params:Ljava/security/spec/DSAParameterSpec;
5: aload 0
aload 2
putfield sun.security.provider.DSAKeyPairGenerator.random:Ljava/security/SecureRandom;
6: aload 0
iload 3
putfield sun.security.provider.DSAKeyPairGenerator.forceNewParameters:Z
7: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lsun/security/provider/DSAKeyPairGenerator;
0 8 1 modlen I
0 8 2 random Ljava/security/SecureRandom;
0 8 3 forceNew Z
1 8 4 subPrimeLen I
MethodParameters:
Name Flags
modlen
random
forceNew
void init(java.security.spec.DSAParameterSpec, java.security.SecureRandom, boolean);
descriptor: (Ljava/security/spec/DSAParameterSpec;Ljava/security/SecureRandom;Z)V
flags: (0x0000)
Code:
stack=2, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
invokevirtual java.security.spec.DSAParameterSpec.getP:()Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.bitLength:()I
istore 4
start local 4 1: aload 1
invokevirtual java.security.spec.DSAParameterSpec.getQ:()Ljava/math/BigInteger;
invokevirtual java.math.BigInteger.bitLength:()I
istore 5
start local 5 2: iload 4
iload 5
invokestatic sun.security.provider.DSAKeyPairGenerator.checkStrength:(II)V
3: aload 0
iload 4
putfield sun.security.provider.DSAKeyPairGenerator.plen:I
4: aload 0
iload 5
putfield sun.security.provider.DSAKeyPairGenerator.qlen:I
5: aload 0
aload 1
putfield sun.security.provider.DSAKeyPairGenerator.params:Ljava/security/spec/DSAParameterSpec;
6: aload 0
aload 2
putfield sun.security.provider.DSAKeyPairGenerator.random:Ljava/security/SecureRandom;
7: aload 0
iload 3
putfield sun.security.provider.DSAKeyPairGenerator.forceNewParameters:Z
8: return
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 9 0 this Lsun/security/provider/DSAKeyPairGenerator;
0 9 1 params Ljava/security/spec/DSAParameterSpec;
0 9 2 random Ljava/security/SecureRandom;
0 9 3 forceNew Z
1 9 4 sizeP I
2 9 5 sizeQ I
MethodParameters:
Name Flags
params
random
forceNew
public java.security.KeyPair generateKeyPair();
descriptor: ()Ljava/security/KeyPair;
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=1
start local 0 0: aload 0
getfield sun.security.provider.DSAKeyPairGenerator.random:Ljava/security/SecureRandom;
ifnonnull 2
1: aload 0
invokestatic sun.security.jca.JCAUtil.getSecureRandom:()Ljava/security/SecureRandom;
putfield sun.security.provider.DSAKeyPairGenerator.random:Ljava/security/SecureRandom;
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.provider.DSAKeyPairGenerator.forceNewParameters:Z
ifeq 5
3: aload 0
getfield sun.security.provider.DSAKeyPairGenerator.plen:I
aload 0
getfield sun.security.provider.DSAKeyPairGenerator.qlen:I
aload 0
getfield sun.security.provider.DSAKeyPairGenerator.random:Ljava/security/SecureRandom;
invokestatic sun.security.provider.ParameterCache.getNewDSAParameterSpec:(IILjava/security/SecureRandom;)Ljava/security/spec/DSAParameterSpec;
astore 1
start local 1 4: goto 13
end local 1 5: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.provider.DSAKeyPairGenerator.params:Ljava/security/spec/DSAParameterSpec;
ifnonnull 9
6: aload 0
7: aload 0
getfield sun.security.provider.DSAKeyPairGenerator.plen:I
aload 0
getfield sun.security.provider.DSAKeyPairGenerator.qlen:I
aload 0
getfield sun.security.provider.DSAKeyPairGenerator.random:Ljava/security/SecureRandom;
invokestatic sun.security.provider.ParameterCache.getDSAParameterSpec:(IILjava/security/SecureRandom;)Ljava/security/spec/DSAParameterSpec;
8: putfield sun.security.provider.DSAKeyPairGenerator.params:Ljava/security/spec/DSAParameterSpec;
9: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.provider.DSAKeyPairGenerator.params:Ljava/security/spec/DSAParameterSpec;
astore 1
start local 1 10: goto 13
end local 1 StackMap locals:
StackMap stack: java.security.GeneralSecurityException
11: astore 2
start local 2 12: new java.security.ProviderException
dup
aload 2
invokespecial java.security.ProviderException.<init>:(Ljava/lang/Throwable;)V
athrow
end local 2 start local 1 13: StackMap locals: java.security.spec.DSAParameterSpec
StackMap stack:
aload 0
aload 1
invokevirtual java.security.spec.DSAParameterSpec.getP:()Ljava/math/BigInteger;
aload 1
invokevirtual java.security.spec.DSAParameterSpec.getQ:()Ljava/math/BigInteger;
aload 1
invokevirtual java.security.spec.DSAParameterSpec.getG:()Ljava/math/BigInteger;
aload 0
getfield sun.security.provider.DSAKeyPairGenerator.random:Ljava/security/SecureRandom;
invokevirtual sun.security.provider.DSAKeyPairGenerator.generateKeyPair:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/security/SecureRandom;)Ljava/security/KeyPair;
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lsun/security/provider/DSAKeyPairGenerator;
4 5 1 spec Ljava/security/spec/DSAParameterSpec;
10 11 1 spec Ljava/security/spec/DSAParameterSpec;
13 14 1 spec Ljava/security/spec/DSAParameterSpec;
12 13 2 e Ljava/security/GeneralSecurityException;
Exception table:
from to target type
2 10 11 Class java.security.GeneralSecurityException
private java.security.KeyPair generateKeyPair(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger, java.security.SecureRandom);
descriptor: (Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/security/SecureRandom;)Ljava/security/KeyPair;
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=10, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
aload 4
aload 2
invokevirtual sun.security.provider.DSAKeyPairGenerator.generateX:(Ljava/security/SecureRandom;Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 5
start local 5 1: aload 0
aload 5
aload 1
aload 3
invokevirtual sun.security.provider.DSAKeyPairGenerator.generateY:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 6
start local 6 2: getstatic sun.security.provider.DSAKeyFactory.SERIAL_INTEROP:Z
ifeq 5
3: new sun.security.provider.DSAPublicKey
dup
aload 6
aload 1
aload 2
aload 3
invokespecial sun.security.provider.DSAPublicKey.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V
astore 7
start local 7 4: goto 6
end local 7 5: StackMap locals: java.math.BigInteger java.math.BigInteger
StackMap stack:
new sun.security.provider.DSAPublicKeyImpl
dup
aload 6
aload 1
aload 2
aload 3
invokespecial sun.security.provider.DSAPublicKeyImpl.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V
astore 7
start local 7 6: StackMap locals: sun.security.provider.DSAPublicKey
StackMap stack:
new sun.security.provider.DSAPrivateKey
dup
aload 5
aload 1
aload 2
aload 3
invokespecial sun.security.provider.DSAPrivateKey.<init>:(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V
astore 8
start local 8 7: new java.security.KeyPair
dup
aload 7
aload 8
invokespecial java.security.KeyPair.<init>:(Ljava/security/PublicKey;Ljava/security/PrivateKey;)V
astore 9
start local 9 8: aload 9
9: areturn
end local 9 end local 8 end local 7 10: StackMap locals: sun.security.provider.DSAKeyPairGenerator java.math.BigInteger java.math.BigInteger java.math.BigInteger java.security.SecureRandom java.math.BigInteger java.math.BigInteger
StackMap stack: java.security.InvalidKeyException
astore 7
start local 7 11: new java.security.ProviderException
dup
aload 7
invokespecial java.security.ProviderException.<init>:(Ljava/lang/Throwable;)V
athrow
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 12 0 this Lsun/security/provider/DSAKeyPairGenerator;
0 12 1 p Ljava/math/BigInteger;
0 12 2 q Ljava/math/BigInteger;
0 12 3 g Ljava/math/BigInteger;
0 12 4 random Ljava/security/SecureRandom;
1 12 5 x Ljava/math/BigInteger;
2 12 6 y Ljava/math/BigInteger;
4 5 7 pub Lsun/security/provider/DSAPublicKey;
6 10 7 pub Lsun/security/provider/DSAPublicKey;
7 10 8 priv Lsun/security/provider/DSAPrivateKey;
8 10 9 pair Ljava/security/KeyPair;
11 12 7 e Ljava/security/InvalidKeyException;
Exception table:
from to target type
2 9 10 Class java.security.InvalidKeyException
MethodParameters:
Name Flags
p
q
g
random
private java.math.BigInteger generateX(java.security.SecureRandom, java.math.BigInteger);
descriptor: (Ljava/security/SecureRandom;Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aconst_null
astore 3
start local 3 1: aload 0
getfield sun.security.provider.DSAKeyPairGenerator.qlen:I
newarray 8
astore 4
start local 4 2: StackMap locals: java.math.BigInteger byte[]
StackMap stack:
aload 1
aload 4
invokevirtual java.security.SecureRandom.nextBytes:([B)V
3: new java.math.BigInteger
dup
iconst_1
aload 4
invokespecial java.math.BigInteger.<init>:(I[B)V
aload 2
invokevirtual java.math.BigInteger.mod:(Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 3
4: aload 3
invokevirtual java.math.BigInteger.signum:()I
ifle 2
aload 3
aload 2
invokevirtual java.math.BigInteger.compareTo:(Ljava/math/BigInteger;)I
ifge 2
5: aload 3
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lsun/security/provider/DSAKeyPairGenerator;
0 6 1 random Ljava/security/SecureRandom;
0 6 2 q Ljava/math/BigInteger;
1 6 3 x Ljava/math/BigInteger;
2 6 4 temp [B
MethodParameters:
Name Flags
random
q
java.math.BigInteger generateY(java.math.BigInteger, java.math.BigInteger, java.math.BigInteger);
descriptor: (Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
flags: (0x0000)
Code:
stack=3, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 3
aload 1
aload 2
invokevirtual java.math.BigInteger.modPow:(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
astore 4
start local 4 1: aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/provider/DSAKeyPairGenerator;
0 2 1 x Ljava/math/BigInteger;
0 2 2 p Ljava/math/BigInteger;
0 2 3 g Ljava/math/BigInteger;
1 2 4 y Ljava/math/BigInteger;
MethodParameters:
Name Flags
x
p
g
}
SourceFile: "DSAKeyPairGenerator.java"
NestMembers:
sun.security.provider.DSAKeyPairGenerator$Current sun.security.provider.DSAKeyPairGenerator$Legacy
InnerClasses:
public final Current = sun.security.provider.DSAKeyPairGenerator$Current of sun.security.provider.DSAKeyPairGenerator
public final Legacy = sun.security.provider.DSAKeyPairGenerator$Legacy of sun.security.provider.DSAKeyPairGenerator