final class sun.security.ssl.CertificateMessage$T12CertificateConsumer implements sun.security.ssl.SSLConsumer
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.CertificateMessage$T12CertificateConsumer
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$T12CertificateConsumer;
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$T12CertificateMessage
dup
aload 3
aload 2
invokespecial sun.security.ssl.CertificateMessage$T12CertificateMessage.<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$T12CertificateMessage
StackMap stack:
aload 0
aload 1
checkcast sun.security.ssl.ClientHandshakeContext
aload 4
invokevirtual sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate:(Lsun/security/ssl/ClientHandshakeContext;Lsun/security/ssl/CertificateMessage$T12CertificateMessage;)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$T12CertificateConsumer.onCertificate:(Lsun/security/ssl/ServerHandshakeContext;Lsun/security/ssl/CertificateMessage$T12CertificateMessage;)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$T12CertificateConsumer;
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$T12CertificateMessage;
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
context
message
private void onCertificate(sun.security.ssl.ServerHandshakeContext, sun.security.ssl.CertificateMessage$T12CertificateMessage);
descriptor: (Lsun/security/ssl/ServerHandshakeContext;Lsun/security/ssl/CertificateMessage$T12CertificateMessage;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=9, args_size=3
start local 0 start local 1 start local 2 0: aload 2
getfield sun.security.ssl.CertificateMessage$T12CertificateMessage.encodedCertChain:Ljava/util/List;
astore 3
start local 3 1: aload 3
ifnull 2
aload 3
invokeinterface java.util.List.isEmpty:()Z
ifeq 9
2: StackMap locals: java.util.List
StackMap stack:
aload 1
getfield sun.security.ssl.ServerHandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
getfield sun.security.ssl.SSLConfiguration.clientAuthType:Lsun/security/ssl/ClientAuthType;
3: getstatic sun.security.ssl.ClientAuthType.CLIENT_AUTH_REQUESTED:Lsun/security/ssl/ClientAuthType;
4: if_acmpeq 8
5: aload 1
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.BAD_CERTIFICATE:Lsun/security/ssl/Alert;
6: ldc "Empty server certificate chain"
7: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
8: StackMap locals:
StackMap stack:
return
9: StackMap locals:
StackMap stack:
aload 3
invokeinterface java.util.List.size:()I
anewarray java.security.cert.X509Certificate
10: astore 4
start local 4 11: ldc "X.509"
invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
astore 5
start local 5 12: iconst_0
istore 6
start local 6 13: aload 3
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 8
goto 18
StackMap locals: sun.security.ssl.CertificateMessage$T12CertificateConsumer sun.security.ssl.ServerHandshakeContext sun.security.ssl.CertificateMessage$T12CertificateMessage java.util.List java.security.cert.X509Certificate[] java.security.cert.CertificateFactory int top java.util.Iterator
StackMap stack:
14: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast byte[]
astore 7
start local 7 15: aload 4
iload 6
iinc 6 1
aload 5
16: new java.io.ByteArrayInputStream
dup
aload 7
invokespecial java.io.ByteArrayInputStream.<init>:([B)V
17: invokevirtual java.security.cert.CertificateFactory.generateCertificate:(Ljava/io/InputStream;)Ljava/security/cert/Certificate;
checkcast java.security.cert.X509Certificate
aastore
end local 7 18: StackMap locals:
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 14
end local 6 end local 5 19: goto 24
StackMap locals: sun.security.ssl.CertificateMessage$T12CertificateConsumer sun.security.ssl.ServerHandshakeContext sun.security.ssl.CertificateMessage$T12CertificateMessage java.util.List java.security.cert.X509Certificate[]
StackMap stack: java.security.cert.CertificateException
20: astore 5
start local 5 21: aload 1
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.BAD_CERTIFICATE:Lsun/security/ssl/Alert;
22: ldc "Failed to parse server certificates"
aload 5
23: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
end local 5 24: StackMap locals:
StackMap stack:
aload 1
aload 4
invokestatic sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkClientCerts:(Lsun/security/ssl/ServerHandshakeContext;[Ljava/security/cert/X509Certificate;)V
25: aload 1
getfield sun.security.ssl.ServerHandshakeContext.handshakeCredentials:Ljava/util/List;
26: 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
27: invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
28: aload 1
getfield sun.security.ssl.ServerHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
aload 4
invokevirtual sun.security.ssl.SSLSessionImpl.setPeerCertificates:([Ljava/security/cert/X509Certificate;)V
29: return
end local 4 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$T12CertificateConsumer;
0 30 1 shc Lsun/security/ssl/ServerHandshakeContext;
0 30 2 certificateMessage Lsun/security/ssl/CertificateMessage$T12CertificateMessage;
1 30 3 encodedCerts Ljava/util/List<[B>;
11 30 4 x509Certs [Ljava/security/cert/X509Certificate;
12 19 5 cf Ljava/security/cert/CertificateFactory;
13 19 6 i I
15 18 7 encodedCert [B
21 24 5 ce Ljava/security/cert/CertificateException;
Exception table:
from to target type
11 19 20 Class java.security.cert.CertificateException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
shc
certificateMessage
private void onCertificate(sun.security.ssl.ClientHandshakeContext, sun.security.ssl.CertificateMessage$T12CertificateMessage);
descriptor: (Lsun/security/ssl/ClientHandshakeContext;Lsun/security/ssl/CertificateMessage$T12CertificateMessage;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=9, args_size=3
start local 0 start local 1 start local 2 0: aload 2
getfield sun.security.ssl.CertificateMessage$T12CertificateMessage.encodedCertChain:Ljava/util/List;
astore 3
start local 3 1: aload 3
ifnull 2
aload 3
invokeinterface java.util.List.isEmpty:()Z
ifeq 5
2: StackMap locals: java.util.List
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 3
invokeinterface java.util.List.size:()I
anewarray java.security.cert.X509Certificate
6: astore 4
start local 4 7: ldc "X.509"
invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
astore 5
start local 5 8: iconst_0
istore 6
start local 6 9: aload 3
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 8
goto 14
StackMap locals: sun.security.ssl.CertificateMessage$T12CertificateConsumer sun.security.ssl.ClientHandshakeContext sun.security.ssl.CertificateMessage$T12CertificateMessage java.util.List java.security.cert.X509Certificate[] java.security.cert.CertificateFactory int top java.util.Iterator
StackMap stack:
10: aload 8
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast byte[]
astore 7
start local 7 11: aload 4
iload 6
iinc 6 1
aload 5
12: new java.io.ByteArrayInputStream
dup
aload 7
invokespecial java.io.ByteArrayInputStream.<init>:([B)V
13: invokevirtual java.security.cert.CertificateFactory.generateCertificate:(Ljava/io/InputStream;)Ljava/security/cert/Certificate;
checkcast java.security.cert.X509Certificate
aastore
end local 7 14: StackMap locals:
StackMap stack:
aload 8
invokeinterface java.util.Iterator.hasNext:()Z
ifne 10
end local 6 end local 5 15: goto 20
StackMap locals: sun.security.ssl.CertificateMessage$T12CertificateConsumer sun.security.ssl.ClientHandshakeContext sun.security.ssl.CertificateMessage$T12CertificateMessage java.util.List java.security.cert.X509Certificate[]
StackMap stack: java.security.cert.CertificateException
16: astore 5
start local 5 17: aload 1
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.BAD_CERTIFICATE:Lsun/security/ssl/Alert;
18: ldc "Failed to parse server certificates"
aload 5
19: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
end local 5 20: StackMap locals:
StackMap stack:
aload 1
getfield sun.security.ssl.ClientHandshakeContext.reservedServerCerts:[Ljava/security/cert/X509Certificate;
ifnull 31
21: aload 1
getfield sun.security.ssl.ClientHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
getfield sun.security.ssl.SSLSessionImpl.useExtendedMasterSecret:Z
ifne 31
22: aload 1
getfield sun.security.ssl.ClientHandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
getfield sun.security.ssl.SSLConfiguration.identificationProtocol:Ljava/lang/String;
astore 5
start local 5 23: aload 5
ifnull 24
aload 5
invokevirtual java.lang.String.isEmpty:()Z
ifeq 31
24: StackMap locals: java.lang.String
StackMap stack:
aload 4
iconst_0
aaload
25: aload 1
getfield sun.security.ssl.ClientHandshakeContext.reservedServerCerts:[Ljava/security/cert/X509Certificate;
iconst_0
aaload
26: invokestatic sun.security.ssl.CertificateMessage$T12CertificateConsumer.isIdentityEquivalent:(Ljava/security/cert/X509Certificate;Ljava/security/cert/X509Certificate;)Z
27: ifne 31
28: aload 1
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.BAD_CERTIFICATE:Lsun/security/ssl/Alert;
29: ldc "server certificate change is restricted during renegotiation"
30: invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
athrow
end local 5 31: StackMap locals:
StackMap stack:
aload 1
getfield sun.security.ssl.ClientHandshakeContext.staplingActive:Z
ifeq 34
32: aload 1
aload 4
putfield sun.security.ssl.ClientHandshakeContext.deferredCerts:[Ljava/security/cert/X509Certificate;
33: goto 35
34: StackMap locals:
StackMap stack:
aload 1
aload 4
invokestatic sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts:(Lsun/security/ssl/ClientHandshakeContext;[Ljava/security/cert/X509Certificate;)V
35: StackMap locals:
StackMap stack:
aload 1
getfield sun.security.ssl.ClientHandshakeContext.handshakeCredentials:Ljava/util/List;
36: 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
37: invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
38: 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
39: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 40 0 this Lsun/security/ssl/CertificateMessage$T12CertificateConsumer;
0 40 1 chc Lsun/security/ssl/ClientHandshakeContext;
0 40 2 certificateMessage Lsun/security/ssl/CertificateMessage$T12CertificateMessage;
1 40 3 encodedCerts Ljava/util/List<[B>;
7 40 4 x509Certs [Ljava/security/cert/X509Certificate;
8 15 5 cf Ljava/security/cert/CertificateFactory;
9 15 6 i I
11 14 7 encodedCert [B
17 20 5 ce Ljava/security/cert/CertificateException;
23 31 5 identityAlg Ljava/lang/String;
Exception table:
from to target type
7 15 16 Class java.security.cert.CertificateException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
chc
certificateMessage
private static boolean isIdentityEquivalent(java.security.cert.X509Certificate, java.security.cert.X509Certificate);
descriptor: (Ljava/security/cert/X509Certificate;Ljava/security/cert/X509Certificate;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=8, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokevirtual java.security.cert.X509Certificate.equals:(Ljava/lang/Object;)Z
ifeq 2
1: iconst_1
ireturn
2: StackMap locals:
StackMap stack:
aconst_null
astore 2
start local 2 3: aload 0
invokevirtual java.security.cert.X509Certificate.getSubjectAlternativeNames:()Ljava/util/Collection;
astore 2
4: goto 9
StackMap locals: java.security.cert.X509Certificate java.security.cert.X509Certificate java.util.Collection
StackMap stack: java.security.cert.CertificateParsingException
5: pop
6: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 9
ldc "handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 9
7: ldc "Attempt to obtain subjectAltNames extension failed!"
iconst_0
anewarray java.lang.Object
8: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
9: StackMap locals:
StackMap stack:
aconst_null
astore 3
start local 3 10: aload 1
invokevirtual java.security.cert.X509Certificate.getSubjectAlternativeNames:()Ljava/util/Collection;
astore 3
11: goto 16
StackMap locals: java.security.cert.X509Certificate java.security.cert.X509Certificate java.util.Collection java.util.Collection
StackMap stack: java.security.cert.CertificateParsingException
12: pop
13: getstatic sun.security.ssl.SSLLogger.isOn:Z
ifeq 16
ldc "handshake"
invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
ifeq 16
14: ldc "Attempt to obtain subjectAltNames extension failed!"
iconst_0
anewarray java.lang.Object
15: invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
16: StackMap locals:
StackMap stack:
aload 2
ifnull 31
aload 3
ifnull 31
17: aload 2
bipush 7
invokestatic sun.security.ssl.CertificateMessage$T12CertificateConsumer.getSubjectAltNames:(Ljava/util/Collection;I)Ljava/util/Collection;
18: astore 4
start local 4 19: aload 3
bipush 7
invokestatic sun.security.ssl.CertificateMessage$T12CertificateConsumer.getSubjectAltNames:(Ljava/util/Collection;I)Ljava/util/Collection;
20: astore 5
start local 5 21: aload 4
ifnull 24
aload 5
ifnull 24
22: aload 4
aload 5
invokestatic sun.security.ssl.CertificateMessage$T12CertificateConsumer.isEquivalent:(Ljava/util/Collection;Ljava/util/Collection;)Z
ifeq 24
23: iconst_1
ireturn
24: StackMap locals: java.util.Collection java.util.Collection
StackMap stack:
aload 2
iconst_2
invokestatic sun.security.ssl.CertificateMessage$T12CertificateConsumer.getSubjectAltNames:(Ljava/util/Collection;I)Ljava/util/Collection;
25: astore 6
start local 6 26: aload 3
iconst_2
invokestatic sun.security.ssl.CertificateMessage$T12CertificateConsumer.getSubjectAltNames:(Ljava/util/Collection;I)Ljava/util/Collection;
27: astore 7
start local 7 28: aload 6
ifnull 31
aload 7
ifnull 31
29: aload 6
aload 7
invokestatic sun.security.ssl.CertificateMessage$T12CertificateConsumer.isEquivalent:(Ljava/util/Collection;Ljava/util/Collection;)Z
ifeq 31
30: iconst_1
ireturn
end local 7 end local 6 end local 5 end local 4 31: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.security.cert.X509Certificate.getSubjectX500Principal:()Ljavax/security/auth/x500/X500Principal;
astore 4
start local 4 32: aload 1
invokevirtual java.security.cert.X509Certificate.getSubjectX500Principal:()Ljavax/security/auth/x500/X500Principal;
astore 5
start local 5 33: aload 0
invokevirtual java.security.cert.X509Certificate.getIssuerX500Principal:()Ljavax/security/auth/x500/X500Principal;
astore 6
start local 6 34: aload 1
invokevirtual java.security.cert.X509Certificate.getIssuerX500Principal:()Ljavax/security/auth/x500/X500Principal;
astore 7
start local 7 35: aload 4
invokevirtual javax.security.auth.x500.X500Principal.getName:()Ljava/lang/String;
invokevirtual java.lang.String.isEmpty:()Z
ifne 40
36: aload 5
invokevirtual javax.security.auth.x500.X500Principal.getName:()Ljava/lang/String;
invokevirtual java.lang.String.isEmpty:()Z
ifne 40
37: aload 4
aload 5
invokevirtual javax.security.auth.x500.X500Principal.equals:(Ljava/lang/Object;)Z
ifeq 40
38: aload 6
aload 7
invokevirtual javax.security.auth.x500.X500Principal.equals:(Ljava/lang/Object;)Z
ifeq 40
39: iconst_1
ireturn
StackMap locals: java.security.cert.X509Certificate java.security.cert.X509Certificate java.util.Collection java.util.Collection javax.security.auth.x500.X500Principal javax.security.auth.x500.X500Principal javax.security.auth.x500.X500Principal javax.security.auth.x500.X500Principal
StackMap stack:
40: iconst_0
ireturn
end local 7 end local 6 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 41 0 thisCert Ljava/security/cert/X509Certificate;
0 41 1 prevCert Ljava/security/cert/X509Certificate;
3 41 2 thisSubjectAltNames Ljava/util/Collection<Ljava/util/List<*>;>;
10 41 3 prevSubjectAltNames Ljava/util/Collection<Ljava/util/List<*>;>;
19 31 4 thisSubAltIPAddrs Ljava/util/Collection<Ljava/lang/String;>;
21 31 5 prevSubAltIPAddrs Ljava/util/Collection<Ljava/lang/String;>;
26 31 6 thisSubAltDnsNames Ljava/util/Collection<Ljava/lang/String;>;
28 31 7 prevSubAltDnsNames Ljava/util/Collection<Ljava/lang/String;>;
32 41 4 thisSubject Ljavax/security/auth/x500/X500Principal;
33 41 5 prevSubject Ljavax/security/auth/x500/X500Principal;
34 41 6 thisIssuer Ljavax/security/auth/x500/X500Principal;
35 41 7 prevIssuer Ljavax/security/auth/x500/X500Principal;
Exception table:
from to target type
3 4 5 Class java.security.cert.CertificateParsingException
10 11 12 Class java.security.cert.CertificateParsingException
MethodParameters:
Name Flags
thisCert
prevCert
private static java.util.Collection<java.lang.String> getSubjectAltNames(java.util.Collection<java.util.List<?>>, int);
descriptor: (Ljava/util/Collection;I)Ljava/util/Collection;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=7, args_size=2
start local 0 start local 1 0: aconst_null
astore 2
start local 2 1: aload 0
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 4
goto 11
StackMap locals: java.util.Collection int java.util.HashSet top java.util.Iterator
StackMap stack:
2: aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.util.List
astore 3
start local 3 3: aload 3
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast java.lang.Integer
invokevirtual java.lang.Integer.intValue:()I
istore 5
start local 5 4: iload 5
iload 1
if_icmpne 11
5: aload 3
iconst_1
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast java.lang.String
astore 6
start local 6 6: aload 6
ifnull 11
aload 6
invokevirtual java.lang.String.isEmpty:()Z
ifne 11
7: aload 2
ifnonnull 10
8: new java.util.HashSet
dup
aload 0
invokeinterface java.util.Collection.size:()I
invokespecial java.util.HashSet.<init>:(I)V
9: astore 2
10: StackMap locals: java.util.Collection int java.util.HashSet java.util.List java.util.Iterator int java.lang.String
StackMap stack:
aload 2
aload 6
invokevirtual java.util.HashSet.add:(Ljava/lang/Object;)Z
pop
end local 6 end local 5 end local 3 11: StackMap locals: java.util.Collection int java.util.HashSet top java.util.Iterator
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
12: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 subjectAltNames Ljava/util/Collection<Ljava/util/List<*>;>;
0 13 1 type I
1 13 2 subAltDnsNames Ljava/util/HashSet<Ljava/lang/String;>;
3 11 3 subjectAltName Ljava/util/List<*>;
4 11 5 subjectAltNameType I
6 11 6 subAltDnsName Ljava/lang/String;
Signature: (Ljava/util/Collection<Ljava/util/List<*>;>;I)Ljava/util/Collection<Ljava/lang/String;>;
MethodParameters:
Name Flags
subjectAltNames
type
private static boolean isEquivalent(java.util.Collection<java.lang.String>, java.util.Collection<java.lang.String>);
descriptor: (Ljava/util/Collection;Ljava/util/Collection;)Z
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=2, locals=6, args_size=2
start local 0 start local 1 0: aload 0
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 3
goto 7
StackMap locals: java.util.Collection java.util.Collection top java.util.Iterator
StackMap stack:
1: aload 3
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 2
start local 2 2: aload 1
invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
astore 5
goto 6
StackMap locals: java.util.Collection java.util.Collection java.lang.String java.util.Iterator top java.util.Iterator
StackMap stack:
3: aload 5
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast java.lang.String
astore 4
start local 4 4: aload 2
aload 4
invokevirtual java.lang.String.equalsIgnoreCase:(Ljava/lang/String;)Z
ifeq 6
5: iconst_1
ireturn
end local 4 6: StackMap locals:
StackMap stack:
aload 5
invokeinterface java.util.Iterator.hasNext:()Z
ifne 3
end local 2 7: StackMap locals: java.util.Collection java.util.Collection top java.util.Iterator
StackMap stack:
aload 3
invokeinterface java.util.Iterator.hasNext:()Z
ifne 1
8: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 thisSubAltNames Ljava/util/Collection<Ljava/lang/String;>;
0 9 1 prevSubAltNames Ljava/util/Collection<Ljava/lang/String;>;
2 7 2 thisSubAltName Ljava/lang/String;
4 6 4 prevSubAltName Ljava/lang/String;
Signature: (Ljava/util/Collection<Ljava/lang/String;>;Ljava/util/Collection<Ljava/lang/String;>;)Z
MethodParameters:
Name Flags
thisSubAltNames
prevSubAltNames
static void checkServerCerts(sun.security.ssl.ClientHandshakeContext, java.security.cert.X509Certificate[]);
descriptor: (Lsun/security/ssl/ClientHandshakeContext;[Ljava/security/cert/X509Certificate;)V
flags: (0x0008) ACC_STATIC
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.security.ssl.ClientHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
invokevirtual sun.security.ssl.SSLContextImpl.getX509TrustManager:()Ljavax/net/ssl/X509TrustManager;
astore 2
start local 2 1: aload 0
getfield sun.security.ssl.ClientHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
getfield sun.security.ssl.CipherSuite.keyExchange:Lsun/security/ssl/CipherSuite$KeyExchange;
2: getstatic sun.security.ssl.CipherSuite$KeyExchange.K_RSA_EXPORT:Lsun/security/ssl/CipherSuite$KeyExchange;
3: if_acmpeq 7
4: aload 0
getfield sun.security.ssl.ClientHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
getfield sun.security.ssl.CipherSuite.keyExchange:Lsun/security/ssl/CipherSuite$KeyExchange;
5: getstatic sun.security.ssl.CipherSuite$KeyExchange.K_DHE_RSA_EXPORT:Lsun/security/ssl/CipherSuite$KeyExchange;
6: if_acmpne 9
7: StackMap locals: javax.net.ssl.X509TrustManager
StackMap stack:
getstatic sun.security.ssl.CipherSuite$KeyExchange.K_RSA:Lsun/security/ssl/CipherSuite$KeyExchange;
getfield sun.security.ssl.CipherSuite$KeyExchange.name:Ljava/lang/String;
astore 3
start local 3 8: goto 10
end local 3 9: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.ClientHandshakeContext.negotiatedCipherSuite:Lsun/security/ssl/CipherSuite;
getfield sun.security.ssl.CipherSuite.keyExchange:Lsun/security/ssl/CipherSuite$KeyExchange;
getfield sun.security.ssl.CipherSuite$KeyExchange.name:Ljava/lang/String;
astore 3
start local 3 10: StackMap locals: java.lang.String
StackMap stack:
aload 2
instanceof javax.net.ssl.X509ExtendedTrustManager
ifeq 26
11: 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 19
12: 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 4
start local 4 13: aload 2
checkcast javax.net.ssl.X509ExtendedTrustManager
14: aload 1
invokevirtual java.security.cert.X509Certificate[].clone:()Ljava/lang/Object;
checkcast java.security.cert.X509Certificate[]
15: aload 3
16: aload 4
17: invokevirtual javax.net.ssl.X509ExtendedTrustManager.checkServerTrusted:([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljavax/net/ssl/SSLEngine;)V
end local 4 18: goto 29
19: StackMap locals:
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 4
start local 4 20: aload 2
checkcast javax.net.ssl.X509ExtendedTrustManager
21: aload 1
invokevirtual java.security.cert.X509Certificate[].clone:()Ljava/lang/Object;
checkcast java.security.cert.X509Certificate[]
22: aload 3
23: aload 4
24: invokevirtual javax.net.ssl.X509ExtendedTrustManager.checkServerTrusted:([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/net/Socket;)V
end local 4 25: goto 29
26: StackMap locals:
StackMap stack:
new java.security.cert.CertificateException
dup
27: ldc "Improper X509TrustManager implementation"
28: invokespecial java.security.cert.CertificateException.<init>:(Ljava/lang/String;)V
athrow
29: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.ClientHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
aload 1
invokevirtual sun.security.ssl.SSLSessionImpl.setPeerCertificates:([Ljava/security/cert/X509Certificate;)V
30: goto 33
StackMap locals:
StackMap stack: java.security.cert.CertificateException
31: astore 4
start local 4 32: aload 0
getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
aload 0
aload 4
invokestatic sun.security.ssl.CertificateMessage$T12CertificateConsumer.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 33: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 34 0 chc Lsun/security/ssl/ClientHandshakeContext;
0 34 1 certs [Ljava/security/cert/X509Certificate;
1 34 2 tm Ljavax/net/ssl/X509TrustManager;
8 9 3 keyExchangeString Ljava/lang/String;
10 34 3 keyExchangeString Ljava/lang/String;
13 18 4 engine Ljavax/net/ssl/SSLEngine;
20 25 4 socket Ljavax/net/ssl/SSLSocket;
32 33 4 ce Ljava/security/cert/CertificateException;
Exception table:
from to target type
10 30 31 Class java.security.cert.CertificateException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
chc
certs
private static void checkClientCerts(sun.security.ssl.ServerHandshakeContext, java.security.cert.X509Certificate[]);
descriptor: (Lsun/security/ssl/ServerHandshakeContext;[Ljava/security/cert/X509Certificate;)V
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=8, args_size=2
start local 0 start local 1 0: aload 0
getfield sun.security.ssl.ServerHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
invokevirtual sun.security.ssl.SSLContextImpl.getX509TrustManager:()Ljavax/net/ssl/X509TrustManager;
astore 2
start local 2 1: aload 1
iconst_0
aaload
invokevirtual java.security.cert.X509Certificate.getPublicKey:()Ljava/security/PublicKey;
astore 3
start local 3 2: aload 3
invokeinterface java.security.PublicKey.getAlgorithm:()Ljava/lang/String;
astore 4
start local 4 3: aload 4
dup
astore 6
invokevirtual java.lang.String.hashCode:()I
lookupswitch { // 4
2206: 4
67986: 5
81440: 6
1775481508: 7
default: 10
}
StackMap locals: sun.security.ssl.ServerHandshakeContext java.security.cert.X509Certificate[] javax.net.ssl.X509TrustManager java.security.PublicKey java.lang.String top java.lang.String
StackMap stack:
4: aload 6
ldc "EC"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 8
goto 10
StackMap locals:
StackMap stack:
5: aload 6
ldc "DSA"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 8
goto 10
StackMap locals:
StackMap stack:
6: aload 6
ldc "RSA"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 8
goto 10
StackMap locals:
StackMap stack:
7: aload 6
ldc "RSASSA-PSS"
invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
ifne 8
goto 10
8: StackMap locals:
StackMap stack:
aload 4
astore 5
start local 5 9: goto 11
end local 5 10: StackMap locals:
StackMap stack:
ldc "UNKNOWN"
astore 5
start local 5 11: StackMap locals: sun.security.ssl.ServerHandshakeContext java.security.cert.X509Certificate[] javax.net.ssl.X509TrustManager java.security.PublicKey java.lang.String java.lang.String
StackMap stack:
aload 2
instanceof javax.net.ssl.X509ExtendedTrustManager
ifeq 27
12: 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 20
13: 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 14: aload 2
checkcast javax.net.ssl.X509ExtendedTrustManager
15: aload 1
invokevirtual java.security.cert.X509Certificate[].clone:()Ljava/lang/Object;
checkcast java.security.cert.X509Certificate[]
16: aload 5
17: aload 7
18: invokevirtual javax.net.ssl.X509ExtendedTrustManager.checkClientTrusted:([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljavax/net/ssl/SSLEngine;)V
end local 7 19: goto 32
20: StackMap locals:
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 21: aload 2
checkcast javax.net.ssl.X509ExtendedTrustManager
22: aload 1
invokevirtual java.security.cert.X509Certificate[].clone:()Ljava/lang/Object;
checkcast java.security.cert.X509Certificate[]
23: aload 5
24: aload 7
25: invokevirtual javax.net.ssl.X509ExtendedTrustManager.checkClientTrusted:([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/net/Socket;)V
end local 7 26: goto 32
27: StackMap locals:
StackMap stack:
new java.security.cert.CertificateException
dup
28: ldc "Improper X509TrustManager implementation"
29: invokespecial java.security.cert.CertificateException.<init>:(Ljava/lang/String;)V
athrow
30: StackMap locals:
StackMap stack: java.security.cert.CertificateException
astore 7
start local 7 31: aload 0
getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
getstatic sun.security.ssl.Alert.CERTIFICATE_UNKNOWN:Lsun/security/ssl/Alert;
aload 7
invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
athrow
end local 7 32: StackMap locals:
StackMap stack:
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 33 0 shc Lsun/security/ssl/ServerHandshakeContext;
0 33 1 certs [Ljava/security/cert/X509Certificate;
1 33 2 tm Ljavax/net/ssl/X509TrustManager;
2 33 3 key Ljava/security/PublicKey;
3 33 4 keyAlgorithm Ljava/lang/String;
9 10 5 authType Ljava/lang/String;
11 33 5 authType Ljava/lang/String;
14 19 7 engine Ljavax/net/ssl/SSLEngine;
21 26 7 socket Ljavax/net/ssl/SSLSocket;
31 32 7 ce Ljava/security/cert/CertificateException;
Exception table:
from to target type
11 30 30 Class java.security.cert.CertificateException
Exceptions:
throws java.io.IOException
MethodParameters:
Name Flags
shc
certs
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 T12CertificateConsumer = sun.security.ssl.CertificateMessage$T12CertificateConsumer of sun.security.ssl.CertificateMessage
final T12CertificateMessage = sun.security.ssl.CertificateMessage$T12CertificateMessage of sun.security.ssl.CertificateMessage
final KeyExchange = sun.security.ssl.CipherSuite$KeyExchange of sun.security.ssl.CipherSuite
final X509Credentials = sun.security.ssl.X509Authentication$X509Credentials of sun.security.ssl.X509Authentication