final class sun.security.ssl.DHKeyExchange$DHEPossessionGenerator implements sun.security.ssl.SSLPossessionGenerator
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.DHKeyExchange$DHEPossessionGenerator
super_class: java.lang.Object
{
private static final boolean useSmartEphemeralDHKeys;
descriptor: Z
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final boolean useLegacyEphemeralDHKeys;
descriptor: Z
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private static final int customizedDHKeySize;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final boolean exportable;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=5, locals=1, args_size=0
0: ldc "jdk.tls.ephemeralDHKeySize"
1: invokestatic sun.security.action.GetPropertyAction.privilegedGetProperty:(Ljava/lang/String;)Ljava/lang/String;
astore 0
start local 0 2: aload 0
ifnull 3
aload 0
invokevirtual java.lang.String.isEmpty:()Z
ifeq 7
3: StackMap locals: java.lang.String
StackMap stack:
iconst_0
putstatic sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.useLegacyEphemeralDHKeys:Z
4: iconst_0
putstatic sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.useSmartEphemeralDHKeys:Z
5: iconst_m1
putstatic sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.customizedDHKeySize:I
6: goto 34
StackMap locals:
StackMap stack:
7: ldc "matched"
aload 0
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 12
8: iconst_0
putstatic sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.useLegacyEphemeralDHKeys:Z
9: iconst_1
putstatic sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.useSmartEphemeralDHKeys:Z
10: iconst_m1
putstatic sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.customizedDHKeySize:I
11: goto 34
StackMap locals:
StackMap stack:
12: ldc "legacy"
aload 0
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifeq 17
13: iconst_1
putstatic sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.useLegacyEphemeralDHKeys:Z
14: iconst_0
putstatic sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.useSmartEphemeralDHKeys:Z
15: iconst_m1
putstatic sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.customizedDHKeySize:I
16: goto 34
17: StackMap locals:
StackMap stack:
iconst_0
putstatic sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.useLegacyEphemeralDHKeys:Z
18: iconst_0
putstatic sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.useSmartEphemeralDHKeys:Z
19: aload 0
invokestatic java.lang.Integer.parseUnsignedInt:(Ljava/lang/String;)I
putstatic sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.customizedDHKeySize:I
20: getstatic sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.customizedDHKeySize:I
sipush 1024
if_icmplt 23
21: getstatic sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.customizedDHKeySize:I
sipush 8192
if_icmpgt 23
22: getstatic sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.customizedDHKeySize:I
bipush 63
iand
ifeq 34
23: StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
24: new java.lang.StringBuilder
dup
ldc "Unsupported customized DH key size: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
25: getstatic sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.customizedDHKeySize:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ". "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
26: ldc "The key size must be multiple of 64, "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
27: ldc "and range from 1024 to 8192 (inclusive)"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
28: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
29: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
30: StackMap locals:
StackMap stack: java.lang.NumberFormatException
pop
31: new java.lang.IllegalArgumentException
dup
32: ldc "Invalid system property jdk.tls.ephemeralDHKeySize"
33: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
end local 0 34: StackMap locals:
StackMap stack:
return
LocalVariableTable:
Start End Slot Name Signature
2 34 0 property Ljava/lang/String;
Exception table:
from to target type
19 30 30 Class java.lang.NumberFormatException
private void <init>(boolean);
descriptor: (Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
iload 1
putfield sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.exportable:Z
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/ssl/DHKeyExchange$DHEPossessionGenerator;
0 3 1 exportable Z
MethodParameters:
Name Flags
exportable
public sun.security.ssl.SSLPossession createPossession(sun.security.ssl.HandshakeContext);
descriptor: (Lsun/security/ssl/HandshakeContext;)Lsun/security/ssl/SSLPossession;
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=7, args_size=2
start local 0 start local 1 0: getstatic sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.useLegacyEphemeralDHKeys:Z
ifne 14
1: aload 1
getfield sun.security.ssl.HandshakeContext.clientRequestedNamedGroups:Ljava/util/List;
ifnull 14
2: aload 1
getfield sun.security.ssl.HandshakeContext.clientRequestedNamedGroups:Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifne 14
3: aload 1
getfield sun.security.ssl.HandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
4: aload 1
getfield sun.security.ssl.HandshakeContext.algorithmConstraints:Ljava/security/AlgorithmConstraints;
5: iconst_1
anewarray sun.security.ssl.NamedGroup$NamedGroupSpec
dup
iconst_0
6: getstatic sun.security.ssl.NamedGroup$NamedGroupSpec.NAMED_GROUP_FFDHE:Lsun/security/ssl/NamedGroup$NamedGroupSpec;
aastore
7: aload 1
getfield sun.security.ssl.HandshakeContext.clientRequestedNamedGroups:Ljava/util/List;
8: invokestatic sun.security.ssl.SupportedGroupsExtension$SupportedGroups.getPreferredGroup:(Lsun/security/ssl/ProtocolVersion;Ljava/security/AlgorithmConstraints;[Lsun/security/ssl/NamedGroup$NamedGroupSpec;Ljava/util/List;)Lsun/security/ssl/NamedGroup;
9: astore 2
start local 2 10: aload 2
ifnull 14
11: new sun.security.ssl.DHKeyExchange$DHEPossession
dup
aload 2
12: aload 1
getfield sun.security.ssl.HandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
invokevirtual sun.security.ssl.SSLContextImpl.getSecureRandom:()Ljava/security/SecureRandom;
13: invokespecial sun.security.ssl.DHKeyExchange$DHEPossession.<init>:(Lsun/security/ssl/NamedGroup;Ljava/security/SecureRandom;)V
areturn
end local 2 14: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.exportable:Z
ifeq 15
sipush 512
goto 16
StackMap locals:
StackMap stack:
15: sipush 1024
StackMap locals:
StackMap stack: int
16: istore 3
start local 3 17: aload 0
getfield sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.exportable:Z
ifne 35
18: getstatic sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.useLegacyEphemeralDHKeys:Z
ifeq 21
19: sipush 768
istore 3
20: goto 35
StackMap locals: sun.security.ssl.DHKeyExchange$DHEPossessionGenerator sun.security.ssl.HandshakeContext top int
StackMap stack:
21: getstatic sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.useSmartEphemeralDHKeys:Z
ifeq 33
22: aconst_null
astore 4
start local 4 23: aload 1
checkcast sun.security.ssl.ServerHandshakeContext
24: astore 5
start local 5 25: aload 5
getfield sun.security.ssl.ServerHandshakeContext.interimAuthn:Lsun/security/ssl/SSLPossession;
instanceof sun.security.ssl.X509Authentication$X509Possession
ifeq 27
26: aload 5
getfield sun.security.ssl.ServerHandshakeContext.interimAuthn:Lsun/security/ssl/SSLPossession;
checkcast sun.security.ssl.X509Authentication$X509Possession
getfield sun.security.ssl.X509Authentication$X509Possession.popPrivateKey:Ljava/security/PrivateKey;
astore 4
27: StackMap locals: java.security.PrivateKey sun.security.ssl.ServerHandshakeContext
StackMap stack:
aload 4
ifnull 35
28: aload 4
invokestatic sun.security.util.KeyUtil.getKeySize:(Ljava/security/Key;)I
istore 6
start local 6 29: iload 6
sipush 1024
if_icmpgt 30
sipush 1024
goto 31
StackMap locals: int
StackMap stack:
30: sipush 2048
StackMap locals:
StackMap stack: int
31: istore 3
end local 6 end local 5 end local 4 32: goto 35
StackMap locals:
StackMap stack:
33: getstatic sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.customizedDHKeySize:I
ifle 35
34: getstatic sun.security.ssl.DHKeyExchange$DHEPossessionGenerator.customizedDHKeySize:I
istore 3
35: StackMap locals:
StackMap stack:
new sun.security.ssl.DHKeyExchange$DHEPossession
dup
36: iload 3
aload 1
getfield sun.security.ssl.HandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
invokevirtual sun.security.ssl.SSLContextImpl.getSecureRandom:()Ljava/security/SecureRandom;
37: invokespecial sun.security.ssl.DHKeyExchange$DHEPossession.<init>:(ILjava/security/SecureRandom;)V
areturn
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 38 0 this Lsun/security/ssl/DHKeyExchange$DHEPossessionGenerator;
0 38 1 context Lsun/security/ssl/HandshakeContext;
10 14 2 preferableNamedGroup Lsun/security/ssl/NamedGroup;
17 38 3 keySize I
23 32 4 key Ljava/security/PrivateKey;
25 32 5 shc Lsun/security/ssl/ServerHandshakeContext;
29 32 6 ks I
MethodParameters:
Name Flags
context
}
SourceFile: "DHKeyExchange.java"
NestHost: sun.security.ssl.DHKeyExchange
InnerClasses:
final DHEPossession = sun.security.ssl.DHKeyExchange$DHEPossession of sun.security.ssl.DHKeyExchange
private final DHEPossessionGenerator = sun.security.ssl.DHKeyExchange$DHEPossessionGenerator of sun.security.ssl.DHKeyExchange
final NamedGroupSpec = sun.security.ssl.NamedGroup$NamedGroupSpec of sun.security.ssl.NamedGroup
SupportedGroups = sun.security.ssl.SupportedGroupsExtension$SupportedGroups of sun.security.ssl.SupportedGroupsExtension
final X509Possession = sun.security.ssl.X509Authentication$X509Possession of sun.security.ssl.X509Authentication