final class sun.security.ssl.KeyShareExtension$SHKeyShareConsumer implements sun.security.ssl.SSLExtension$ExtensionConsumer
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.KeyShareExtension$SHKeyShareConsumer
super_class: java.lang.Object
{
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 // sun.security.ssl.KeyShareExtension$SHKeyShareConsumer this
0: .line 600
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
1: .line 602
return
end local 0 // sun.security.ssl.KeyShareExtension$SHKeyShareConsumer this
LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/KeyShareExtension$SHKeyShareConsumer;
public void consume(sun.security.ssl.ConnectionContext, sun.security.ssl.SSLHandshake$HandshakeMessage, java.nio.ByteBuffer);
descriptor: (Lsun/security/ssl/ConnectionContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;Ljava/nio/ByteBuffer;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=11, args_size=4
start local 0 // sun.security.ssl.KeyShareExtension$SHKeyShareConsumer this
start local 1 // sun.security.ssl.ConnectionContext context
start local 2 // sun.security.ssl.SSLHandshake$HandshakeMessage message
start local 3 // java.nio.ByteBuffer buffer
0: .line 608
aload 1 /* context */
checkcast sun.security.ssl.ClientHandshakeContext
astore 4 /* chc */
start local 4 // sun.security.ssl.ClientHandshakeContext chc
1: .line 609
aload 4 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.clientRequestedNamedGroups:Ljava/util/List;
ifnull 3
2: .line 610
aload 4 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.clientRequestedNamedGroups:Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifeq 6
3: .line 612
StackMap locals: sun.security.ssl.ClientHandshakeContext
StackMap stack:
aload 4 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.UNEXPECTED_MESSAGE:Lsun/security/ssl/Alert;
4: .line 613
ldc "Unexpected key_share extension in ServerHello"
5: .line 612
invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
6: .line 617
StackMap locals:
StackMap stack:
aload 4 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
getstatic sun.security.ssl.SSLExtension.SH_KEY_SHARE:Lsun/security/ssl/SSLExtension;
invokevirtual sun.security.ssl.SSLConfiguration.isAvailable:(Lsun/security/ssl/SSLExtension;)Z
ifne 10
7: .line 618
aload 4 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.UNEXPECTED_MESSAGE:Lsun/security/ssl/Alert;
8: .line 619
ldc "Unsupported key_share extension in ServerHello"
9: .line 618
invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
10: .line 625
StackMap locals:
StackMap stack:
new sun.security.ssl.KeyShareExtension$SHKeyShareSpec
dup
aload 3 /* buffer */
invokespecial sun.security.ssl.KeyShareExtension$SHKeyShareSpec.<init>:(Ljava/nio/ByteBuffer;)V
astore 5 /* spec */
start local 5 // sun.security.ssl.KeyShareExtension$SHKeyShareSpec spec
11: .line 626
goto 14
end local 5 // sun.security.ssl.KeyShareExtension$SHKeyShareSpec spec
StackMap locals:
StackMap stack: java.io.IOException
12: astore 6 /* ioe */
start local 6 // java.io.IOException ioe
13: .line 627
aload 4 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.UNEXPECTED_MESSAGE:Lsun/security/ssl/Alert;
aload 6 /* ioe */
invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
end local 6 // java.io.IOException ioe
start local 5 // sun.security.ssl.KeyShareExtension$SHKeyShareSpec spec
14: .line 630
StackMap locals: sun.security.ssl.KeyShareExtension$SHKeyShareSpec
StackMap stack:
aload 5 /* spec */
getfield sun.security.ssl.KeyShareExtension$SHKeyShareSpec.serverShare:Lsun/security/ssl/KeyShareExtension$KeyShareEntry;
astore 6 /* keyShare */
start local 6 // sun.security.ssl.KeyShareExtension$KeyShareEntry keyShare
15: .line 631
aload 6 /* keyShare */
getfield sun.security.ssl.KeyShareExtension$KeyShareEntry.namedGroupId:I
invokestatic sun.security.ssl.SupportedGroupsExtension$NamedGroup.valueOf:(I)Lsun/security/ssl/SupportedGroupsExtension$NamedGroup;
astore 7 /* ng */
start local 7 // sun.security.ssl.SupportedGroupsExtension$NamedGroup ng
16: .line 632
aload 7 /* ng */
ifnull 20
17: .line 633
aload 4 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.algorithmConstraints:Ljava/security/AlgorithmConstraints;
aload 7 /* ng */
18: .line 632
invokestatic sun.security.ssl.SupportedGroupsExtension$SupportedGroups.isActivatable:(Ljava/security/AlgorithmConstraints;Lsun/security/ssl/SupportedGroupsExtension$NamedGroup;)Z
19: .line 633
ifne 25
20: .line 634
StackMap locals: sun.security.ssl.KeyShareExtension$KeyShareEntry sun.security.ssl.SupportedGroupsExtension$NamedGroup
StackMap stack:
aload 4 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.UNEXPECTED_MESSAGE:Lsun/security/ssl/Alert;
21: .line 635
new java.lang.StringBuilder
dup
ldc "Unsupported named group: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
22: .line 636
aload 6 /* keyShare */
getfield sun.security.ssl.KeyShareExtension$KeyShareEntry.namedGroupId:I
invokestatic sun.security.ssl.SupportedGroupsExtension$NamedGroup.nameOf:(I)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
23: .line 635
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
24: .line 634
invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
25: .line 639
StackMap locals:
StackMap stack:
aload 7 /* ng */
invokestatic sun.security.ssl.SSLKeyExchange.valueOf:(Lsun/security/ssl/SupportedGroupsExtension$NamedGroup;)Lsun/security/ssl/SSLKeyExchange;
astore 8 /* ke */
start local 8 // sun.security.ssl.SSLKeyExchange ke
26: .line 640
aload 8 /* ke */
ifnonnull 30
27: .line 641
aload 4 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.UNEXPECTED_MESSAGE:Lsun/security/ssl/Alert;
28: .line 642
new java.lang.StringBuilder
dup
ldc "No key exchange for named group "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 7 /* ng */
getfield sun.security.ssl.SupportedGroupsExtension$NamedGroup.name:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
29: .line 641
invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
30: .line 645
StackMap locals: sun.security.ssl.SSLKeyExchange
StackMap stack:
aconst_null
astore 9 /* credentials */
start local 9 // sun.security.ssl.SSLCredentials credentials
31: .line 646
aload 7 /* ng */
getfield sun.security.ssl.SupportedGroupsExtension$NamedGroup.type:Lsun/security/ssl/SupportedGroupsExtension$NamedGroupType;
getstatic sun.security.ssl.SupportedGroupsExtension$NamedGroupType.NAMED_GROUP_ECDHE:Lsun/security/ssl/SupportedGroupsExtension$NamedGroupType;
if_acmpne 51
32: .line 649
aload 7 /* ng */
aload 6 /* keyShare */
getfield sun.security.ssl.KeyShareExtension$KeyShareEntry.keyExchange:[B
invokestatic sun.security.ssl.ECDHKeyExchange$ECDHECredentials.valueOf:(Lsun/security/ssl/SupportedGroupsExtension$NamedGroup;[B)Lsun/security/ssl/ECDHKeyExchange$ECDHECredentials;
33: .line 648
astore 10 /* ecdhec */
start local 10 // sun.security.ssl.ECDHKeyExchange$ECDHECredentials ecdhec
34: .line 650
aload 10 /* ecdhec */
ifnull 76
35: .line 651
aload 4 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.algorithmConstraints:Ljava/security/AlgorithmConstraints;
36: .line 652
getstatic java.security.CryptoPrimitive.KEY_AGREEMENT:Ljava/security/CryptoPrimitive;
invokestatic java.util.EnumSet.of:(Ljava/lang/Enum;)Ljava/util/EnumSet;
37: .line 653
aload 10 /* ecdhec */
getfield sun.security.ssl.ECDHKeyExchange$ECDHECredentials.popPublicKey:Ljava/security/interfaces/ECPublicKey;
38: .line 651
invokeinterface java.security.AlgorithmConstraints.permits:(Ljava/util/Set;Ljava/security/Key;)Z
39: .line 653
ifne 43
40: .line 654
aload 4 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.UNEXPECTED_MESSAGE:Lsun/security/ssl/Alert;
41: .line 655
ldc "ECDHE key share entry does not comply to algorithm constraints"
42: .line 654
invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
43: .line 658
StackMap locals: sun.security.ssl.SSLCredentials sun.security.ssl.ECDHKeyExchange$ECDHECredentials
StackMap stack:
aload 10 /* ecdhec */
astore 9 /* credentials */
end local 10 // sun.security.ssl.ECDHKeyExchange$ECDHECredentials ecdhec
44: .line 661
goto 76
StackMap locals: sun.security.ssl.KeyShareExtension$SHKeyShareConsumer sun.security.ssl.ConnectionContext sun.security.ssl.SSLHandshake$HandshakeMessage java.nio.ByteBuffer sun.security.ssl.ClientHandshakeContext sun.security.ssl.KeyShareExtension$SHKeyShareSpec sun.security.ssl.KeyShareExtension$KeyShareEntry sun.security.ssl.SupportedGroupsExtension$NamedGroup sun.security.ssl.SSLKeyExchange sun.security.ssl.SSLCredentials
StackMap stack: java.lang.Exception
45: pop
46: .line 662
aload 4 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.UNEXPECTED_MESSAGE:Lsun/security/ssl/Alert;
47: .line 663
new java.lang.StringBuilder
dup
ldc "Cannot decode named group: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
48: .line 664
aload 6 /* keyShare */
getfield sun.security.ssl.KeyShareExtension$KeyShareEntry.namedGroupId:I
invokestatic sun.security.ssl.SupportedGroupsExtension$NamedGroup.nameOf:(I)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
49: .line 663
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
50: .line 662
invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
51: .line 666
StackMap locals:
StackMap stack:
aload 7 /* ng */
getfield sun.security.ssl.SupportedGroupsExtension$NamedGroup.type:Lsun/security/ssl/SupportedGroupsExtension$NamedGroupType;
getstatic sun.security.ssl.SupportedGroupsExtension$NamedGroupType.NAMED_GROUP_FFDHE:Lsun/security/ssl/SupportedGroupsExtension$NamedGroupType;
if_acmpne 71
52: .line 669
aload 7 /* ng */
aload 6 /* keyShare */
getfield sun.security.ssl.KeyShareExtension$KeyShareEntry.keyExchange:[B
invokestatic sun.security.ssl.DHKeyExchange$DHECredentials.valueOf:(Lsun/security/ssl/SupportedGroupsExtension$NamedGroup;[B)Lsun/security/ssl/DHKeyExchange$DHECredentials;
53: .line 668
astore 10 /* dhec */
start local 10 // sun.security.ssl.DHKeyExchange$DHECredentials dhec
54: .line 670
aload 10 /* dhec */
ifnull 76
55: .line 671
aload 4 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.algorithmConstraints:Ljava/security/AlgorithmConstraints;
56: .line 672
getstatic java.security.CryptoPrimitive.KEY_AGREEMENT:Ljava/security/CryptoPrimitive;
invokestatic java.util.EnumSet.of:(Ljava/lang/Enum;)Ljava/util/EnumSet;
57: .line 673
aload 10 /* dhec */
getfield sun.security.ssl.DHKeyExchange$DHECredentials.popPublicKey:Ljavax/crypto/interfaces/DHPublicKey;
58: .line 671
invokeinterface java.security.AlgorithmConstraints.permits:(Ljava/util/Set;Ljava/security/Key;)Z
59: .line 673
ifne 63
60: .line 674
aload 4 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.UNEXPECTED_MESSAGE:Lsun/security/ssl/Alert;
61: .line 675
ldc "DHE key share entry does not comply to algorithm constraints"
62: .line 674
invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
63: .line 678
StackMap locals: sun.security.ssl.DHKeyExchange$DHECredentials
StackMap stack:
aload 10 /* dhec */
astore 9 /* credentials */
end local 10 // sun.security.ssl.DHKeyExchange$DHECredentials dhec
64: .line 681
goto 76
StackMap locals: sun.security.ssl.KeyShareExtension$SHKeyShareConsumer sun.security.ssl.ConnectionContext sun.security.ssl.SSLHandshake$HandshakeMessage java.nio.ByteBuffer sun.security.ssl.ClientHandshakeContext sun.security.ssl.KeyShareExtension$SHKeyShareSpec sun.security.ssl.KeyShareExtension$KeyShareEntry sun.security.ssl.SupportedGroupsExtension$NamedGroup sun.security.ssl.SSLKeyExchange sun.security.ssl.SSLCredentials
StackMap stack: java.lang.Exception
65: pop
66: .line 682
aload 4 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.UNEXPECTED_MESSAGE:Lsun/security/ssl/Alert;
67: .line 683
new java.lang.StringBuilder
dup
ldc "Cannot decode named group: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
68: .line 684
aload 6 /* keyShare */
getfield sun.security.ssl.KeyShareExtension$KeyShareEntry.namedGroupId:I
invokestatic sun.security.ssl.SupportedGroupsExtension$NamedGroup.nameOf:(I)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
69: .line 683
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
70: .line 682
invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
71: .line 687
StackMap locals:
StackMap stack:
aload 4 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.UNEXPECTED_MESSAGE:Lsun/security/ssl/Alert;
72: .line 688
new java.lang.StringBuilder
dup
ldc "Unsupported named group: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
73: .line 689
aload 6 /* keyShare */
getfield sun.security.ssl.KeyShareExtension$KeyShareEntry.namedGroupId:I
invokestatic sun.security.ssl.SupportedGroupsExtension$NamedGroup.nameOf:(I)Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
74: .line 688
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
75: .line 687
invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
76: .line 692
StackMap locals:
StackMap stack:
aload 9 /* credentials */
ifnonnull 80
77: .line 693
aload 4 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.UNEXPECTED_MESSAGE:Lsun/security/ssl/Alert;
78: .line 694
new java.lang.StringBuilder
dup
ldc "Unsupported named group: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 7 /* ng */
getfield sun.security.ssl.SupportedGroupsExtension$NamedGroup.name:Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
79: .line 693
invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
80: .line 698
StackMap locals:
StackMap stack:
aload 4 /* chc */
aload 8 /* ke */
putfield sun.security.ssl.ClientHandshakeContext.handshakeKeyExchange:Lsun/security/ssl/SSLKeyExchange;
81: .line 699
aload 4 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.handshakeCredentials:Ljava/util/List;
aload 9 /* credentials */
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
82: .line 700
aload 4 /* chc */
getfield sun.security.ssl.ClientHandshakeContext.handshakeExtensions:Ljava/util/Map;
getstatic sun.security.ssl.SSLExtension.SH_KEY_SHARE:Lsun/security/ssl/SSLExtension;
aload 5 /* spec */
invokeinterface java.util.Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
83: .line 701
return
end local 9 // sun.security.ssl.SSLCredentials credentials
end local 8 // sun.security.ssl.SSLKeyExchange ke
end local 7 // sun.security.ssl.SupportedGroupsExtension$NamedGroup ng
end local 6 // sun.security.ssl.KeyShareExtension$KeyShareEntry keyShare
end local 5 // sun.security.ssl.KeyShareExtension$SHKeyShareSpec spec
end local 4 // sun.security.ssl.ClientHandshakeContext chc
end local 3 // java.nio.ByteBuffer buffer
end local 2 // sun.security.ssl.SSLHandshake$HandshakeMessage message
end local 1 // sun.security.ssl.ConnectionContext context
end local 0 // sun.security.ssl.KeyShareExtension$SHKeyShareConsumer this
LocalVariableTable:
Start End Slot Name Signature
0 84 0 this Lsun/security/ssl/KeyShareExtension$SHKeyShareConsumer;
0 84 1 context Lsun/security/ssl/ConnectionContext;
0 84 2 message Lsun/security/ssl/SSLHandshake$HandshakeMessage;
0 84 3 buffer Ljava/nio/ByteBuffer;
1 84 4 chc Lsun/security/ssl/ClientHandshakeContext;
11 12 5 spec Lsun/security/ssl/KeyShareExtension$SHKeyShareSpec;
14 84 5 spec Lsun/security/ssl/KeyShareExtension$SHKeyShareSpec;
13 14 6 ioe Ljava/io/IOException;
15 84 6 keyShare Lsun/security/ssl/KeyShareExtension$KeyShareEntry;
16 84 7 ng Lsun/security/ssl/SupportedGroupsExtension$NamedGroup;
26 84 8 ke Lsun/security/ssl/SSLKeyExchange;
31 84 9 credentials Lsun/security/ssl/SSLCredentials;
34 44 10 ecdhec Lsun/security/ssl/ECDHKeyExchange$ECDHECredentials;
54 64 10 dhec Lsun/security/ssl/DHKeyExchange$DHECredentials;
Exception table:
from to target type
10 11 12 Class java.io.IOException
32 44 45 Class java.io.IOException
32 44 45 Class java.security.GeneralSecurityException
52 64 65 Class java.io.IOException
52 64 65 Class java.security.GeneralSecurityException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
context
message
buffer
}
SourceFile: "KeyShareExtension.java"
NestHost: sun.security.ssl.KeyShareExtension
InnerClasses:
final DHECredentials = sun.security.ssl.DHKeyExchange$DHECredentials of sun.security.ssl.DHKeyExchange
final ECDHECredentials = sun.security.ssl.ECDHKeyExchange$ECDHECredentials of sun.security.ssl.ECDHKeyExchange
private final KeyShareEntry = sun.security.ssl.KeyShareExtension$KeyShareEntry of sun.security.ssl.KeyShareExtension
private final SHKeyShareConsumer = sun.security.ssl.KeyShareExtension$SHKeyShareConsumer of sun.security.ssl.KeyShareExtension
final SHKeyShareSpec = sun.security.ssl.KeyShareExtension$SHKeyShareSpec of sun.security.ssl.KeyShareExtension
abstract ExtensionConsumer = sun.security.ssl.SSLExtension$ExtensionConsumer of sun.security.ssl.SSLExtension
abstract HandshakeMessage = sun.security.ssl.SSLHandshake$HandshakeMessage of sun.security.ssl.SSLHandshake
final NamedGroup = sun.security.ssl.SupportedGroupsExtension$NamedGroup of sun.security.ssl.SupportedGroupsExtension
final NamedGroupType = sun.security.ssl.SupportedGroupsExtension$NamedGroupType of sun.security.ssl.SupportedGroupsExtension
SupportedGroups = sun.security.ssl.SupportedGroupsExtension$SupportedGroups of sun.security.ssl.SupportedGroupsExtension