final class sun.security.ssl.CertificateMessage$T13CertificateMessage extends sun.security.ssl.SSLHandshake$HandshakeMessage
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.CertificateMessage$T13CertificateMessage
super_class: sun.security.ssl.SSLHandshake$HandshakeMessage
{
private final byte[] requestContext;
descriptor: [B
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.util.List<sun.security.ssl.CertificateMessage$CertificateEntry> certEntries;
descriptor: Ljava/util/List;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
Signature: Ljava/util/List<Lsun/security/ssl/CertificateMessage$CertificateEntry;>;
void <init>(sun.security.ssl.HandshakeContext, byte[], java.security.cert.X509Certificate[]);
descriptor: (Lsun/security/ssl/HandshakeContext;[B[Ljava/security/cert/X509Certificate;)V
flags: (0x0000)
Code:
stack=5, locals=10, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
invokespecial sun.security.ssl.SSLHandshake$HandshakeMessage.<init>:(Lsun/security/ssl/HandshakeContext;)V
1: aload 0
aload 2
invokevirtual byte[].clone:()Ljava/lang/Object;
checkcast byte[]
putfield sun.security.ssl.CertificateMessage$T13CertificateMessage.requestContext:[B
2: aload 0
new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
putfield sun.security.ssl.CertificateMessage$T13CertificateMessage.certEntries:Ljava/util/List;
3: aload 3
dup
astore 7
arraylength
istore 6
iconst_0
istore 5
goto 9
StackMap locals: sun.security.ssl.CertificateMessage$T13CertificateMessage sun.security.ssl.HandshakeContext byte[] java.security.cert.X509Certificate[] top int int java.security.cert.X509Certificate[]
StackMap stack:
4: aload 7
iload 5
aaload
astore 4
start local 4 5: aload 4
invokevirtual java.security.cert.X509Certificate.getEncoded:()[B
astore 8
start local 8 6: new sun.security.ssl.SSLExtensions
dup
aload 0
invokespecial sun.security.ssl.SSLExtensions.<init>:(Lsun/security/ssl/SSLHandshake$HandshakeMessage;)V
astore 9
start local 9 7: aload 0
getfield sun.security.ssl.CertificateMessage$T13CertificateMessage.certEntries:Ljava/util/List;
new sun.security.ssl.CertificateMessage$CertificateEntry
dup
aload 8
aload 9
invokespecial sun.security.ssl.CertificateMessage$CertificateEntry.<init>:([BLsun/security/ssl/SSLExtensions;)V
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 9 end local 8 end local 4 8: iinc 5 1
StackMap locals:
StackMap stack:
9: iload 5
iload 6
if_icmplt 4
10: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/security/ssl/CertificateMessage$T13CertificateMessage;
0 11 1 context Lsun/security/ssl/HandshakeContext;
0 11 2 requestContext [B
0 11 3 certificates [Ljava/security/cert/X509Certificate;
5 8 4 cert Ljava/security/cert/X509Certificate;
6 8 8 encoded [B
7 8 9 extensions Lsun/security/ssl/SSLExtensions;
Exceptions:
throws javax.net.ssl.SSLException, java.security.cert.CertificateException
MethodParameters:
Name Flags
context
requestContext
certificates
void <init>(sun.security.ssl.HandshakeContext, byte[], java.util.List<sun.security.ssl.CertificateMessage$CertificateEntry>);
descriptor: (Lsun/security/ssl/HandshakeContext;[BLjava/util/List;)V
flags: (0x0000)
Code:
stack=2, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
invokespecial sun.security.ssl.SSLHandshake$HandshakeMessage.<init>:(Lsun/security/ssl/HandshakeContext;)V
1: aload 0
aload 2
invokevirtual byte[].clone:()Ljava/lang/Object;
checkcast byte[]
putfield sun.security.ssl.CertificateMessage$T13CertificateMessage.requestContext:[B
2: aload 0
aload 3
putfield sun.security.ssl.CertificateMessage$T13CertificateMessage.certEntries:Ljava/util/List;
3: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lsun/security/ssl/CertificateMessage$T13CertificateMessage;
0 4 1 handshakeContext Lsun/security/ssl/HandshakeContext;
0 4 2 requestContext [B
0 4 3 certificates Ljava/util/List<Lsun/security/ssl/CertificateMessage$CertificateEntry;>;
Signature: (Lsun/security/ssl/HandshakeContext;[BLjava/util/List<Lsun/security/ssl/CertificateMessage$CertificateEntry;>;)V
MethodParameters:
Name Flags
handshakeContext
requestContext
certificates
void <init>(sun.security.ssl.HandshakeContext, java.nio.ByteBuffer);
descriptor: (Lsun/security/ssl/HandshakeContext;Ljava/nio/ByteBuffer;)V
flags: (0x0000)
Code:
stack=5, locals=8, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
invokespecial sun.security.ssl.SSLHandshake$HandshakeMessage.<init>:(Lsun/security/ssl/HandshakeContext;)V
1: aload 2
invokevirtual java.nio.ByteBuffer.remaining:()I
iconst_4
if_icmpge 7
2: new javax.net.ssl.SSLProtocolException
dup
3: new java.lang.StringBuilder
dup
ldc "Invalid Certificate message: insufficient data (length="
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
4: 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;
5: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
6: invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals: sun.security.ssl.CertificateMessage$T13CertificateMessage sun.security.ssl.HandshakeContext java.nio.ByteBuffer
StackMap stack:
aload 0
aload 2
invokestatic sun.security.ssl.Record.getBytes8:(Ljava/nio/ByteBuffer;)[B
putfield sun.security.ssl.CertificateMessage$T13CertificateMessage.requestContext:[B
8: aload 2
invokevirtual java.nio.ByteBuffer.remaining:()I
iconst_3
if_icmpge 14
9: new javax.net.ssl.SSLProtocolException
dup
10: new java.lang.StringBuilder
dup
ldc "Invalid Certificate message: insufficient certificate entries data (length="
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
11: 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;
12: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
13: invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
athrow
14: StackMap locals:
StackMap stack:
aload 2
invokestatic sun.security.ssl.Record.getInt24:(Ljava/nio/ByteBuffer;)I
istore 3
start local 3 15: iload 3
aload 2
invokevirtual java.nio.ByteBuffer.remaining:()I
if_icmpeq 21
16: new javax.net.ssl.SSLProtocolException
dup
17: new java.lang.StringBuilder
dup
ldc "Invalid Certificate message: incorrect list length (length="
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
18: iload 3
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ")"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
19: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
20: invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
athrow
21: StackMap locals: int
StackMap stack:
aload 1
getfield sun.security.ssl.HandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
22: getstatic sun.security.ssl.SSLHandshake.CERTIFICATE:Lsun/security/ssl/SSLHandshake;
23: invokevirtual sun.security.ssl.SSLConfiguration.getEnabledExtensions:(Lsun/security/ssl/SSLHandshake;)[Lsun/security/ssl/SSLExtension;
24: astore 4
start local 4 25: new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
astore 5
start local 5 26: goto 35
27: StackMap locals: sun.security.ssl.SSLExtension[] java.util.List
StackMap stack:
aload 2
invokestatic sun.security.ssl.Record.getBytes24:(Ljava/nio/ByteBuffer;)[B
astore 6
start local 6 28: aload 6
arraylength
ifne 32
29: new javax.net.ssl.SSLProtocolException
dup
30: ldc "Invalid Certificate message: empty cert_data"
31: invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
athrow
32: StackMap locals: byte[]
StackMap stack:
new sun.security.ssl.SSLExtensions
dup
aload 0
aload 2
aload 4
invokespecial sun.security.ssl.SSLExtensions.<init>:(Lsun/security/ssl/SSLHandshake$HandshakeMessage;Ljava/nio/ByteBuffer;[Lsun/security/ssl/SSLExtension;)V
33: astore 7
start local 7 34: aload 5
new sun.security.ssl.CertificateMessage$CertificateEntry
dup
aload 6
aload 7
invokespecial sun.security.ssl.CertificateMessage$CertificateEntry.<init>:([BLsun/security/ssl/SSLExtensions;)V
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 7 end local 6 35: StackMap locals:
StackMap stack:
aload 2
invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
ifne 27
36: aload 0
aload 5
invokestatic java.util.Collections.unmodifiableList:(Ljava/util/List;)Ljava/util/List;
putfield sun.security.ssl.CertificateMessage$T13CertificateMessage.certEntries:Ljava/util/List;
37: 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 38 0 this Lsun/security/ssl/CertificateMessage$T13CertificateMessage;
0 38 1 handshakeContext Lsun/security/ssl/HandshakeContext;
0 38 2 m Ljava/nio/ByteBuffer;
15 38 3 listLen I
25 38 4 enabledExtensions [Lsun/security/ssl/SSLExtension;
26 38 5 certList Ljava/util/List<Lsun/security/ssl/CertificateMessage$CertificateEntry;>;
28 35 6 encodedCert [B
34 35 7 extensions Lsun/security/ssl/SSLExtensions;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
handshakeContext
m
public sun.security.ssl.SSLHandshake handshakeType();
descriptor: ()Lsun/security/ssl/SSLHandshake;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: getstatic sun.security.ssl.SSLHandshake.CERTIFICATE:Lsun/security/ssl/SSLHandshake;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lsun/security/ssl/CertificateMessage$T13CertificateMessage;
public int messageLength();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=4, args_size=1
start local 0 0: iconst_4
aload 0
getfield sun.security.ssl.CertificateMessage$T13CertificateMessage.requestContext:[B
arraylength
iadd
istore 1
start local 1 1: aload 0
getfield sun.security.ssl.CertificateMessage$T13CertificateMessage.certEntries:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 3
goto 4
StackMap locals: sun.security.ssl.CertificateMessage$T13CertificateMessage int top java.util.Iterator
StackMap stack:
2: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast sun.security.ssl.CertificateMessage$CertificateEntry
astore 2
start local 2 3: iload 1
aload 2
invokevirtual sun.security.ssl.CertificateMessage$CertificateEntry.getEncodedSize:()I
iadd
istore 1
end local 2 4: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
5: iload 1
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lsun/security/ssl/CertificateMessage$T13CertificateMessage;
1 6 1 msgLen I
3 4 2 entry Lsun/security/ssl/CertificateMessage$CertificateEntry;
public void send(sun.security.ssl.HandshakeOutStream);
descriptor: (Lsun/security/ssl/HandshakeOutStream;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=5, args_size=2
start local 0 start local 1 0: iconst_0
istore 2
start local 2 1: aload 0
getfield sun.security.ssl.CertificateMessage$T13CertificateMessage.certEntries:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 4
StackMap locals: sun.security.ssl.CertificateMessage$T13CertificateMessage sun.security.ssl.HandshakeOutStream int top java.util.Iterator
StackMap stack:
2: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast sun.security.ssl.CertificateMessage$CertificateEntry
astore 3
start local 3 3: iload 2
aload 3
invokevirtual sun.security.ssl.CertificateMessage$CertificateEntry.getEncodedSize:()I
iadd
istore 2
end local 3 4: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
5: aload 1
aload 0
getfield sun.security.ssl.CertificateMessage$T13CertificateMessage.requestContext:[B
invokevirtual sun.security.ssl.HandshakeOutStream.putBytes8:([B)V
6: aload 1
iload 2
invokevirtual sun.security.ssl.HandshakeOutStream.putInt24:(I)V
7: aload 0
getfield sun.security.ssl.CertificateMessage$T13CertificateMessage.certEntries:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 14
StackMap locals:
StackMap stack:
8: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast sun.security.ssl.CertificateMessage$CertificateEntry
astore 3
start local 3 9: aload 1
aload 3
getfield sun.security.ssl.CertificateMessage$CertificateEntry.encoded:[B
invokevirtual sun.security.ssl.HandshakeOutStream.putBytes24:([B)V
10: aload 3
getfield sun.security.ssl.CertificateMessage$CertificateEntry.extensions:Lsun/security/ssl/SSLExtensions;
invokevirtual sun.security.ssl.SSLExtensions.length:()I
ifne 13
11: aload 1
iconst_0
invokevirtual sun.security.ssl.HandshakeOutStream.putInt16:(I)V
12: goto 14
13: StackMap locals: sun.security.ssl.CertificateMessage$T13CertificateMessage sun.security.ssl.HandshakeOutStream int sun.security.ssl.CertificateMessage$CertificateEntry java.util.Iterator
StackMap stack:
aload 3
getfield sun.security.ssl.CertificateMessage$CertificateEntry.extensions:Lsun/security/ssl/SSLExtensions;
aload 1
invokevirtual sun.security.ssl.SSLExtensions.send:(Lsun/security/ssl/HandshakeOutStream;)V
end local 3 14: StackMap locals: sun.security.ssl.CertificateMessage$T13CertificateMessage sun.security.ssl.HandshakeOutStream int top java.util.Iterator
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 8
15: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lsun/security/ssl/CertificateMessage$T13CertificateMessage;
0 16 1 hos Lsun/security/ssl/HandshakeOutStream;
1 16 2 entryListLen I
3 4 3 entry Lsun/security/ssl/CertificateMessage$CertificateEntry;
9 14 3 entry Lsun/security/ssl/CertificateMessage$CertificateEntry;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
hos
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 "\"Certificate\": '{'\n \"certificate_request_context\": \"{0}\",\n \"certificate_list\": [{1}\n]\n'}'"
2: getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
3: invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;Ljava/util/Locale;)V
astore 1
start local 1 4: new java.lang.StringBuilder
dup
sipush 512
invokespecial java.lang.StringBuilder.<init>:(I)V
astore 2
start local 2 5: aload 0
getfield sun.security.ssl.CertificateMessage$T13CertificateMessage.certEntries:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 8
StackMap locals: sun.security.ssl.CertificateMessage$T13CertificateMessage java.text.MessageFormat java.lang.StringBuilder top java.util.Iterator
StackMap stack:
6: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast sun.security.ssl.CertificateMessage$CertificateEntry
astore 3
start local 3 7: aload 2
aload 3
invokevirtual sun.security.ssl.CertificateMessage$CertificateEntry.toString:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
pop
end local 3 8: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 6
9: iconst_2
anewarray java.lang.Object
dup
iconst_0
10: aload 0
getfield sun.security.ssl.CertificateMessage$T13CertificateMessage.requestContext:[B
invokestatic sun.security.ssl.Utilities.toHexString:([B)Ljava/lang/String;
aastore
dup
iconst_1
11: aload 2
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;)Ljava/lang/String;
aastore
12: astore 3
start local 3 13: 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 14 0 this Lsun/security/ssl/CertificateMessage$T13CertificateMessage;
4 14 1 messageFormat Ljava/text/MessageFormat;
5 14 2 builder Ljava/lang/StringBuilder;
7 8 3 entry Lsun/security/ssl/CertificateMessage$CertificateEntry;
13 14 3 messageFields [Ljava/lang/Object;
}
SourceFile: "CertificateMessage.java"
NestHost: sun.security.ssl.CertificateMessage
InnerClasses:
final CertificateEntry = sun.security.ssl.CertificateMessage$CertificateEntry of sun.security.ssl.CertificateMessage
final T13CertificateMessage = sun.security.ssl.CertificateMessage$T13CertificateMessage of sun.security.ssl.CertificateMessage
abstract HandshakeMessage = sun.security.ssl.SSLHandshake$HandshakeMessage of sun.security.ssl.SSLHandshake