final class sun.security.ssl.KeyShareExtension$CHKeyShareSpec implements sun.security.ssl.SSLExtension$SSLExtensionSpec
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.KeyShareExtension$CHKeyShareSpec
super_class: java.lang.Object
{
final java.util.List<sun.security.ssl.KeyShareExtension$KeyShareEntry> clientShares;
descriptor: Ljava/util/List;
flags: (0x0010) ACC_FINAL
Signature: Ljava/util/List<Lsun/security/ssl/KeyShareExtension$KeyShareEntry;>;
private void <init>(java.util.List<sun.security.ssl.KeyShareExtension$KeyShareEntry>);
descriptor: (Ljava/util/List;)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
aload 1
putfield sun.security.ssl.KeyShareExtension$CHKeyShareSpec.clientShares:Ljava/util/List;
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lsun/security/ssl/KeyShareExtension$CHKeyShareSpec;
0 3 1 clientShares Ljava/util/List<Lsun/security/ssl/KeyShareExtension$KeyShareEntry;>;
Signature: (Ljava/util/List<Lsun/security/ssl/KeyShareExtension$KeyShareEntry;>;)V
MethodParameters:
Name Flags
clientShares
private void <init>(sun.security.ssl.HandshakeContext, java.nio.ByteBuffer);
descriptor: (Lsun/security/ssl/HandshakeContext;Ljava/nio/ByteBuffer;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=7, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 2
invokevirtual java.nio.ByteBuffer.remaining:()I
iconst_2
if_icmpge 9
2: aload 1
getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.DECODE_ERROR:Lsun/security/ssl/Alert;
3: new javax.net.ssl.SSLProtocolException
dup
4: new java.lang.StringBuilder
dup
ldc "Invalid key_share extension: insufficient data (length="
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
5: aload 2
invokevirtual java.nio.ByteBuffer.remaining:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ")"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
6: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
7: invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
8: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
9: StackMap locals: sun.security.ssl.KeyShareExtension$CHKeyShareSpec sun.security.ssl.HandshakeContext java.nio.ByteBuffer
StackMap stack:
aload 2
invokestatic sun.security.ssl.Record.getInt16:(Ljava/nio/ByteBuffer;)I
istore 3
start local 3 10: iload 3
aload 2
invokevirtual java.nio.ByteBuffer.remaining:()I
if_icmpeq 18
11: aload 1
getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.DECODE_ERROR:Lsun/security/ssl/Alert;
12: new javax.net.ssl.SSLProtocolException
dup
13: new java.lang.StringBuilder
dup
ldc "Invalid key_share extension: incorrect list length (length="
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
14: iload 3
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ")"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
15: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
16: invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
17: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
18: StackMap locals: int
StackMap stack:
new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
astore 4
start local 4 19: goto 29
20: StackMap locals: java.util.List
StackMap stack:
aload 2
invokestatic sun.security.ssl.Record.getInt16:(Ljava/nio/ByteBuffer;)I
istore 5
start local 5 21: aload 2
invokestatic sun.security.ssl.Record.getBytes16:(Ljava/nio/ByteBuffer;)[B
astore 6
start local 6 22: aload 6
arraylength
ifne 28
23: aload 1
getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.DECODE_ERROR:Lsun/security/ssl/Alert;
24: new javax.net.ssl.SSLProtocolException
dup
25: ldc "Invalid key_share extension: empty key_exchange"
26: invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
27: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
28: StackMap locals: int byte[]
StackMap stack:
aload 4
new sun.security.ssl.KeyShareExtension$KeyShareEntry
dup
iload 5
aload 6
invokespecial sun.security.ssl.KeyShareExtension$KeyShareEntry.<init>:(I[B)V
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 6 end local 5 29: StackMap locals:
StackMap stack:
aload 2
invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
ifne 20
30: aload 0
aload 4
invokestatic java.util.Collections.unmodifiableList:(Ljava/util/List;)Ljava/util/List;
putfield sun.security.ssl.KeyShareExtension$CHKeyShareSpec.clientShares:Ljava/util/List;
31: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 32 0 this Lsun/security/ssl/KeyShareExtension$CHKeyShareSpec;
0 32 1 handshakeContext Lsun/security/ssl/HandshakeContext;
0 32 2 buffer Ljava/nio/ByteBuffer;
10 32 3 listLen I
19 32 4 keyShares Ljava/util/List<Lsun/security/ssl/KeyShareExtension$KeyShareEntry;>;
21 29 5 namedGroupId I
22 29 6 keyExchange [B
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
handshakeContext
buffer
public java.lang.String toString();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=1
start local 0 0: new java.text.MessageFormat
dup
1: ldc "\"client_shares\": '['{0}\n']'"
getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
2: invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;Ljava/util/Locale;)V
astore 1
start local 1 3: new java.lang.StringBuilder
dup
sipush 512
invokespecial java.lang.StringBuilder.<init>:(I)V
astore 2
start local 2 4: aload 0
getfield sun.security.ssl.KeyShareExtension$CHKeyShareSpec.clientShares:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 7
StackMap locals: sun.security.ssl.KeyShareExtension$CHKeyShareSpec java.text.MessageFormat java.lang.StringBuilder top java.util.Iterator
StackMap stack:
5: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast sun.security.ssl.KeyShareExtension$KeyShareEntry
astore 3
start local 3 6: aload 2
aload 3
invokevirtual sun.security.ssl.KeyShareExtension$KeyShareEntry.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
end local 3 7: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 5
8: iconst_1
anewarray java.lang.Object
dup
iconst_0
9: aload 2
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;)Ljava/lang/String;
aastore
10: astore 3
start local 3 11: aload 1
aload 3
invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lsun/security/ssl/KeyShareExtension$CHKeyShareSpec;
3 12 1 messageFormat Ljava/text/MessageFormat;
4 12 2 builder Ljava/lang/StringBuilder;
6 7 3 entry Lsun/security/ssl/KeyShareExtension$KeyShareEntry;
11 12 3 messageFields [Ljava/lang/Object;
}
SourceFile: "KeyShareExtension.java"
NestHost: sun.security.ssl.KeyShareExtension
InnerClasses:
final CHKeyShareSpec = sun.security.ssl.KeyShareExtension$CHKeyShareSpec of sun.security.ssl.KeyShareExtension
private final KeyShareEntry = sun.security.ssl.KeyShareExtension$KeyShareEntry of sun.security.ssl.KeyShareExtension
abstract SSLExtensionSpec = sun.security.ssl.SSLExtension$SSLExtensionSpec of sun.security.ssl.SSLExtension