final class sun.security.ssl.CertificateMessage$T13CertificateProducer implements sun.security.ssl.HandshakeProducer
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.CertificateMessage$T13CertificateProducer
  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$T13CertificateProducer this
         0: .line 931
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 933
            return
        end local 0 // sun.security.ssl.CertificateMessage$T13CertificateProducer this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Lsun/security/ssl/CertificateMessage$T13CertificateProducer;

  public byte[] produce(sun.security.ssl.ConnectionContext, sun.security.ssl.SSLHandshake$HandshakeMessage);
    descriptor: (Lsun/security/ssl/ConnectionContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // sun.security.ssl.CertificateMessage$T13CertificateProducer this
        start local 1 // sun.security.ssl.ConnectionContext context
        start local 2 // sun.security.ssl.SSLHandshake$HandshakeMessage message
         0: .line 939
            aload 1 /* context */
            checkcast sun.security.ssl.HandshakeContext
            astore 3 /* hc */
        start local 3 // sun.security.ssl.HandshakeContext hc
         1: .line 940
            aload 3 /* hc */
            getfield sun.security.ssl.HandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
            getfield sun.security.ssl.SSLConfiguration.isClientMode:Z
            ifeq 5
         2: .line 941
            aload 0 /* this */
         3: .line 942
            aload 1 /* context */
            checkcast sun.security.ssl.ClientHandshakeContext
            aload 2 /* message */
         4: .line 941
            invokevirtual sun.security.ssl.CertificateMessage$T13CertificateProducer.onProduceCertificate:(Lsun/security/ssl/ClientHandshakeContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
            areturn
         5: .line 944
      StackMap locals: sun.security.ssl.HandshakeContext
      StackMap stack:
            aload 0 /* this */
         6: .line 945
            aload 1 /* context */
            checkcast sun.security.ssl.ServerHandshakeContext
            aload 2 /* message */
         7: .line 944
            invokevirtual sun.security.ssl.CertificateMessage$T13CertificateProducer.onProduceCertificate:(Lsun/security/ssl/ServerHandshakeContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
            areturn
        end local 3 // sun.security.ssl.HandshakeContext hc
        end local 2 // sun.security.ssl.SSLHandshake$HandshakeMessage message
        end local 1 // sun.security.ssl.ConnectionContext context
        end local 0 // sun.security.ssl.CertificateMessage$T13CertificateProducer this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    8     0     this  Lsun/security/ssl/CertificateMessage$T13CertificateProducer;
            0    8     1  context  Lsun/security/ssl/ConnectionContext;
            0    8     2  message  Lsun/security/ssl/SSLHandshake$HandshakeMessage;
            1    8     3       hc  Lsun/security/ssl/HandshakeContext;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      context  
      message  

  private byte[] onProduceCertificate(sun.security.ssl.ServerHandshakeContext, sun.security.ssl.SSLHandshake$HandshakeMessage);
    descriptor: (Lsun/security/ssl/ServerHandshakeContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=11, args_size=3
        start local 0 // sun.security.ssl.CertificateMessage$T13CertificateProducer this
        start local 1 // sun.security.ssl.ServerHandshakeContext shc
        start local 2 // sun.security.ssl.SSLHandshake$HandshakeMessage message
         0: .line 951
            aload 2 /* message */
            checkcast sun.security.ssl.ClientHello$ClientHelloMessage
            astore 3 /* clientHello */
        start local 3 // sun.security.ssl.ClientHello$ClientHelloMessage clientHello
         1: .line 953
            aload 1 /* shc */
            aload 3 /* clientHello */
            invokestatic sun.security.ssl.CertificateMessage$T13CertificateProducer.choosePossession:(Lsun/security/ssl/HandshakeContext;Lsun/security/ssl/ClientHello$ClientHelloMessage;)Lsun/security/ssl/SSLPossession;
            astore 4 /* pos */
        start local 4 // sun.security.ssl.SSLPossession pos
         2: .line 954
            aload 4 /* pos */
            ifnonnull 6
         3: .line 955
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.HANDSHAKE_FAILURE:Lsun/security/ssl/Alert;
         4: .line 956
            ldc "No available authentication scheme"
         5: .line 955
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
         6: .line 959
      StackMap locals: sun.security.ssl.ClientHello$ClientHelloMessage sun.security.ssl.SSLPossession
      StackMap stack:
            aload 4 /* pos */
            instanceof sun.security.ssl.X509Authentication$X509Possession
            ifne 10
         7: .line 960
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.HANDSHAKE_FAILURE:Lsun/security/ssl/Alert;
         8: .line 961
            ldc "No X.509 certificate for server authentication"
         9: .line 960
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        10: .line 964
      StackMap locals:
      StackMap stack:
            aload 4 /* pos */
            checkcast sun.security.ssl.X509Authentication$X509Possession
            astore 5 /* x509Possession */
        start local 5 // sun.security.ssl.X509Authentication$X509Possession x509Possession
        11: .line 965
            aload 5 /* x509Possession */
            getfield sun.security.ssl.X509Authentication$X509Possession.popCerts:[Ljava/security/cert/X509Certificate;
            astore 6 /* localCerts */
        start local 6 // java.security.cert.X509Certificate[] localCerts
        12: .line 966
            aload 6 /* localCerts */
            ifnull 13
            aload 6 /* localCerts */
            arraylength
            ifne 16
        13: .line 967
      StackMap locals: sun.security.ssl.X509Authentication$X509Possession java.security.cert.X509Certificate[]
      StackMap stack:
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.HANDSHAKE_FAILURE:Lsun/security/ssl/Alert;
        14: .line 968
            ldc "No X.509 certificate for server authentication"
        15: .line 967
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        16: .line 972
      StackMap locals:
      StackMap stack:
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakePossessions:Ljava/util/List;
            aload 5 /* x509Possession */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        17: .line 973
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
        18: .line 974
            aload 5 /* x509Possession */
            getfield sun.security.ssl.X509Authentication$X509Possession.popPrivateKey:Ljava/security/PrivateKey;
        19: .line 973
            invokevirtual sun.security.ssl.SSLSessionImpl.setLocalPrivateKey:(Ljava/security/PrivateKey;)V
        20: .line 975
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            aload 6 /* localCerts */
            invokevirtual sun.security.ssl.SSLSessionImpl.setLocalCertificates:([Ljava/security/cert/X509Certificate;)V
        21: .line 978
            new sun.security.ssl.CertificateMessage$T13CertificateMessage
            dup
            aload 1 /* shc */
            iconst_0
            newarray 8
            aload 6 /* localCerts */
            invokespecial sun.security.ssl.CertificateMessage$T13CertificateMessage.<init>:(Lsun/security/ssl/HandshakeContext;[B[Ljava/security/cert/X509Certificate;)V
            astore 7 /* cm */
        start local 7 // sun.security.ssl.CertificateMessage$T13CertificateMessage cm
        22: .line 979
            goto 27
        end local 7 // sun.security.ssl.CertificateMessage$T13CertificateMessage cm
      StackMap locals:
      StackMap stack: java.lang.Exception
        23: astore 8 /* ce */
        start local 8 // java.lang.Exception ce
        24: .line 980
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.HANDSHAKE_FAILURE:Lsun/security/ssl/Alert;
        25: .line 981
            ldc "Failed to produce server Certificate message"
            aload 8 /* ce */
        26: .line 980
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
            athrow
        end local 8 // java.lang.Exception ce
        start local 7 // sun.security.ssl.CertificateMessage$T13CertificateMessage cm
        27: .line 987
      StackMap locals: sun.security.ssl.CertificateMessage$T13CertificateMessage
      StackMap stack:
            aload 1 /* shc */
            aload 1 /* shc */
            invokestatic sun.security.ssl.StatusResponseManager.processStapling:(Lsun/security/ssl/ServerHandshakeContext;)Lsun/security/ssl/StatusResponseManager$StaplingParameters;
            putfield sun.security.ssl.ServerHandshakeContext.stapleParams:Lsun/security/ssl/StatusResponseManager$StaplingParameters;
        28: .line 988
            aload 1 /* shc */
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.stapleParams:Lsun/security/ssl/StatusResponseManager$StaplingParameters;
            ifnull 29
            iconst_1
            goto 30
      StackMap locals:
      StackMap stack: sun.security.ssl.ServerHandshakeContext
        29: iconst_0
      StackMap locals: sun.security.ssl.CertificateMessage$T13CertificateProducer sun.security.ssl.ServerHandshakeContext sun.security.ssl.SSLHandshake$HandshakeMessage sun.security.ssl.ClientHello$ClientHelloMessage sun.security.ssl.SSLPossession sun.security.ssl.X509Authentication$X509Possession java.security.cert.X509Certificate[] sun.security.ssl.CertificateMessage$T13CertificateMessage
      StackMap stack: sun.security.ssl.ServerHandshakeContext int
        30: putfield sun.security.ssl.ServerHandshakeContext.staplingActive:Z
        31: .line 996
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.sslConfig:Lsun/security/ssl/SSLConfiguration;
        32: .line 997
            getstatic sun.security.ssl.SSLHandshake.CERTIFICATE:Lsun/security/ssl/SSLHandshake;
        33: .line 998
            getstatic sun.security.ssl.ProtocolVersion.PROTOCOLS_OF_13:[Lsun/security/ssl/ProtocolVersion;
            invokestatic java.util.Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
        34: .line 996
            invokevirtual sun.security.ssl.SSLConfiguration.getEnabledExtensions:(Lsun/security/ssl/SSLHandshake;Ljava/util/List;)[Lsun/security/ssl/SSLExtension;
            astore 8 /* enabledCTExts */
        start local 8 // sun.security.ssl.SSLExtension[] enabledCTExts
        35: .line 999
            aload 7 /* cm */
            getfield sun.security.ssl.CertificateMessage$T13CertificateMessage.certEntries:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 10
            goto 39
      StackMap locals: sun.security.ssl.CertificateMessage$T13CertificateProducer sun.security.ssl.ServerHandshakeContext sun.security.ssl.SSLHandshake$HandshakeMessage sun.security.ssl.ClientHello$ClientHelloMessage sun.security.ssl.SSLPossession sun.security.ssl.X509Authentication$X509Possession java.security.cert.X509Certificate[] sun.security.ssl.CertificateMessage$T13CertificateMessage sun.security.ssl.SSLExtension[] top java.util.Iterator
      StackMap stack:
        36: aload 10
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast sun.security.ssl.CertificateMessage$CertificateEntry
            astore 9 /* certEnt */
        start local 9 // sun.security.ssl.CertificateMessage$CertificateEntry certEnt
        37: .line 1000
            aload 1 /* shc */
            aload 9 /* certEnt */
            putfield sun.security.ssl.ServerHandshakeContext.currentCertEntry:Lsun/security/ssl/CertificateMessage$CertificateEntry;
        38: .line 1001
            aload 9 /* certEnt */
            getfield sun.security.ssl.CertificateMessage$CertificateEntry.extensions:Lsun/security/ssl/SSLExtensions;
            aload 1 /* shc */
            aload 8 /* enabledCTExts */
            invokevirtual sun.security.ssl.SSLExtensions.produce:(Lsun/security/ssl/HandshakeContext;[Lsun/security/ssl/SSLExtension;)V
        end local 9 // sun.security.ssl.CertificateMessage$CertificateEntry certEnt
        39: .line 999
      StackMap locals:
      StackMap stack:
            aload 10
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 36
        40: .line 1004
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 42
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 42
        41: .line 1005
            ldc "Produced server Certificate message"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 7 /* cm */
            aastore
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
        42: .line 1009
      StackMap locals: sun.security.ssl.CertificateMessage$T13CertificateProducer sun.security.ssl.ServerHandshakeContext sun.security.ssl.SSLHandshake$HandshakeMessage sun.security.ssl.ClientHello$ClientHelloMessage sun.security.ssl.SSLPossession sun.security.ssl.X509Authentication$X509Possession java.security.cert.X509Certificate[] sun.security.ssl.CertificateMessage$T13CertificateMessage sun.security.ssl.SSLExtension[]
      StackMap stack:
            aload 7 /* cm */
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeOutput:Lsun/security/ssl/HandshakeOutStream;
            invokevirtual sun.security.ssl.CertificateMessage$T13CertificateMessage.write:(Lsun/security/ssl/HandshakeOutStream;)V
        43: .line 1010
            aload 1 /* shc */
            getfield sun.security.ssl.ServerHandshakeContext.handshakeOutput:Lsun/security/ssl/HandshakeOutStream;
            invokevirtual sun.security.ssl.HandshakeOutStream.flush:()V
        44: .line 1013
            aconst_null
            areturn
        end local 8 // sun.security.ssl.SSLExtension[] enabledCTExts
        end local 7 // sun.security.ssl.CertificateMessage$T13CertificateMessage cm
        end local 6 // java.security.cert.X509Certificate[] localCerts
        end local 5 // sun.security.ssl.X509Authentication$X509Possession x509Possession
        end local 4 // sun.security.ssl.SSLPossession pos
        end local 3 // sun.security.ssl.ClientHello$ClientHelloMessage clientHello
        end local 2 // sun.security.ssl.SSLHandshake$HandshakeMessage message
        end local 1 // sun.security.ssl.ServerHandshakeContext shc
        end local 0 // sun.security.ssl.CertificateMessage$T13CertificateProducer this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   45     0            this  Lsun/security/ssl/CertificateMessage$T13CertificateProducer;
            0   45     1             shc  Lsun/security/ssl/ServerHandshakeContext;
            0   45     2         message  Lsun/security/ssl/SSLHandshake$HandshakeMessage;
            1   45     3     clientHello  Lsun/security/ssl/ClientHello$ClientHelloMessage;
            2   45     4             pos  Lsun/security/ssl/SSLPossession;
           11   45     5  x509Possession  Lsun/security/ssl/X509Authentication$X509Possession;
           12   45     6      localCerts  [Ljava/security/cert/X509Certificate;
           22   23     7              cm  Lsun/security/ssl/CertificateMessage$T13CertificateMessage;
           27   45     7              cm  Lsun/security/ssl/CertificateMessage$T13CertificateMessage;
           24   27     8              ce  Ljava/lang/Exception;
           35   45     8   enabledCTExts  [Lsun/security/ssl/SSLExtension;
           37   39     9         certEnt  Lsun/security/ssl/CertificateMessage$CertificateEntry;
      Exception table:
        from    to  target  type
          21    22      23  Class javax.net.ssl.SSLException
          21    22      23  Class java.security.cert.CertificateException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      shc      
      message  

  private static sun.security.ssl.SSLPossession choosePossession(sun.security.ssl.HandshakeContext, sun.security.ssl.ClientHello$ClientHelloMessage);
    descriptor: (Lsun/security/ssl/HandshakeContext;Lsun/security/ssl/ClientHello$ClientHelloMessage;)Lsun/security/ssl/SSLPossession;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=7, args_size=2
        start local 0 // sun.security.ssl.HandshakeContext hc
        start local 1 // sun.security.ssl.ClientHello$ClientHelloMessage clientHello
         0: .line 1019
            aload 0 /* hc */
            getfield sun.security.ssl.HandshakeContext.peerRequestedCertSignSchemes:Ljava/util/List;
            ifnull 2
         1: .line 1020
            aload 0 /* hc */
            getfield sun.security.ssl.HandshakeContext.peerRequestedCertSignSchemes:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 6
         2: .line 1021
      StackMap locals:
      StackMap stack:
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 5
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 5
         3: .line 1023
            ldc "No signature_algorithms(_cert) in ClientHello"
            iconst_0
            anewarray java.lang.Object
         4: .line 1022
            invokestatic sun.security.ssl.SSLLogger.warning:(Ljava/lang/String;[Ljava/lang/Object;)V
         5: .line 1025
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         6: .line 1028
      StackMap locals:
      StackMap stack:
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 2 /* checkedKeyTypes */
        start local 2 // java.util.Collection checkedKeyTypes
         7: .line 1029
            aload 0 /* hc */
            getfield sun.security.ssl.HandshakeContext.peerRequestedCertSignSchemes:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 39
      StackMap locals: sun.security.ssl.HandshakeContext sun.security.ssl.ClientHello$ClientHelloMessage java.util.Collection top java.util.Iterator
      StackMap stack:
         8: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast sun.security.ssl.SignatureScheme
            astore 3 /* ss */
        start local 3 // sun.security.ssl.SignatureScheme ss
         9: .line 1030
            aload 2 /* checkedKeyTypes */
            aload 3 /* ss */
            getfield sun.security.ssl.SignatureScheme.keyAlgorithm:Ljava/lang/String;
            invokeinterface java.util.Collection.contains:(Ljava/lang/Object;)Z
            ifeq 14
        10: .line 1031
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 39
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 39
        11: .line 1033
            new java.lang.StringBuilder
            dup
            ldc "Unsupported authentication scheme: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* ss */
            getfield sun.security.ssl.SignatureScheme.name:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
        12: .line 1032
            invokestatic sun.security.ssl.SSLLogger.warning:(Ljava/lang/String;[Ljava/lang/Object;)V
        13: .line 1035
            goto 39
        14: .line 1041
      StackMap locals: sun.security.ssl.HandshakeContext sun.security.ssl.ClientHello$ClientHelloMessage java.util.Collection sun.security.ssl.SignatureScheme java.util.Iterator
      StackMap stack:
            aload 0 /* hc */
            getfield sun.security.ssl.HandshakeContext.algorithmConstraints:Ljava/security/AlgorithmConstraints;
        15: .line 1042
            aload 0 /* hc */
            getfield sun.security.ssl.HandshakeContext.peerRequestedSignatureSchemes:Ljava/util/List;
        16: .line 1043
            aload 3 /* ss */
            aload 0 /* hc */
            getfield sun.security.ssl.HandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
        17: .line 1040
            invokestatic sun.security.ssl.SignatureScheme.getPreferableAlgorithm:(Ljava/security/AlgorithmConstraints;Ljava/util/List;Lsun/security/ssl/SignatureScheme;Lsun/security/ssl/ProtocolVersion;)Lsun/security/ssl/SignatureScheme;
            ifnonnull 25
        18: .line 1045
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 23
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 23
        19: .line 1047
            new java.lang.StringBuilder
            dup
            ldc "Unable to produce CertificateVerify for signature scheme: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        20: .line 1048
            aload 3 /* ss */
            getfield sun.security.ssl.SignatureScheme.name:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        21: .line 1047
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
        22: .line 1046
            invokestatic sun.security.ssl.SSLLogger.warning:(Ljava/lang/String;[Ljava/lang/Object;)V
        23: .line 1050
      StackMap locals:
      StackMap stack:
            aload 2 /* checkedKeyTypes */
            aload 3 /* ss */
            getfield sun.security.ssl.SignatureScheme.keyAlgorithm:Ljava/lang/String;
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
        24: .line 1051
            goto 39
        25: .line 1054
      StackMap locals:
      StackMap stack:
            aload 3 /* ss */
            invokestatic sun.security.ssl.X509Authentication.valueOf:(Lsun/security/ssl/SignatureScheme;)Lsun/security/ssl/X509Authentication;
            astore 5 /* ka */
        start local 5 // sun.security.ssl.SSLAuthentication ka
        26: .line 1055
            aload 5 /* ka */
            ifnonnull 32
        27: .line 1056
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 30
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 30
        28: .line 1058
            new java.lang.StringBuilder
            dup
            ldc "Unsupported authentication scheme: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* ss */
            getfield sun.security.ssl.SignatureScheme.name:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
        29: .line 1057
            invokestatic sun.security.ssl.SSLLogger.warning:(Ljava/lang/String;[Ljava/lang/Object;)V
        30: .line 1060
      StackMap locals: sun.security.ssl.SSLAuthentication
      StackMap stack:
            aload 2 /* checkedKeyTypes */
            aload 3 /* ss */
            getfield sun.security.ssl.SignatureScheme.keyAlgorithm:Ljava/lang/String;
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
        31: .line 1061
            goto 39
        32: .line 1064
      StackMap locals:
      StackMap stack:
            aload 5 /* ka */
            aload 0 /* hc */
            invokeinterface sun.security.ssl.SSLAuthentication.createPossession:(Lsun/security/ssl/HandshakeContext;)Lsun/security/ssl/SSLPossession;
            astore 6 /* pos */
        start local 6 // sun.security.ssl.SSLPossession pos
        33: .line 1065
            aload 6 /* pos */
            ifnonnull 38
        34: .line 1066
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 39
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 39
        35: .line 1068
            new java.lang.StringBuilder
            dup
            ldc "Unavailable authentication scheme: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 3 /* ss */
            getfield sun.security.ssl.SignatureScheme.name:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
        36: .line 1067
            invokestatic sun.security.ssl.SSLLogger.warning:(Ljava/lang/String;[Ljava/lang/Object;)V
        37: .line 1070
            goto 39
        38: .line 1073
      StackMap locals: sun.security.ssl.SSLPossession
      StackMap stack:
            aload 6 /* pos */
            areturn
        end local 6 // sun.security.ssl.SSLPossession pos
        end local 5 // sun.security.ssl.SSLAuthentication ka
        end local 3 // sun.security.ssl.SignatureScheme ss
        39: .line 1029
      StackMap locals: sun.security.ssl.HandshakeContext sun.security.ssl.ClientHello$ClientHelloMessage java.util.Collection top java.util.Iterator
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 8
        40: .line 1076
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 42
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 42
        41: .line 1077
            ldc "No available authentication scheme"
            iconst_0
            anewarray java.lang.Object
            invokestatic sun.security.ssl.SSLLogger.warning:(Ljava/lang/String;[Ljava/lang/Object;)V
        42: .line 1079
      StackMap locals: sun.security.ssl.HandshakeContext sun.security.ssl.ClientHello$ClientHelloMessage java.util.Collection
      StackMap stack:
            aconst_null
            areturn
        end local 2 // java.util.Collection checkedKeyTypes
        end local 1 // sun.security.ssl.ClientHello$ClientHelloMessage clientHello
        end local 0 // sun.security.ssl.HandshakeContext hc
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   43     0               hc  Lsun/security/ssl/HandshakeContext;
            0   43     1      clientHello  Lsun/security/ssl/ClientHello$ClientHelloMessage;
            7   43     2  checkedKeyTypes  Ljava/util/Collection<Ljava/lang/String;>;
            9   39     3               ss  Lsun/security/ssl/SignatureScheme;
           26   39     5               ka  Lsun/security/ssl/SSLAuthentication;
           33   39     6              pos  Lsun/security/ssl/SSLPossession;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
             Name  Flags
      hc           
      clientHello  

  private byte[] onProduceCertificate(sun.security.ssl.ClientHandshakeContext, sun.security.ssl.SSLHandshake$HandshakeMessage);
    descriptor: (Lsun/security/ssl/ClientHandshakeContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)[B
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=8, args_size=3
        start local 0 // sun.security.ssl.CertificateMessage$T13CertificateProducer this
        start local 1 // sun.security.ssl.ClientHandshakeContext chc
        start local 2 // sun.security.ssl.SSLHandshake$HandshakeMessage message
         0: .line 1084
            aload 2 /* message */
            checkcast sun.security.ssl.ClientHello$ClientHelloMessage
            astore 3 /* clientHello */
        start local 3 // sun.security.ssl.ClientHello$ClientHelloMessage clientHello
         1: .line 1085
            aload 1 /* chc */
            aload 3 /* clientHello */
            invokestatic sun.security.ssl.CertificateMessage$T13CertificateProducer.choosePossession:(Lsun/security/ssl/HandshakeContext;Lsun/security/ssl/ClientHello$ClientHelloMessage;)Lsun/security/ssl/SSLPossession;
            astore 4 /* pos */
        start local 4 // sun.security.ssl.SSLPossession pos
         2: .line 1087
            aload 4 /* pos */
            ifnonnull 7
         3: .line 1088
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 5
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 5
         4: .line 1089
            ldc "No available client authentication scheme"
            iconst_0
            anewarray java.lang.Object
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
         5: .line 1091
      StackMap locals: sun.security.ssl.ClientHello$ClientHelloMessage sun.security.ssl.SSLPossession
      StackMap stack:
            iconst_0
            anewarray java.security.cert.X509Certificate
            astore 5 /* localCerts */
        start local 5 // java.security.cert.X509Certificate[] localCerts
         6: .line 1092
            goto 19
        end local 5 // java.security.cert.X509Certificate[] localCerts
         7: .line 1093
      StackMap locals:
      StackMap stack:
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakePossessions:Ljava/util/List;
            aload 4 /* pos */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
         8: .line 1094
            aload 4 /* pos */
            instanceof sun.security.ssl.X509Authentication$X509Possession
            ifne 14
         9: .line 1095
            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 1097
            ldc "No X.509 certificate for client authentication"
            iconst_0
            anewarray java.lang.Object
        11: .line 1096
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
        12: .line 1099
      StackMap locals:
      StackMap stack:
            iconst_0
            anewarray java.security.cert.X509Certificate
            astore 5 /* localCerts */
        start local 5 // java.security.cert.X509Certificate[] localCerts
        13: .line 1100
            goto 19
        end local 5 // java.security.cert.X509Certificate[] localCerts
        14: .line 1101
      StackMap locals:
      StackMap stack:
            aload 4 /* pos */
            checkcast sun.security.ssl.X509Authentication$X509Possession
            astore 6 /* x509Possession */
        start local 6 // sun.security.ssl.X509Authentication$X509Possession x509Possession
        15: .line 1102
            aload 6 /* x509Possession */
            getfield sun.security.ssl.X509Authentication$X509Possession.popCerts:[Ljava/security/cert/X509Certificate;
            astore 5 /* localCerts */
        start local 5 // java.security.cert.X509Certificate[] localCerts
        16: .line 1103
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
        17: .line 1104
            aload 6 /* x509Possession */
            getfield sun.security.ssl.X509Authentication$X509Possession.popPrivateKey:Ljava/security/PrivateKey;
        18: .line 1103
            invokevirtual sun.security.ssl.SSLSessionImpl.setLocalPrivateKey:(Ljava/security/PrivateKey;)V
        end local 6 // sun.security.ssl.X509Authentication$X509Possession x509Possession
        19: .line 1108
      StackMap locals: java.security.cert.X509Certificate[]
      StackMap stack:
            aload 5 /* localCerts */
            ifnull 22
            aload 5 /* localCerts */
            arraylength
            ifeq 22
        20: .line 1109
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            aload 5 /* localCerts */
            invokevirtual sun.security.ssl.SSLSessionImpl.setLocalCertificates:([Ljava/security/cert/X509Certificate;)V
        21: .line 1110
            goto 23
        22: .line 1111
      StackMap locals:
      StackMap stack:
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            aconst_null
            invokevirtual sun.security.ssl.SSLSessionImpl.setLocalCertificates:([Ljava/security/cert/X509Certificate;)V
        23: .line 1116
      StackMap locals:
      StackMap stack:
            new sun.security.ssl.CertificateMessage$T13CertificateMessage
            dup
        24: .line 1117
            aload 1 /* chc */
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.certRequestContext:[B
            aload 5 /* localCerts */
        25: .line 1116
            invokespecial sun.security.ssl.CertificateMessage$T13CertificateMessage.<init>:(Lsun/security/ssl/HandshakeContext;[B[Ljava/security/cert/X509Certificate;)V
            astore 6 /* cm */
        start local 6 // sun.security.ssl.CertificateMessage$T13CertificateMessage cm
        26: .line 1118
            goto 31
        end local 6 // sun.security.ssl.CertificateMessage$T13CertificateMessage cm
      StackMap locals:
      StackMap stack: java.lang.Exception
        27: astore 7 /* ce */
        start local 7 // java.lang.Exception ce
        28: .line 1119
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.HANDSHAKE_FAILURE:Lsun/security/ssl/Alert;
        29: .line 1120
            ldc "Failed to produce client Certificate message"
            aload 7 /* ce */
        30: .line 1119
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
            athrow
        end local 7 // java.lang.Exception ce
        start local 6 // sun.security.ssl.CertificateMessage$T13CertificateMessage cm
        31: .line 1122
      StackMap locals: sun.security.ssl.CertificateMessage$T13CertificateMessage
      StackMap stack:
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 33
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 33
        32: .line 1123
            ldc "Produced client Certificate message"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 6 /* cm */
            aastore
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
        33: .line 1127
      StackMap locals:
      StackMap stack:
            aload 6 /* cm */
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakeOutput:Lsun/security/ssl/HandshakeOutStream;
            invokevirtual sun.security.ssl.CertificateMessage$T13CertificateMessage.write:(Lsun/security/ssl/HandshakeOutStream;)V
        34: .line 1128
            aload 1 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakeOutput:Lsun/security/ssl/HandshakeOutStream;
            invokevirtual sun.security.ssl.HandshakeOutStream.flush:()V
        35: .line 1131
            aconst_null
            areturn
        end local 6 // sun.security.ssl.CertificateMessage$T13CertificateMessage cm
        end local 5 // java.security.cert.X509Certificate[] localCerts
        end local 4 // sun.security.ssl.SSLPossession pos
        end local 3 // sun.security.ssl.ClientHello$ClientHelloMessage clientHello
        end local 2 // sun.security.ssl.SSLHandshake$HandshakeMessage message
        end local 1 // sun.security.ssl.ClientHandshakeContext chc
        end local 0 // sun.security.ssl.CertificateMessage$T13CertificateProducer this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   36     0            this  Lsun/security/ssl/CertificateMessage$T13CertificateProducer;
            0   36     1             chc  Lsun/security/ssl/ClientHandshakeContext;
            0   36     2         message  Lsun/security/ssl/SSLHandshake$HandshakeMessage;
            1   36     3     clientHello  Lsun/security/ssl/ClientHello$ClientHelloMessage;
            2   36     4             pos  Lsun/security/ssl/SSLPossession;
            6    7     5      localCerts  [Ljava/security/cert/X509Certificate;
           13   14     5      localCerts  [Ljava/security/cert/X509Certificate;
           16   36     5      localCerts  [Ljava/security/cert/X509Certificate;
           15   19     6  x509Possession  Lsun/security/ssl/X509Authentication$X509Possession;
           26   27     6              cm  Lsun/security/ssl/CertificateMessage$T13CertificateMessage;
           31   36     6              cm  Lsun/security/ssl/CertificateMessage$T13CertificateMessage;
           28   31     7              ce  Ljava/lang/Exception;
      Exception table:
        from    to  target  type
          23    26      27  Class javax.net.ssl.SSLException
          23    26      27  Class java.security.cert.CertificateException
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      chc      
      message  
}
SourceFile: "CertificateMessage.java"
NestHost: sun.security.ssl.CertificateMessage
InnerClasses:
  final CertificateEntry = sun.security.ssl.CertificateMessage$CertificateEntry of sun.security.ssl.CertificateMessage
  final T13CertificateMessage = sun.security.ssl.CertificateMessage$T13CertificateMessage of sun.security.ssl.CertificateMessage
  private final T13CertificateProducer = sun.security.ssl.CertificateMessage$T13CertificateProducer of sun.security.ssl.CertificateMessage
  final ClientHelloMessage = sun.security.ssl.ClientHello$ClientHelloMessage of sun.security.ssl.ClientHello
  abstract HandshakeMessage = sun.security.ssl.SSLHandshake$HandshakeMessage of sun.security.ssl.SSLHandshake
  final StaplingParameters = sun.security.ssl.StatusResponseManager$StaplingParameters of sun.security.ssl.StatusResponseManager
  final X509Possession = sun.security.ssl.X509Authentication$X509Possession of sun.security.ssl.X509Authentication