final class sun.security.ssl.CertificateMessage$T13CertificateConsumer implements sun.security.ssl.SSLConsumer
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.CertificateMessage$T13CertificateConsumer
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 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/CertificateMessage$T13CertificateConsumer;
public void consume(sun.security.ssl.ConnectionContext, java.nio.ByteBuffer);
descriptor: (Lsun/security/ssl/ConnectionContext;Ljava/nio/ByteBuffer;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 1
checkcast sun.security.ssl.HandshakeContext
astore 3
start local 3 1: aload 3
getfield sun.security.ssl.HandshakeContext.handshakeConsumers:Ljava/util/LinkedHashMap;
getstatic sun.security.ssl.SSLHandshake.CERTIFICATE:Lsun/security/ssl/SSLHandshake;
getfield sun.security.ssl.SSLHandshake.id:B
invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
invokevirtual java.util.LinkedHashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
2: new sun.security.ssl.CertificateMessage$T13CertificateMessage
dup
aload 3
aload 2
invokespecial sun.security.ssl.CertificateMessage$T13CertificateMessage.<init>:(Lsun/security/ssl/HandshakeContext;Ljava/nio/ByteBuffer;)V
astore 4
start local 4 3: aload 3
getfield sun.security.ssl.HandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
getfield sun.security.ssl.SSLConfiguration.isClientMode:Z
ifeq 9
4: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 7
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 7
5: ldc "Consuming server Certificate handshake message"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 4
aastore
6: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
7: StackMap locals: sun.security.ssl.HandshakeContext sun.security.ssl.CertificateMessage$T13CertificateMessage
StackMap stack:
aload 0
aload 1
checkcast sun.security.ssl.ClientHandshakeContext
aload 4
invokevirtual sun.security.ssl.CertificateMessage$T13CertificateConsumer.onConsumeCertificate:(Lsun/security/ssl/ClientHandshakeContext;Lsun/security/ssl/CertificateMessage$T13CertificateMessage;)V
8: goto 13
9: StackMap locals:
StackMap stack:
getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 12
ldc "ssl,handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 12
10: ldc "Consuming client Certificate handshake message"
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 4
aastore
11: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
12: StackMap locals:
StackMap stack:
aload 0
aload 1
checkcast sun.security.ssl.ServerHandshakeContext
aload 4
invokevirtual sun.security.ssl.CertificateMessage$T13CertificateConsumer.onConsumeCertificate:(Lsun/security/ssl/ServerHandshakeContext;Lsun/security/ssl/CertificateMessage$T13CertificateMessage;)V
13: StackMap locals:
StackMap stack:
return
end local 4 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$T13CertificateConsumer;
0 14 1 context Lsun/security/ssl/ConnectionContext;
0 14 2 message Ljava/nio/ByteBuffer;
1 14 3 hc Lsun/security/ssl/HandshakeContext;
3 14 4 cm Lsun/security/ssl/CertificateMessage$T13CertificateMessage;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
context
message
private void onConsumeCertificate(sun.security.ssl.ServerHandshakeContext, sun.security.ssl.CertificateMessage$T13CertificateMessage);
descriptor: (Lsun/security/ssl/ServerHandshakeContext;Lsun/security/ssl/CertificateMessage$T13CertificateMessage;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 2
getfield sun.security.ssl.CertificateMessage$T13CertificateMessage.certEntries:Ljava/util/List;
ifnull 2
1: aload 2
getfield sun.security.ssl.CertificateMessage$T13CertificateMessage.certEntries:Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifeq 10
2: StackMap locals:
StackMap stack:
aload 1
getfield sun.security.ssl.ServerHandshakeContext.handshakeConsumers:Ljava/util/LinkedHashMap;
3: getstatic sun.security.ssl.SSLHandshake.CERTIFICATE_VERIFY:Lsun/security/ssl/SSLHandshake;
getfield sun.security.ssl.SSLHandshake.id:B
invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
4: invokevirtual java.util.LinkedHashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
pop
5: aload 1
getfield sun.security.ssl.ServerHandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
getfield sun.security.ssl.SSLConfiguration.clientAuthType:Lsun/security/ssl/ClientAuthType;
getstatic sun.security.ssl.ClientAuthType.CLIENT_AUTH_REQUIRED:Lsun/security/ssl/ClientAuthType;
if_acmpne 9
6: aload 1
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.BAD_CERTIFICATE:Lsun/security/ssl/Alert;
7: ldc "Empty client certificate chain"
8: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
9: StackMap locals:
StackMap stack:
return
10: StackMap locals:
StackMap stack:
aload 1
aload 2
getfield sun.security.ssl.CertificateMessage$T13CertificateMessage.certEntries:Ljava/util/List;
invokestatic sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkClientCerts:(Lsun/security/ssl/ServerHandshakeContext;Ljava/util/List;)[Ljava/security/cert/X509Certificate;
11: astore 3
start local 3 12: aload 1
getfield sun.security.ssl.ServerHandshakeContext.handshakeCredentials:Ljava/util/List;
13: new sun.security.ssl.X509Authentication$X509Credentials
dup
aload 3
iconst_0
aaload
invokevirtual java.security.cert.X509Certificate.getPublicKey:()Ljava/security/PublicKey;
aload 3
invokespecial sun.security.ssl.X509Authentication$X509Credentials.<init>:(Ljava/security/PublicKey;[Ljava/security/cert/X509Certificate;)V
14: invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
15: aload 1
getfield sun.security.ssl.ServerHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
aload 3
invokevirtual sun.security.ssl.SSLSessionImpl.setPeerCertificates:([Ljava/security/cert/X509Certificate;)V
16: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lsun/security/ssl/CertificateMessage$T13CertificateConsumer;
0 17 1 shc Lsun/security/ssl/ServerHandshakeContext;
0 17 2 certificateMessage Lsun/security/ssl/CertificateMessage$T13CertificateMessage;
12 17 3 cliCerts [Ljava/security/cert/X509Certificate;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
shc
certificateMessage
private void onConsumeCertificate(sun.security.ssl.ClientHandshakeContext, sun.security.ssl.CertificateMessage$T13CertificateMessage);
descriptor: (Lsun/security/ssl/ClientHandshakeContext;Lsun/security/ssl/CertificateMessage$T13CertificateMessage;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 2
getfield sun.security.ssl.CertificateMessage$T13CertificateMessage.certEntries:Ljava/util/List;
ifnull 2
1: aload 2
getfield sun.security.ssl.CertificateMessage$T13CertificateMessage.certEntries:Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifeq 5
2: StackMap locals:
StackMap stack:
aload 1
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.BAD_CERTIFICATE:Lsun/security/ssl/Alert;
3: ldc "Empty server certificate chain"
4: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
5: StackMap locals:
StackMap stack:
aload 1
getfield sun.security.ssl.ClientHandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
getstatic sun.security.ssl.SSLHandshake.CERTIFICATE:Lsun/security/ssl/SSLHandshake;
invokevirtual sun.security.ssl.SSLConfiguration.getEnabledExtensions:(Lsun/security/ssl/SSLHandshake;)[Lsun/security/ssl/SSLExtension;
6: astore 3
start local 3 7: aload 2
getfield sun.security.ssl.CertificateMessage$T13CertificateMessage.certEntries:Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 5
goto 10
StackMap locals: sun.security.ssl.CertificateMessage$T13CertificateConsumer sun.security.ssl.ClientHandshakeContext sun.security.ssl.CertificateMessage$T13CertificateMessage sun.security.ssl.SSLExtension[] top java.util.Iterator
StackMap stack:
8: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast sun.security.ssl.CertificateMessage$CertificateEntry
astore 4
start local 4 9: aload 4
getfield sun.security.ssl.CertificateMessage$CertificateEntry.extensions:Lsun/security/ssl/SSLExtensions;
aload 1
aload 3
invokevirtual sun.security.ssl.SSLExtensions.consumeOnLoad:(Lsun/security/ssl/HandshakeContext;[Lsun/security/ssl/SSLExtension;)V
end local 4 10: StackMap locals:
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 8
11: aload 1
aload 2
getfield sun.security.ssl.CertificateMessage$T13CertificateMessage.certEntries:Ljava/util/List;
invokestatic sun.security.ssl.CertificateMessage$T13CertificateConsumer.checkServerCerts:(Lsun/security/ssl/ClientHandshakeContext;Ljava/util/List;)[Ljava/security/cert/X509Certificate;
12: astore 4
start local 4 13: aload 1
getfield sun.security.ssl.ClientHandshakeContext.handshakeCredentials:Ljava/util/List;
14: new sun.security.ssl.X509Authentication$X509Credentials
dup
aload 4
iconst_0
aaload
invokevirtual java.security.cert.X509Certificate.getPublicKey:()Ljava/security/PublicKey;
aload 4
invokespecial sun.security.ssl.X509Authentication$X509Credentials.<init>:(Ljava/security/PublicKey;[Ljava/security/cert/X509Certificate;)V
15: invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
16: aload 1
getfield sun.security.ssl.ClientHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
aload 4
invokevirtual sun.security.ssl.SSLSessionImpl.setPeerCertificates:([Ljava/security/cert/X509Certificate;)V
17: return
end local 4 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$T13CertificateConsumer;
0 18 1 chc Lsun/security/ssl/ClientHandshakeContext;
0 18 2 certificateMessage Lsun/security/ssl/CertificateMessage$T13CertificateMessage;
7 18 3 enabledExtensions [Lsun/security/ssl/SSLExtension;
9 10 4 certEnt Lsun/security/ssl/CertificateMessage$CertificateEntry;
13 18 4 srvCerts [Ljava/security/cert/X509Certificate;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
chc
certificateMessage
private static java.security.cert.X509Certificate[] checkClientCerts(sun.security.ssl.ServerHandshakeContext, java.util.List<sun.security.ssl.CertificateMessage$CertificateEntry>);
descriptor: (Lsun/security/ssl/ServerHandshakeContext;Ljava/util/List;)[Ljava/security/cert/X509Certificate;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=8, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface java.util.List.size:()I
anewarray java.security.cert.X509Certificate
1: astore 2
start local 2 2: ldc "X.509"
invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
astore 3
start local 3 3: iconst_0
istore 4
start local 4 4: aload 1
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 6
goto 9
StackMap locals: sun.security.ssl.ServerHandshakeContext java.util.List java.security.cert.X509Certificate[] java.security.cert.CertificateFactory int top java.util.Iterator
StackMap stack:
5: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast sun.security.ssl.CertificateMessage$CertificateEntry
astore 5
start local 5 6: aload 2
iload 4
iinc 4 1
aload 3
7: new java.io.ByteArrayInputStream
dup
aload 5
getfield sun.security.ssl.CertificateMessage$CertificateEntry.encoded:[B
invokespecial java.io.ByteArrayInputStream.<init>:([B)V
8: invokevirtual java.security.cert.CertificateFactory.generateCertificate:(Ljava/io/InputStream;)Ljava/security/cert/Certificate;
checkcast java.security.cert.X509Certificate
aastore
end local 5 9: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 5
end local 4 end local 3 10: goto 15
StackMap locals: sun.security.ssl.ServerHandshakeContext java.util.List java.security.cert.X509Certificate[]
StackMap stack: java.security.cert.CertificateException
11: astore 3
start local 3 12: aload 0
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.BAD_CERTIFICATE:Lsun/security/ssl/Alert;
13: ldc "Failed to parse server certificates"
aload 3
14: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
end local 3 15: StackMap locals:
StackMap stack:
aload 2
iconst_0
aaload
invokevirtual java.security.cert.X509Certificate.getPublicKey:()Ljava/security/PublicKey;
invokeinterface java.security.PublicKey.getAlgorithm:()Ljava/lang/String;
astore 3
start local 3 16: aload 3
dup
astore 5
invokevirtual java.lang.String.hashCode:()I
lookupswitch { // 4
2206: 17
67986: 18
81440: 19
1775481508: 20
default: 23
}
StackMap locals: sun.security.ssl.ServerHandshakeContext java.util.List java.security.cert.X509Certificate[] java.lang.String top java.lang.String
StackMap stack:
17: aload 5
ldc "EC"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 21
goto 23
StackMap locals:
StackMap stack:
18: aload 5
ldc "DSA"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 21
goto 23
StackMap locals:
StackMap stack:
19: aload 5
ldc "RSA"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 21
goto 23
StackMap locals:
StackMap stack:
20: aload 5
ldc "RSASSA-PSS"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 21
goto 23
21: StackMap locals:
StackMap stack:
aload 3
astore 4
start local 4 22: goto 24
end local 4 23: StackMap locals:
StackMap stack:
ldc "UNKNOWN"
astore 4
start local 4 24: StackMap locals: sun.security.ssl.ServerHandshakeContext java.util.List java.security.cert.X509Certificate[] java.lang.String java.lang.String
StackMap stack:
aload 0
getfield sun.security.ssl.ServerHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
invokevirtual sun.security.ssl.SSLContextImpl.getX509TrustManager:()Ljavax/net/ssl/X509TrustManager;
astore 6
start local 6 25: aload 6
instanceof javax.net.ssl.X509ExtendedTrustManager
ifeq 41
26: aload 0
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getfield sun.security.ssl.TransportContext.transport:Lsun/security/ssl/SSLTransport;
instanceof javax.net.ssl.SSLEngine
ifeq 34
27: aload 0
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getfield sun.security.ssl.TransportContext.transport:Lsun/security/ssl/SSLTransport;
checkcast javax.net.ssl.SSLEngine
astore 7
start local 7 28: aload 6
checkcast javax.net.ssl.X509ExtendedTrustManager
29: aload 2
invokevirtual java.security.cert.X509Certificate[].clone:()Ljava/lang/Object;
checkcast java.security.cert.X509Certificate[]
30: aload 4
31: aload 7
32: invokevirtual javax.net.ssl.X509ExtendedTrustManager.checkClientTrusted:([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljavax/net/ssl/SSLEngine;)V
end local 7 33: goto 44
34: StackMap locals: sun.security.ssl.ServerHandshakeContext java.util.List java.security.cert.X509Certificate[] java.lang.String java.lang.String top javax.net.ssl.X509TrustManager
StackMap stack:
aload 0
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getfield sun.security.ssl.TransportContext.transport:Lsun/security/ssl/SSLTransport;
checkcast javax.net.ssl.SSLSocket
astore 7
start local 7 35: aload 6
checkcast javax.net.ssl.X509ExtendedTrustManager
36: aload 2
invokevirtual java.security.cert.X509Certificate[].clone:()Ljava/lang/Object;
checkcast java.security.cert.X509Certificate[]
37: aload 4
38: aload 7
39: invokevirtual javax.net.ssl.X509ExtendedTrustManager.checkClientTrusted:([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/net/Socket;)V
end local 7 40: goto 44
41: StackMap locals:
StackMap stack:
new java.security.cert.CertificateException
dup
42: ldc "Improper X509TrustManager implementation"
43: invokespecial java.security.cert.CertificateException.<init>:(Ljava/lang/String;)V
athrow
44: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.ServerHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
aload 2
invokevirtual sun.security.ssl.SSLSessionImpl.setPeerCertificates:([Ljava/security/cert/X509Certificate;)V
end local 6 45: goto 48
StackMap locals: sun.security.ssl.ServerHandshakeContext java.util.List java.security.cert.X509Certificate[] java.lang.String java.lang.String
StackMap stack: java.security.cert.CertificateException
46: astore 6
start local 6 47: aload 0
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.CERTIFICATE_UNKNOWN:Lsun/security/ssl/Alert;
aload 6
invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
end local 6 48: StackMap locals:
StackMap stack:
aload 2
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 49 0 shc Lsun/security/ssl/ServerHandshakeContext;
0 49 1 certEntries Ljava/util/List<Lsun/security/ssl/CertificateMessage$CertificateEntry;>;
2 49 2 certs [Ljava/security/cert/X509Certificate;
3 10 3 cf Ljava/security/cert/CertificateFactory;
4 10 4 i I
6 9 5 entry Lsun/security/ssl/CertificateMessage$CertificateEntry;
12 15 3 ce Ljava/security/cert/CertificateException;
16 49 3 keyAlgorithm Ljava/lang/String;
22 23 4 authType Ljava/lang/String;
24 49 4 authType Ljava/lang/String;
25 45 6 tm Ljavax/net/ssl/X509TrustManager;
28 33 7 engine Ljavax/net/ssl/SSLEngine;
35 40 7 socket Ljavax/net/ssl/SSLSocket;
47 48 6 ce Ljava/security/cert/CertificateException;
Exception table:
from to target type
2 10 11 Class java.security.cert.CertificateException
24 45 46 Class java.security.cert.CertificateException
Exceptions:
throws java.io.IOException
Signature: (Lsun/security/ssl/ServerHandshakeContext;Ljava/util/List<Lsun/security/ssl/CertificateMessage$CertificateEntry;>;)[Ljava/security/cert/X509Certificate;
MethodParameters:
Name Flags
shc
certEntries
private static java.security.cert.X509Certificate[] checkServerCerts(sun.security.ssl.ClientHandshakeContext, java.util.List<sun.security.ssl.CertificateMessage$CertificateEntry>);
descriptor: (Lsun/security/ssl/ClientHandshakeContext;Ljava/util/List;)[Ljava/security/cert/X509Certificate;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=6, locals=7, args_size=2
start local 0 start local 1 0: aload 1
invokeinterface java.util.List.size:()I
anewarray java.security.cert.X509Certificate
1: astore 2
start local 2 2: ldc "X.509"
invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
astore 3
start local 3 3: iconst_0
istore 4
start local 4 4: aload 1
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 6
goto 9
StackMap locals: sun.security.ssl.ClientHandshakeContext java.util.List java.security.cert.X509Certificate[] java.security.cert.CertificateFactory int top java.util.Iterator
StackMap stack:
5: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast sun.security.ssl.CertificateMessage$CertificateEntry
astore 5
start local 5 6: aload 2
iload 4
iinc 4 1
aload 3
7: new java.io.ByteArrayInputStream
dup
aload 5
getfield sun.security.ssl.CertificateMessage$CertificateEntry.encoded:[B
invokespecial java.io.ByteArrayInputStream.<init>:([B)V
8: invokevirtual java.security.cert.CertificateFactory.generateCertificate:(Ljava/io/InputStream;)Ljava/security/cert/Certificate;
checkcast java.security.cert.X509Certificate
aastore
end local 5 9: StackMap locals:
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 5
end local 4 end local 3 10: goto 15
StackMap locals: sun.security.ssl.ClientHandshakeContext java.util.List java.security.cert.X509Certificate[]
StackMap stack: java.security.cert.CertificateException
11: astore 3
start local 3 12: aload 0
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.BAD_CERTIFICATE:Lsun/security/ssl/Alert;
13: ldc "Failed to parse server certificates"
aload 3
14: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
end local 3 15: StackMap locals:
StackMap stack:
ldc "UNKNOWN"
astore 3
start local 3 16: aload 0
getfield sun.security.ssl.ClientHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
invokevirtual sun.security.ssl.SSLContextImpl.getX509TrustManager:()Ljavax/net/ssl/X509TrustManager;
astore 4
start local 4 17: aload 4
instanceof javax.net.ssl.X509ExtendedTrustManager
ifeq 33
18: aload 0
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getfield sun.security.ssl.TransportContext.transport:Lsun/security/ssl/SSLTransport;
instanceof javax.net.ssl.SSLEngine
ifeq 26
19: aload 0
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getfield sun.security.ssl.TransportContext.transport:Lsun/security/ssl/SSLTransport;
checkcast javax.net.ssl.SSLEngine
astore 5
start local 5 20: aload 4
checkcast javax.net.ssl.X509ExtendedTrustManager
21: aload 2
invokevirtual java.security.cert.X509Certificate[].clone:()Ljava/lang/Object;
checkcast java.security.cert.X509Certificate[]
22: aload 3
23: aload 5
24: invokevirtual javax.net.ssl.X509ExtendedTrustManager.checkServerTrusted:([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljavax/net/ssl/SSLEngine;)V
end local 5 25: goto 36
26: StackMap locals: java.lang.String javax.net.ssl.X509TrustManager
StackMap stack:
aload 0
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getfield sun.security.ssl.TransportContext.transport:Lsun/security/ssl/SSLTransport;
checkcast javax.net.ssl.SSLSocket
astore 5
start local 5 27: aload 4
checkcast javax.net.ssl.X509ExtendedTrustManager
28: aload 2
invokevirtual java.security.cert.X509Certificate[].clone:()Ljava/lang/Object;
checkcast java.security.cert.X509Certificate[]
29: aload 3
30: aload 5
31: invokevirtual javax.net.ssl.X509ExtendedTrustManager.checkServerTrusted:([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/net/Socket;)V
end local 5 32: goto 36
33: StackMap locals:
StackMap stack:
new java.security.cert.CertificateException
dup
34: ldc "Improper X509TrustManager implementation"
35: invokespecial java.security.cert.CertificateException.<init>:(Ljava/lang/String;)V
athrow
36: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.ClientHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
aload 2
invokevirtual sun.security.ssl.SSLSessionImpl.setPeerCertificates:([Ljava/security/cert/X509Certificate;)V
end local 4 37: goto 40
StackMap locals: sun.security.ssl.ClientHandshakeContext java.util.List java.security.cert.X509Certificate[] java.lang.String
StackMap stack: java.security.cert.CertificateException
38: astore 4
start local 4 39: aload 0
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
aload 0
aload 4
invokestatic sun.security.ssl.CertificateMessage$T13CertificateConsumer.getCertificateAlert:(Lsun/security/ssl/ClientHandshakeContext;Ljava/security/cert/CertificateException;)Lsun/security/ssl/Alert;
aload 4
invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
end local 4 40: StackMap locals:
StackMap stack:
aload 2
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 41 0 chc Lsun/security/ssl/ClientHandshakeContext;
0 41 1 certEntries Ljava/util/List<Lsun/security/ssl/CertificateMessage$CertificateEntry;>;
2 41 2 certs [Ljava/security/cert/X509Certificate;
3 10 3 cf Ljava/security/cert/CertificateFactory;
4 10 4 i I
6 9 5 entry Lsun/security/ssl/CertificateMessage$CertificateEntry;
12 15 3 ce Ljava/security/cert/CertificateException;
16 41 3 authType Ljava/lang/String;
17 37 4 tm Ljavax/net/ssl/X509TrustManager;
20 25 5 engine Ljavax/net/ssl/SSLEngine;
27 32 5 socket Ljavax/net/ssl/SSLSocket;
39 40 4 ce Ljava/security/cert/CertificateException;
Exception table:
from to target type
2 10 11 Class java.security.cert.CertificateException
16 37 38 Class java.security.cert.CertificateException
Exceptions:
throws java.io.IOException
Signature: (Lsun/security/ssl/ClientHandshakeContext;Ljava/util/List<Lsun/security/ssl/CertificateMessage$CertificateEntry;>;)[Ljava/security/cert/X509Certificate;
MethodParameters:
Name Flags
chc
certEntries
private static sun.security.ssl.Alert getCertificateAlert(sun.security.ssl.ClientHandshakeContext, java.security.cert.CertificateException);
descriptor: (Lsun/security/ssl/ClientHandshakeContext;Ljava/security/cert/CertificateException;)Lsun/security/ssl/Alert;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=6, args_size=2
start local 0 start local 1 0: getstatic sun.security.ssl.Alert.CERTIFICATE_UNKNOWN:Lsun/security/ssl/Alert;
astore 2
start local 2 1: aload 1
invokevirtual java.security.cert.CertificateException.getCause:()Ljava/lang/Throwable;
astore 3
start local 3 2: aload 3
instanceof java.security.cert.CertPathValidatorException
ifeq 17
3: aload 3
checkcast java.security.cert.CertPathValidatorException
4: astore 4
start local 4 5: aload 4
invokevirtual java.security.cert.CertPathValidatorException.getReason:()Ljava/security/cert/CertPathValidatorException$Reason;
astore 5
start local 5 6: aload 5
getstatic java.security.cert.CertPathValidatorException$BasicReason.REVOKED:Ljava/security/cert/CertPathValidatorException$BasicReason;
if_acmpne 12
7: aload 0
getfield sun.security.ssl.ClientHandshakeContext.staplingActive:Z
ifeq 9
8: getstatic sun.security.ssl.Alert.BAD_CERT_STATUS_RESPONSE:Lsun/security/ssl/Alert;
goto 10
9: StackMap locals: sun.security.ssl.ClientHandshakeContext java.security.cert.CertificateException sun.security.ssl.Alert java.lang.Throwable java.security.cert.CertPathValidatorException java.security.cert.CertPathValidatorException$Reason
StackMap stack:
getstatic sun.security.ssl.Alert.CERTIFICATE_REVOKED:Lsun/security/ssl/Alert;
10: StackMap locals:
StackMap stack: sun.security.ssl.Alert
astore 2
11: goto 17
12: StackMap locals:
StackMap stack:
aload 5
getstatic java.security.cert.CertPathValidatorException$BasicReason.UNDETERMINED_REVOCATION_STATUS:Ljava/security/cert/CertPathValidatorException$BasicReason;
if_acmpne 17
13: aload 0
getfield sun.security.ssl.ClientHandshakeContext.staplingActive:Z
ifeq 15
14: getstatic sun.security.ssl.Alert.BAD_CERT_STATUS_RESPONSE:Lsun/security/ssl/Alert;
goto 16
15: StackMap locals:
StackMap stack:
getstatic sun.security.ssl.Alert.CERTIFICATE_UNKNOWN:Lsun/security/ssl/Alert;
16: StackMap locals:
StackMap stack: sun.security.ssl.Alert
astore 2
end local 5 end local 4 17: StackMap locals:
StackMap stack:
aload 2
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 chc Lsun/security/ssl/ClientHandshakeContext;
0 18 1 cexc Ljava/security/cert/CertificateException;
1 18 2 alert Lsun/security/ssl/Alert;
2 18 3 baseCause Ljava/lang/Throwable;
5 17 4 cpve Ljava/security/cert/CertPathValidatorException;
6 17 5 reason Ljava/security/cert/CertPathValidatorException$Reason;
MethodParameters:
Name Flags
chc
cexc
}
SourceFile: "CertificateMessage.java"
NestHost: sun.security.ssl.CertificateMessage
InnerClasses:
public final BasicReason = java.security.cert.CertPathValidatorException$BasicReason of java.security.cert.CertPathValidatorException
public abstract Reason = java.security.cert.CertPathValidatorException$Reason of java.security.cert.CertPathValidatorException
final CertificateEntry = sun.security.ssl.CertificateMessage$CertificateEntry of sun.security.ssl.CertificateMessage
private final T13CertificateConsumer = sun.security.ssl.CertificateMessage$T13CertificateConsumer of sun.security.ssl.CertificateMessage
final T13CertificateMessage = sun.security.ssl.CertificateMessage$T13CertificateMessage of sun.security.ssl.CertificateMessage
final X509Credentials = sun.security.ssl.X509Authentication$X509Credentials of sun.security.ssl.X509Authentication