final class sun.security.ssl.CertificateMessage$T12CertificateMessage 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$T12CertificateMessage
super_class: sun.security.ssl.SSLHandshake$HandshakeMessage
{
final java.util.List<byte[]> encodedCertChain;
descriptor: Ljava/util/List;
flags: (0x0010) ACC_FINAL
Signature: Ljava/util/List<[B>;
void <init>(sun.security.ssl.HandshakeContext, java.security.cert.X509Certificate[]);
descriptor: (Lsun/security/ssl/HandshakeContext;[Ljava/security/cert/X509Certificate;)V
flags: (0x0000)
Code:
stack=5, locals=9, 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: new java.util.ArrayList
dup
aload 2
arraylength
invokespecial java.util.ArrayList.<init>:(I)V
astore 3
start local 3 2: aload 2
dup
astore 7
arraylength
istore 6
iconst_0
istore 5
goto 15
StackMap locals: sun.security.ssl.CertificateMessage$T12CertificateMessage sun.security.ssl.HandshakeContext java.security.cert.X509Certificate[] java.util.List top int int java.security.cert.X509Certificate[]
StackMap stack:
3: aload 7
iload 5
aaload
astore 4
start local 4 4: aload 3
aload 4
invokevirtual java.security.cert.X509Certificate.getEncoded:()[B
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
5: goto 14
StackMap locals: sun.security.ssl.CertificateMessage$T12CertificateMessage sun.security.ssl.HandshakeContext java.security.cert.X509Certificate[] java.util.List java.security.cert.X509Certificate int int java.security.cert.X509Certificate[]
StackMap stack: java.security.cert.CertificateEncodingException
6: astore 8
start local 8 7: aload 1
getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
8: getstatic sun.security.ssl.Alert.INTERNAL_ERROR:Lsun/security/ssl/Alert;
9: new java.lang.StringBuilder
dup
ldc "Could not encode certificate ("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
10: aload 4
invokevirtual java.security.cert.X509Certificate.getSubjectX500Principal:()Ljavax/security/auth/x500/X500Principal;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
ldc ")"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
11: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
12: aload 8
13: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
end local 8 end local 4 14: StackMap locals: sun.security.ssl.CertificateMessage$T12CertificateMessage sun.security.ssl.HandshakeContext java.security.cert.X509Certificate[] java.util.List top int int java.security.cert.X509Certificate[]
StackMap stack:
iinc 5 1
StackMap locals:
StackMap stack:
15: iload 5
iload 6
if_icmplt 3
16: aload 0
aload 3
putfield sun.security.ssl.CertificateMessage$T12CertificateMessage.encodedCertChain:Ljava/util/List;
17: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lsun/security/ssl/CertificateMessage$T12CertificateMessage;
0 18 1 handshakeContext Lsun/security/ssl/HandshakeContext;
0 18 2 certChain [Ljava/security/cert/X509Certificate;
2 18 3 encodedCerts Ljava/util/List<[B>;
4 14 4 cert Ljava/security/cert/X509Certificate;
7 14 8 cee Ljava/security/cert/CertificateEncodingException;
Exception table:
from to target type
4 5 6 Class java.security.cert.CertificateEncodingException
Exceptions:
throws javax.net.ssl.SSLException
MethodParameters:
Name Flags
handshakeContext
certChain
void <init>(sun.security.ssl.HandshakeContext, java.nio.ByteBuffer);
descriptor: (Lsun/security/ssl/HandshakeContext;Ljava/nio/ByteBuffer;)V
flags: (0x0000)
Code:
stack=3, locals=6, 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
invokestatic sun.security.ssl.Record.getInt24:(Ljava/nio/ByteBuffer;)I
istore 3
start local 3 2: iload 3
aload 2
invokevirtual java.nio.ByteBuffer.remaining:()I
if_icmple 7
3: aload 1
getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
4: getstatic sun.security.ssl.Alert.ILLEGAL_PARAMETER:Lsun/security/ssl/Alert;
5: ldc "Error parsing certificate message:no sufficient data"
6: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
7: StackMap locals: sun.security.ssl.CertificateMessage$T12CertificateMessage sun.security.ssl.HandshakeContext java.nio.ByteBuffer int
StackMap stack:
iload 3
ifle 16
8: new java.util.LinkedList
dup
invokespecial java.util.LinkedList.<init>:()V
astore 4
start local 4 9: goto 13
10: StackMap locals: java.util.List
StackMap stack:
aload 2
invokestatic sun.security.ssl.Record.getBytes24:(Ljava/nio/ByteBuffer;)[B
astore 5
start local 5 11: iload 3
iconst_3
aload 5
arraylength
iadd
isub
istore 3
12: aload 4
aload 5
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 5 13: StackMap locals:
StackMap stack:
iload 3
ifgt 10
14: aload 0
aload 4
putfield sun.security.ssl.CertificateMessage$T12CertificateMessage.encodedCertChain:Ljava/util/List;
end local 4 15: goto 17
16: StackMap locals:
StackMap stack:
aload 0
invokestatic java.util.Collections.emptyList:()Ljava/util/List;
putfield sun.security.ssl.CertificateMessage$T12CertificateMessage.encodedCertChain:Ljava/util/List;
17: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lsun/security/ssl/CertificateMessage$T12CertificateMessage;
0 18 1 handshakeContext Lsun/security/ssl/HandshakeContext;
0 18 2 m Ljava/nio/ByteBuffer;
2 18 3 listLen I
9 15 4 encodedCerts Ljava/util/List<[B>;
11 13 5 encodedCert [B
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$T12CertificateMessage;
public int messageLength();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=1
start local 0 0: iconst_3
istore 1
start local 1 1: aload 0
getfield sun.security.ssl.CertificateMessage$T12CertificateMessage.encodedCertChain:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 3
goto 4
StackMap locals: sun.security.ssl.CertificateMessage$T12CertificateMessage int top java.util.Iterator
StackMap stack:
2: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast byte[]
astore 2
start local 2 3: iload 1
aload 2
arraylength
iconst_3
iadd
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$T12CertificateMessage;
1 6 1 msgLen I
3 4 2 encodedCert [B
public void send(sun.security.ssl.HandshakeOutStream);
descriptor: (Lsun/security/ssl/HandshakeOutStream;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, 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$T12CertificateMessage.encodedCertChain:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 4
StackMap locals: sun.security.ssl.CertificateMessage$T12CertificateMessage sun.security.ssl.HandshakeOutStream int top java.util.Iterator
StackMap stack:
2: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast byte[]
astore 3
start local 3 3: iload 2
aload 3
arraylength
iconst_3
iadd
iadd
istore 2
end local 3 4: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
5: aload 1
iload 2
invokevirtual sun.security.ssl.HandshakeOutStream.putInt24:(I)V
6: aload 0
getfield sun.security.ssl.CertificateMessage$T12CertificateMessage.encodedCertChain:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 9
StackMap locals:
StackMap stack:
7: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast byte[]
astore 3
start local 3 8: aload 1
aload 3
invokevirtual sun.security.ssl.HandshakeOutStream.putBytes24:([B)V
end local 3 9: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 7
10: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/security/ssl/CertificateMessage$T12CertificateMessage;
0 11 1 hos Lsun/security/ssl/HandshakeOutStream;
1 11 2 listLen I
3 4 3 encodedCert [B
8 9 3 encodedCert [B
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=7, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.CertificateMessage$T12CertificateMessage.encodedCertChain:Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifeq 2
1: ldc "\"Certificates\": <empty list>"
areturn
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.CertificateMessage$T12CertificateMessage.encodedCertChain:Ljava/util/List;
invokeinterface java.util.List.size:()I
anewarray java.lang.Object
astore 1
start local 1 3: ldc "X.509"
invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
astore 2
start local 2 4: iconst_0
istore 3
start local 3 5: aload 0
getfield sun.security.ssl.CertificateMessage$T12CertificateMessage.encodedCertChain:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 5
goto 14
StackMap locals: sun.security.ssl.CertificateMessage$T12CertificateMessage java.lang.Object[] java.security.cert.CertificateFactory int top java.util.Iterator
StackMap stack:
6: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast byte[]
astore 4
start local 4 7: aload 2
8: new java.io.ByteArrayInputStream
dup
aload 4
invokespecial java.io.ByteArrayInputStream.<init>:([B)V
9: invokevirtual java.security.cert.CertificateFactory.generateCertificate:(Ljava/io/InputStream;)Ljava/security/cert/Certificate;
checkcast java.security.cert.X509Certificate
astore 6
start local 6 10: goto 13
end local 6 StackMap locals: sun.security.ssl.CertificateMessage$T12CertificateMessage java.lang.Object[] java.security.cert.CertificateFactory int byte[] java.util.Iterator
StackMap stack: java.security.cert.CertificateException
11: pop
12: aload 4
astore 6
start local 6 13: StackMap locals: java.lang.Object
StackMap stack:
aload 1
iload 3
iinc 3 1
aload 6
aastore
end local 6 end local 4 14: StackMap locals: sun.security.ssl.CertificateMessage$T12CertificateMessage java.lang.Object[] java.security.cert.CertificateFactory int top java.util.Iterator
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 6
end local 3 end local 2 15: goto 22
StackMap locals: sun.security.ssl.CertificateMessage$T12CertificateMessage java.lang.Object[]
StackMap stack: java.security.cert.CertificateException
16: pop
17: iconst_0
istore 2
start local 2 18: aload 0
getfield sun.security.ssl.CertificateMessage$T12CertificateMessage.encodedCertChain:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 4
goto 21
StackMap locals: sun.security.ssl.CertificateMessage$T12CertificateMessage java.lang.Object[] int top java.util.Iterator
StackMap stack:
19: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast byte[]
astore 3
start local 3 20: aload 1
iload 2
iinc 2 1
aload 3
aastore
end local 3 21: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 19
end local 2 22: StackMap locals: sun.security.ssl.CertificateMessage$T12CertificateMessage java.lang.Object[]
StackMap stack:
new java.text.MessageFormat
dup
23: ldc "\"Certificates\": [\n{0}\n]"
24: getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
25: invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;Ljava/util/Locale;)V
astore 2
start local 2 26: iconst_1
anewarray java.lang.Object
dup
iconst_0
27: aload 1
invokestatic sun.security.ssl.SSLLogger.toString:([Ljava/lang/Object;)Ljava/lang/String;
aastore
28: astore 3
start local 3 29: aload 2
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 30 0 this Lsun/security/ssl/CertificateMessage$T12CertificateMessage;
3 30 1 x509Certs [Ljava/lang/Object;
4 15 2 cf Ljava/security/cert/CertificateFactory;
5 15 3 i I
7 14 4 encodedCert [B
10 11 6 obj Ljava/lang/Object;
13 14 6 obj Ljava/lang/Object;
18 22 2 i I
20 21 3 encodedCert [B
26 30 2 messageFormat Ljava/text/MessageFormat;
29 30 3 messageFields [Ljava/lang/Object;
Exception table:
from to target type
7 10 11 Class java.security.cert.CertificateException
3 15 16 Class java.security.cert.CertificateException
}
SourceFile: "CertificateMessage.java"
NestHost: sun.security.ssl.CertificateMessage
InnerClasses:
final T12CertificateMessage = sun.security.ssl.CertificateMessage$T12CertificateMessage of sun.security.ssl.CertificateMessage
abstract HandshakeMessage = sun.security.ssl.SSLHandshake$HandshakeMessage of sun.security.ssl.SSLHandshake