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 // sun.security.ssl.CertificateMessage$T13CertificateConsumer this
         0: .line 1140
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 1142
            return
        end local 0 // sun.security.ssl.CertificateMessage$T13CertificateConsumer this
      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 // sun.security.ssl.CertificateMessage$T13CertificateConsumer this
        start local 1 // sun.security.ssl.ConnectionContext context
        start local 2 // java.nio.ByteBuffer message
         0: .line 1148
            aload 1 /* context */
            checkcast sun.security.ssl.HandshakeContext
            astore 3 /* hc */
        start local 3 // sun.security.ssl.HandshakeContext hc
         1: .line 1151
            aload 3 /* hc */
            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: .line 1152
            new sun.security.ssl.CertificateMessage$T13CertificateMessage
            dup
            aload 3 /* hc */
            aload 2 /* message */
            invokespecial sun.security.ssl.CertificateMessage$T13CertificateMessage.<init>:(Lsun/security/ssl/HandshakeContext;Ljava/nio/ByteBuffer;)V
            astore 4 /* cm */
        start local 4 // sun.security.ssl.CertificateMessage$T13CertificateMessage cm
         3: .line 1153
            aload 3 /* hc */
            getfield sun.security.ssl.HandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
            getfield sun.security.ssl.SSLConfiguration.isClientMode:Z
            ifeq 9
         4: .line 1154
            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: .line 1156
            ldc "Consuming server Certificate handshake message"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* cm */
            aastore
         6: .line 1155
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
         7: .line 1158
      StackMap locals: sun.security.ssl.HandshakeContext sun.security.ssl.CertificateMessage$T13CertificateMessage
      StackMap stack:
            aload 0 /* this */
            aload 1 /* context */
            checkcast sun.security.ssl.ClientHandshakeContext
            aload 4 /* cm */
            invokevirtual sun.security.ssl.CertificateMessage$T13CertificateConsumer.onConsumeCertificate:(Lsun/security/ssl/ClientHandshakeContext;Lsun/security/ssl/CertificateMessage$T13CertificateMessage;)V
         8: .line 1159
            goto 13
         9: .line 1160
      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: .line 1162
            ldc "Consuming client Certificate handshake message"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 4 /* cm */
            aastore
        11: .line 1161
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
        12: .line 1164
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* context */
            checkcast sun.security.ssl.ServerHandshakeContext
            aload 4 /* cm */
            invokevirtual sun.security.ssl.CertificateMessage$T13CertificateConsumer.onConsumeCertificate:(Lsun/security/ssl/ServerHandshakeContext;Lsun/security/ssl/CertificateMessage$T13CertificateMessage;)V
        13: .line 1166
      StackMap locals:
      StackMap stack:
            return
        end local 4 // sun.security.ssl.CertificateMessage$T13CertificateMessage cm
        end local 3 // sun.security.ssl.HandshakeContext hc
        end local 2 // java.nio.ByteBuffer message
        end local 1 // sun.security.ssl.ConnectionContext context
        end local 0 // sun.security.ssl.CertificateMessage$T13CertificateConsumer this
      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 // sun.security.ssl.CertificateMessage$T13CertificateConsumer this
        start local 1 // sun.security.ssl.ServerHandshakeContext shc
        start local 2 // sun.security.ssl.CertificateMessage$T13CertificateMessage certificateMessage
         0: .line 1170
            aload 2 /* certificateMessage */
            getfield sun.security.ssl.CertificateMessage$T13CertificateMessage.certEntries:Ljava/util/List;
            ifnull 2
         1: .line 1171
            aload 2 /* certificateMessage */
            getfield sun.security.ssl.CertificateMessage$T13CertificateMessage.certEntries:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 10
         2: .line 1174
      StackMap locals:
      StackMap stack:
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeConsumers:Ljava/util/LinkedHashMap;
         3: .line 1175
            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: .line 1174
            invokevirtual java.util.LinkedHashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         5: .line 1176
            aload 1 /* shc */
            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: .line 1177
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.BAD_CERTIFICATE:Lsun/security/ssl/Alert;
         7: .line 1178
            ldc "Empty client certificate chain"
         8: .line 1177
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
         9: .line 1181
      StackMap locals:
      StackMap stack:
            return
        10: .line 1187
      StackMap locals:
      StackMap stack:
            aload 1 /* shc */
            aload 2 /* certificateMessage */
            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: .line 1186
            astore 3 /* cliCerts */
        start local 3 // java.security.cert.X509Certificate[] cliCerts
        12: .line 1192
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeCredentials:Ljava/util/List;
        13: .line 1193
            new sun.security.ssl.X509Authentication$X509Credentials
            dup
            aload 3 /* cliCerts */
            iconst_0
            aaload
            invokevirtual java.security.cert.X509Certificate.getPublicKey:()Ljava/security/PublicKey;
            aload 3 /* cliCerts */
            invokespecial sun.security.ssl.X509Authentication$X509Credentials.<init>:(Ljava/security/PublicKey;[Ljava/security/cert/X509Certificate;)V
        14: .line 1192
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        15: .line 1194
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            aload 3 /* cliCerts */
            invokevirtual sun.security.ssl.SSLSessionImpl.setPeerCertificates:([Ljava/security/cert/X509Certificate;)V
        16: .line 1195
            return
        end local 3 // java.security.cert.X509Certificate[] cliCerts
        end local 2 // sun.security.ssl.CertificateMessage$T13CertificateMessage certificateMessage
        end local 1 // sun.security.ssl.ServerHandshakeContext shc
        end local 0 // sun.security.ssl.CertificateMessage$T13CertificateConsumer this
      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 // sun.security.ssl.CertificateMessage$T13CertificateConsumer this
        start local 1 // sun.security.ssl.ClientHandshakeContext chc
        start local 2 // sun.security.ssl.CertificateMessage$T13CertificateMessage certificateMessage
         0: .line 1199
            aload 2 /* certificateMessage */
            getfield sun.security.ssl.CertificateMessage$T13CertificateMessage.certEntries:Ljava/util/List;
            ifnull 2
         1: .line 1200
            aload 2 /* certificateMessage */
            getfield sun.security.ssl.CertificateMessage$T13CertificateMessage.certEntries:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 5
         2: .line 1201
      StackMap locals:
      StackMap stack:
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.BAD_CERTIFICATE:Lsun/security/ssl/Alert;
         3: .line 1202
            ldc "Empty server certificate chain"
         4: .line 1201
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
         5: .line 1208
      StackMap locals:
      StackMap stack:
            aload 1 /* chc */
            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: .line 1207
            astore 3 /* enabledExtensions */
        start local 3 // sun.security.ssl.SSLExtension[] enabledExtensions
         7: .line 1209
            aload 2 /* certificateMessage */
            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 /* certEnt */
        start local 4 // sun.security.ssl.CertificateMessage$CertificateEntry certEnt
         9: .line 1210
            aload 4 /* certEnt */
            getfield sun.security.ssl.CertificateMessage$CertificateEntry.extensions:Lsun/security/ssl/SSLExtensions;
            aload 1 /* chc */
            aload 3 /* enabledExtensions */
            invokevirtual sun.security.ssl.SSLExtensions.consumeOnLoad:(Lsun/security/ssl/HandshakeContext;[Lsun/security/ssl/SSLExtension;)V
        end local 4 // sun.security.ssl.CertificateMessage$CertificateEntry certEnt
        10: .line 1209
      StackMap locals:
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        11: .line 1215
            aload 1 /* chc */
            aload 2 /* certificateMessage */
            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: .line 1214
            astore 4 /* srvCerts */
        start local 4 // java.security.cert.X509Certificate[] srvCerts
        13: .line 1220
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakeCredentials:Ljava/util/List;
        14: .line 1221
            new sun.security.ssl.X509Authentication$X509Credentials
            dup
            aload 4 /* srvCerts */
            iconst_0
            aaload
            invokevirtual java.security.cert.X509Certificate.getPublicKey:()Ljava/security/PublicKey;
            aload 4 /* srvCerts */
            invokespecial sun.security.ssl.X509Authentication$X509Credentials.<init>:(Ljava/security/PublicKey;[Ljava/security/cert/X509Certificate;)V
        15: .line 1220
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        16: .line 1222
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            aload 4 /* srvCerts */
            invokevirtual sun.security.ssl.SSLSessionImpl.setPeerCertificates:([Ljava/security/cert/X509Certificate;)V
        17: .line 1223
            return
        end local 4 // java.security.cert.X509Certificate[] srvCerts
        end local 3 // sun.security.ssl.SSLExtension[] enabledExtensions
        end local 2 // sun.security.ssl.CertificateMessage$T13CertificateMessage certificateMessage
        end local 1 // sun.security.ssl.ClientHandshakeContext chc
        end local 0 // sun.security.ssl.CertificateMessage$T13CertificateConsumer this
      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 // sun.security.ssl.ServerHandshakeContext shc
        start local 1 // java.util.List certEntries
         0: .line 1229
            aload 1 /* certEntries */
            invokeinterface java.util.List.size:()I
            anewarray java.security.cert.X509Certificate
         1: .line 1228
            astore 2 /* certs */
        start local 2 // java.security.cert.X509Certificate[] certs
         2: .line 1231
            ldc "X.509"
            invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
            astore 3 /* cf */
        start local 3 // java.security.cert.CertificateFactory cf
         3: .line 1232
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         4: .line 1233
            aload 1 /* certEntries */
            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 /* entry */
        start local 5 // sun.security.ssl.CertificateMessage$CertificateEntry entry
         6: .line 1234
            aload 2 /* certs */
            iload 4 /* i */
            iinc 4 /* i */ 1
            aload 3 /* cf */
         7: .line 1235
            new java.io.ByteArrayInputStream
            dup
            aload 5 /* entry */
            getfield sun.security.ssl.CertificateMessage$CertificateEntry.encoded:[B
            invokespecial java.io.ByteArrayInputStream.<init>:([B)V
         8: .line 1234
            invokevirtual java.security.cert.CertificateFactory.generateCertificate:(Ljava/io/InputStream;)Ljava/security/cert/Certificate;
            checkcast java.security.cert.X509Certificate
            aastore
        end local 5 // sun.security.ssl.CertificateMessage$CertificateEntry entry
         9: .line 1233
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        end local 4 // int i
        end local 3 // java.security.cert.CertificateFactory cf
        10: .line 1237
            goto 15
      StackMap locals: sun.security.ssl.ServerHandshakeContext java.util.List java.security.cert.X509Certificate[]
      StackMap stack: java.security.cert.CertificateException
        11: astore 3 /* ce */
        start local 3 // java.security.cert.CertificateException ce
        12: .line 1238
            aload 0 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.BAD_CERTIFICATE:Lsun/security/ssl/Alert;
        13: .line 1239
            ldc "Failed to parse server certificates"
            aload 3 /* ce */
        14: .line 1238
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
            athrow
        end local 3 // java.security.cert.CertificateException ce
        15: .line 1243
      StackMap locals:
      StackMap stack:
            aload 2 /* certs */
            iconst_0
            aaload
            invokevirtual java.security.cert.X509Certificate.getPublicKey:()Ljava/security/PublicKey;
            invokeinterface java.security.PublicKey.getAlgorithm:()Ljava/lang/String;
            astore 3 /* keyAlgorithm */
        start local 3 // java.lang.String keyAlgorithm
        16: .line 1245
            aload 3 /* keyAlgorithm */
            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: .line 1250
      StackMap locals:
      StackMap stack:
            aload 3 /* keyAlgorithm */
            astore 4 /* authType */
        start local 4 // java.lang.String authType
        22: .line 1251
            goto 24
        end local 4 // java.lang.String authType
        23: .line 1254
      StackMap locals:
      StackMap stack:
            ldc "UNKNOWN"
            astore 4 /* authType */
        start local 4 // java.lang.String authType
        24: .line 1258
      StackMap locals: sun.security.ssl.ServerHandshakeContext java.util.List java.security.cert.X509Certificate[] java.lang.String java.lang.String
      StackMap stack:
            aload 0 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            invokevirtual sun.security.ssl.SSLContextImpl.getX509TrustManager:()Ljavax/net/ssl/X509TrustManager;
            astore 6 /* tm */
        start local 6 // javax.net.ssl.X509TrustManager tm
        25: .line 1259
            aload 6 /* tm */
            instanceof javax.net.ssl.X509ExtendedTrustManager
            ifeq 41
        26: .line 1260
            aload 0 /* shc */
            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: .line 1261
            aload 0 /* shc */
            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 /* engine */
        start local 7 // javax.net.ssl.SSLEngine engine
        28: .line 1262
            aload 6 /* tm */
            checkcast javax.net.ssl.X509ExtendedTrustManager
        29: .line 1263
            aload 2 /* certs */
            invokevirtual java.security.cert.X509Certificate[].clone:()Ljava/lang/Object;
            checkcast java.security.cert.X509Certificate[]
        30: .line 1264
            aload 4 /* authType */
        31: .line 1265
            aload 7 /* engine */
        32: .line 1262
            invokevirtual javax.net.ssl.X509ExtendedTrustManager.checkClientTrusted:([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljavax/net/ssl/SSLEngine;)V
        end local 7 // javax.net.ssl.SSLEngine engine
        33: .line 1266
            goto 44
        34: .line 1267
      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 /* shc */
            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 /* socket */
        start local 7 // javax.net.ssl.SSLSocket socket
        35: .line 1268
            aload 6 /* tm */
            checkcast javax.net.ssl.X509ExtendedTrustManager
        36: .line 1269
            aload 2 /* certs */
            invokevirtual java.security.cert.X509Certificate[].clone:()Ljava/lang/Object;
            checkcast java.security.cert.X509Certificate[]
        37: .line 1270
            aload 4 /* authType */
        38: .line 1271
            aload 7 /* socket */
        39: .line 1268
            invokevirtual javax.net.ssl.X509ExtendedTrustManager.checkClientTrusted:([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/net/Socket;)V
        end local 7 // javax.net.ssl.SSLSocket socket
        40: .line 1273
            goto 44
        41: .line 1276
      StackMap locals:
      StackMap stack:
            new java.security.cert.CertificateException
            dup
        42: .line 1277
            ldc "Improper X509TrustManager implementation"
        43: .line 1276
            invokespecial java.security.cert.CertificateException.<init>:(Ljava/lang/String;)V
            athrow
        44: .line 1282
      StackMap locals:
      StackMap stack:
            aload 0 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            aload 2 /* certs */
            invokevirtual sun.security.ssl.SSLSessionImpl.setPeerCertificates:([Ljava/security/cert/X509Certificate;)V
        end local 6 // javax.net.ssl.X509TrustManager tm
        45: .line 1283
            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 /* ce */
        start local 6 // java.security.cert.CertificateException ce
        47: .line 1284
            aload 0 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.CERTIFICATE_UNKNOWN:Lsun/security/ssl/Alert;
            aload 6 /* ce */
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
            athrow
        end local 6 // java.security.cert.CertificateException ce
        48: .line 1287
      StackMap locals:
      StackMap stack:
            aload 2 /* certs */
            areturn
        end local 4 // java.lang.String authType
        end local 3 // java.lang.String keyAlgorithm
        end local 2 // java.security.cert.X509Certificate[] certs
        end local 1 // java.util.List certEntries
        end local 0 // sun.security.ssl.ServerHandshakeContext shc
      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 // sun.security.ssl.ClientHandshakeContext chc
        start local 1 // java.util.List certEntries
         0: .line 1294
            aload 1 /* certEntries */
            invokeinterface java.util.List.size:()I
            anewarray java.security.cert.X509Certificate
         1: .line 1293
            astore 2 /* certs */
        start local 2 // java.security.cert.X509Certificate[] certs
         2: .line 1296
            ldc "X.509"
            invokestatic java.security.cert.CertificateFactory.getInstance:(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
            astore 3 /* cf */
        start local 3 // java.security.cert.CertificateFactory cf
         3: .line 1297
            iconst_0
            istore 4 /* i */
        start local 4 // int i
         4: .line 1298
            aload 1 /* certEntries */
            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 /* entry */
        start local 5 // sun.security.ssl.CertificateMessage$CertificateEntry entry
         6: .line 1299
            aload 2 /* certs */
            iload 4 /* i */
            iinc 4 /* i */ 1
            aload 3 /* cf */
         7: .line 1300
            new java.io.ByteArrayInputStream
            dup
            aload 5 /* entry */
            getfield sun.security.ssl.CertificateMessage$CertificateEntry.encoded:[B
            invokespecial java.io.ByteArrayInputStream.<init>:([B)V
         8: .line 1299
            invokevirtual java.security.cert.CertificateFactory.generateCertificate:(Ljava/io/InputStream;)Ljava/security/cert/Certificate;
            checkcast java.security.cert.X509Certificate
            aastore
        end local 5 // sun.security.ssl.CertificateMessage$CertificateEntry entry
         9: .line 1298
      StackMap locals:
      StackMap stack:
            aload 6
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        end local 4 // int i
        end local 3 // java.security.cert.CertificateFactory cf
        10: .line 1302
            goto 15
      StackMap locals: sun.security.ssl.ClientHandshakeContext java.util.List java.security.cert.X509Certificate[]
      StackMap stack: java.security.cert.CertificateException
        11: astore 3 /* ce */
        start local 3 // java.security.cert.CertificateException ce
        12: .line 1303
            aload 0 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.BAD_CERTIFICATE:Lsun/security/ssl/Alert;
        13: .line 1304
            ldc "Failed to parse server certificates"
            aload 3 /* ce */
        14: .line 1303
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
            athrow
        end local 3 // java.security.cert.CertificateException ce
        15: .line 1311
      StackMap locals:
      StackMap stack:
            ldc "UNKNOWN"
            astore 3 /* authType */
        start local 3 // java.lang.String authType
        16: .line 1314
            aload 0 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.sslContext:Lsun/security/ssl/SSLContextImpl;
            invokevirtual sun.security.ssl.SSLContextImpl.getX509TrustManager:()Ljavax/net/ssl/X509TrustManager;
            astore 4 /* tm */
        start local 4 // javax.net.ssl.X509TrustManager tm
        17: .line 1315
            aload 4 /* tm */
            instanceof javax.net.ssl.X509ExtendedTrustManager
            ifeq 33
        18: .line 1316
            aload 0 /* chc */
            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: .line 1317
            aload 0 /* chc */
            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 /* engine */
        start local 5 // javax.net.ssl.SSLEngine engine
        20: .line 1318
            aload 4 /* tm */
            checkcast javax.net.ssl.X509ExtendedTrustManager
        21: .line 1319
            aload 2 /* certs */
            invokevirtual java.security.cert.X509Certificate[].clone:()Ljava/lang/Object;
            checkcast java.security.cert.X509Certificate[]
        22: .line 1320
            aload 3 /* authType */
        23: .line 1321
            aload 5 /* engine */
        24: .line 1318
            invokevirtual javax.net.ssl.X509ExtendedTrustManager.checkServerTrusted:([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljavax/net/ssl/SSLEngine;)V
        end local 5 // javax.net.ssl.SSLEngine engine
        25: .line 1322
            goto 36
        26: .line 1323
      StackMap locals: java.lang.String javax.net.ssl.X509TrustManager
      StackMap stack:
            aload 0 /* chc */
            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 /* socket */
        start local 5 // javax.net.ssl.SSLSocket socket
        27: .line 1324
            aload 4 /* tm */
            checkcast javax.net.ssl.X509ExtendedTrustManager
        28: .line 1325
            aload 2 /* certs */
            invokevirtual java.security.cert.X509Certificate[].clone:()Ljava/lang/Object;
            checkcast java.security.cert.X509Certificate[]
        29: .line 1326
            aload 3 /* authType */
        30: .line 1327
            aload 5 /* socket */
        31: .line 1324
            invokevirtual javax.net.ssl.X509ExtendedTrustManager.checkServerTrusted:([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/net/Socket;)V
        end local 5 // javax.net.ssl.SSLSocket socket
        32: .line 1329
            goto 36
        33: .line 1332
      StackMap locals:
      StackMap stack:
            new java.security.cert.CertificateException
            dup
        34: .line 1333
            ldc "Improper X509TrustManager implementation"
        35: .line 1332
            invokespecial java.security.cert.CertificateException.<init>:(Ljava/lang/String;)V
            athrow
        36: .line 1338
      StackMap locals:
      StackMap stack:
            aload 0 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            aload 2 /* certs */
            invokevirtual sun.security.ssl.SSLSessionImpl.setPeerCertificates:([Ljava/security/cert/X509Certificate;)V
        end local 4 // javax.net.ssl.X509TrustManager tm
        37: .line 1339
            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 /* ce */
        start local 4 // java.security.cert.CertificateException ce
        39: .line 1340
            aload 0 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            aload 0 /* chc */
            aload 4 /* ce */
            invokestatic sun.security.ssl.CertificateMessage$T13CertificateConsumer.getCertificateAlert:(Lsun/security/ssl/ClientHandshakeContext;Ljava/security/cert/CertificateException;)Lsun/security/ssl/Alert;
            aload 4 /* ce */
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
            athrow
        end local 4 // java.security.cert.CertificateException ce
        40: .line 1343
      StackMap locals:
      StackMap stack:
            aload 2 /* certs */
            areturn
        end local 3 // java.lang.String authType
        end local 2 // java.security.cert.X509Certificate[] certs
        end local 1 // java.util.List certEntries
        end local 0 // sun.security.ssl.ClientHandshakeContext chc
      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 // sun.security.ssl.ClientHandshakeContext chc
        start local 1 // java.security.cert.CertificateException cexc
         0: .line 1359
            getstatic sun.security.ssl.Alert.CERTIFICATE_UNKNOWN:Lsun/security/ssl/Alert;
            astore 2 /* alert */
        start local 2 // sun.security.ssl.Alert alert
         1: .line 1361
            aload 1 /* cexc */
            invokevirtual java.security.cert.CertificateException.getCause:()Ljava/lang/Throwable;
            astore 3 /* baseCause */
        start local 3 // java.lang.Throwable baseCause
         2: .line 1362
            aload 3 /* baseCause */
            instanceof java.security.cert.CertPathValidatorException
            ifeq 17
         3: .line 1364
            aload 3 /* baseCause */
            checkcast java.security.cert.CertPathValidatorException
         4: .line 1363
            astore 4 /* cpve */
        start local 4 // java.security.cert.CertPathValidatorException cpve
         5: .line 1365
            aload 4 /* cpve */
            invokevirtual java.security.cert.CertPathValidatorException.getReason:()Ljava/security/cert/CertPathValidatorException$Reason;
            astore 5 /* reason */
        start local 5 // java.security.cert.CertPathValidatorException$Reason reason
         6: .line 1366
            aload 5 /* reason */
            getstatic java.security.cert.CertPathValidatorException$BasicReason.REVOKED:Ljava/security/cert/CertPathValidatorException$BasicReason;
            if_acmpne 12
         7: .line 1367
            aload 0 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.staplingActive:Z
            ifeq 9
         8: .line 1368
            getstatic sun.security.ssl.Alert.BAD_CERT_STATUS_RESPONSE:Lsun/security/ssl/Alert;
            goto 10
         9: .line 1369
      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: .line 1367
      StackMap locals:
      StackMap stack: sun.security.ssl.Alert
            astore 2 /* alert */
        11: .line 1370
            goto 17
        12: .line 1371
      StackMap locals:
      StackMap stack:
            aload 5 /* reason */
            getstatic java.security.cert.CertPathValidatorException$BasicReason.UNDETERMINED_REVOCATION_STATUS:Ljava/security/cert/CertPathValidatorException$BasicReason;
            if_acmpne 17
        13: .line 1372
            aload 0 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.staplingActive:Z
            ifeq 15
        14: .line 1373
            getstatic sun.security.ssl.Alert.BAD_CERT_STATUS_RESPONSE:Lsun/security/ssl/Alert;
            goto 16
        15: .line 1374
      StackMap locals:
      StackMap stack:
            getstatic sun.security.ssl.Alert.CERTIFICATE_UNKNOWN:Lsun/security/ssl/Alert;
        16: .line 1372
      StackMap locals:
      StackMap stack: sun.security.ssl.Alert
            astore 2 /* alert */
        end local 5 // java.security.cert.CertPathValidatorException$Reason reason
        end local 4 // java.security.cert.CertPathValidatorException cpve
        17: .line 1378
      StackMap locals:
      StackMap stack:
            aload 2 /* alert */
            areturn
        end local 3 // java.lang.Throwable baseCause
        end local 2 // sun.security.ssl.Alert alert
        end local 1 // java.security.cert.CertificateException cexc
        end local 0 // sun.security.ssl.ClientHandshakeContext chc
      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