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

  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=12, args_size=3
        start local 0 // sun.security.ssl.CertificateRequest$T12CertificateRequestConsumer this
        start local 1 // sun.security.ssl.ConnectionContext context
        start local 2 // java.nio.ByteBuffer message
         0: .line 654
            aload 1 /* context */
            checkcast sun.security.ssl.ClientHandshakeContext
            astore 3 /* chc */
        start local 3 // sun.security.ssl.ClientHandshakeContext chc
         1: .line 657
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakeConsumers:Ljava/util/LinkedHashMap;
            getstatic sun.security.ssl.SSLHandshake.CERTIFICATE_REQUEST: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 659
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakeConsumers:Ljava/util/LinkedHashMap;
         3: .line 660
            getstatic sun.security.ssl.SSLHandshake.CERTIFICATE_STATUS:Lsun/security/ssl/SSLHandshake;
            getfield sun.security.ssl.SSLHandshake.id:B
            invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
         4: .line 659
            invokevirtual java.util.LinkedHashMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast sun.security.ssl.SSLConsumer
            astore 4 /* certStatCons */
        start local 4 // sun.security.ssl.SSLConsumer certStatCons
         5: .line 661
            aload 4 /* certStatCons */
            ifnull 7
         6: .line 665
            getstatic sun.security.ssl.CertificateStatus.handshakeAbsence:Lsun/security/ssl/HandshakeAbsence;
            aload 1 /* context */
            aconst_null
            invokeinterface sun.security.ssl.HandshakeAbsence.absent:(Lsun/security/ssl/ConnectionContext;Lsun/security/ssl/SSLHandshake$HandshakeMessage;)V
         7: .line 669
      StackMap locals: sun.security.ssl.ClientHandshakeContext sun.security.ssl.SSLConsumer
      StackMap stack:
            new sun.security.ssl.CertificateRequest$T12CertificateRequestMessage
            dup
            aload 3 /* chc */
            aload 2 /* message */
            invokespecial sun.security.ssl.CertificateRequest$T12CertificateRequestMessage.<init>:(Lsun/security/ssl/HandshakeContext;Ljava/nio/ByteBuffer;)V
         8: .line 668
            astore 5 /* crm */
        start local 5 // sun.security.ssl.CertificateRequest$T12CertificateRequestMessage crm
         9: .line 670
            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 672
            ldc "Consuming CertificateRequest handshake message"
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
            aload 5 /* crm */
            aastore
        11: .line 671
            invokestatic sun.security.ssl.SSLLogger.fine:(Ljava/lang/String;[Ljava/lang/Object;)V
        12: .line 685
      StackMap locals: sun.security.ssl.CertificateRequest$T12CertificateRequestMessage
      StackMap stack:
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakeProducers:Ljava/util/HashMap;
            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;
        13: .line 686
            getstatic sun.security.ssl.SSLHandshake.CERTIFICATE:Lsun/security/ssl/SSLHandshake;
        14: .line 685
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        15: .line 688
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            astore 6 /* sss */
        start local 6 // java.util.List sss
        16: .line 689
            aload 5 /* crm */
            getfield sun.security.ssl.CertificateRequest$T12CertificateRequestMessage.algorithmIds:[I
            dup
            astore 10
            arraylength
            istore 9
            iconst_0
            istore 8
            goto 22
      StackMap locals: sun.security.ssl.CertificateRequest$T12CertificateRequestConsumer sun.security.ssl.ConnectionContext java.nio.ByteBuffer sun.security.ssl.ClientHandshakeContext sun.security.ssl.SSLConsumer sun.security.ssl.CertificateRequest$T12CertificateRequestMessage java.util.List top int int int[]
      StackMap stack:
        17: aload 10
            iload 8
            iaload
            istore 7 /* id */
        start local 7 // int id
        18: .line 690
            iload 7 /* id */
            invokestatic sun.security.ssl.SignatureScheme.valueOf:(I)Lsun/security/ssl/SignatureScheme;
            astore 11 /* ss */
        start local 11 // sun.security.ssl.SignatureScheme ss
        19: .line 691
            aload 11 /* ss */
            ifnull 21
        20: .line 692
            aload 6 /* sss */
            aload 11 /* ss */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 11 // sun.security.ssl.SignatureScheme ss
        end local 7 // int id
        21: .line 689
      StackMap locals:
      StackMap stack:
            iinc 8 1
      StackMap locals:
      StackMap stack:
        22: iload 8
            iload 9
            if_icmplt 17
        23: .line 695
            aload 3 /* chc */
            aload 6 /* sss */
            putfield sun.security.ssl.ClientHandshakeContext.peerRequestedSignatureSchemes:Ljava/util/List;
        24: .line 696
            aload 3 /* chc */
            aload 6 /* sss */
            putfield sun.security.ssl.ClientHandshakeContext.peerRequestedCertSignSchemes:Ljava/util/List;
        25: .line 697
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakeSession:Lsun/security/ssl/SSLSessionImpl;
            aload 6 /* sss */
            invokevirtual sun.security.ssl.SSLSessionImpl.setPeerSupportedSignatureAlgorithms:(Ljava/util/Collection;)V
        26: .line 698
            aload 3 /* chc */
            aload 5 /* crm */
            invokevirtual sun.security.ssl.CertificateRequest$T12CertificateRequestMessage.getAuthorities:()[Ljavax/security/auth/x500/X500Principal;
            putfield sun.security.ssl.ClientHandshakeContext.peerSupportedAuthorities:[Ljavax/security/auth/x500/X500Principal;
        27: .line 705
            aload 3 /* chc */
            invokestatic sun.security.ssl.CertificateRequest$T12CertificateRequestConsumer.choosePossession:(Lsun/security/ssl/HandshakeContext;)Lsun/security/ssl/SSLPossession;
            astore 7 /* pos */
        start local 7 // sun.security.ssl.SSLPossession pos
        28: .line 706
            aload 7 /* pos */
            ifnonnull 30
        29: .line 707
            return
        30: .line 710
      StackMap locals: sun.security.ssl.CertificateRequest$T12CertificateRequestConsumer sun.security.ssl.ConnectionContext java.nio.ByteBuffer sun.security.ssl.ClientHandshakeContext sun.security.ssl.SSLConsumer sun.security.ssl.CertificateRequest$T12CertificateRequestMessage java.util.List sun.security.ssl.SSLPossession
      StackMap stack:
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakePossessions:Ljava/util/List;
            aload 7 /* pos */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        31: .line 711
            aload 3 /* chc */
            getfield sun.security.ssl.ClientHandshakeContext.handshakeProducers:Ljava/util/HashMap;
            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;
        32: .line 712
            getstatic sun.security.ssl.SSLHandshake.CERTIFICATE_VERIFY:Lsun/security/ssl/SSLHandshake;
        33: .line 711
            invokevirtual java.util.HashMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        34: .line 713
            return
        end local 7 // sun.security.ssl.SSLPossession pos
        end local 6 // java.util.List sss
        end local 5 // sun.security.ssl.CertificateRequest$T12CertificateRequestMessage crm
        end local 4 // sun.security.ssl.SSLConsumer certStatCons
        end local 3 // sun.security.ssl.ClientHandshakeContext chc
        end local 2 // java.nio.ByteBuffer message
        end local 1 // sun.security.ssl.ConnectionContext context
        end local 0 // sun.security.ssl.CertificateRequest$T12CertificateRequestConsumer this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0   35     0          this  Lsun/security/ssl/CertificateRequest$T12CertificateRequestConsumer;
            0   35     1       context  Lsun/security/ssl/ConnectionContext;
            0   35     2       message  Ljava/nio/ByteBuffer;
            1   35     3           chc  Lsun/security/ssl/ClientHandshakeContext;
            5   35     4  certStatCons  Lsun/security/ssl/SSLConsumer;
            9   35     5           crm  Lsun/security/ssl/CertificateRequest$T12CertificateRequestMessage;
           16   35     6           sss  Ljava/util/List<Lsun/security/ssl/SignatureScheme;>;
           18   21     7            id  I
           19   21    11            ss  Lsun/security/ssl/SignatureScheme;
           28   35     7           pos  Lsun/security/ssl/SSLPossession;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
         Name  Flags
      context  
      message  

  private static sun.security.ssl.SSLPossession choosePossession(sun.security.ssl.HandshakeContext);
    descriptor: (Lsun/security/ssl/HandshakeContext;)Lsun/security/ssl/SSLPossession;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=6, args_size=1
        start local 0 // sun.security.ssl.HandshakeContext hc
         0: .line 717
            aload 0 /* hc */
            getfield sun.security.ssl.HandshakeContext.peerRequestedCertSignSchemes:Ljava/util/List;
            ifnull 2
         1: .line 718
            aload 0 /* hc */
            getfield sun.security.ssl.HandshakeContext.peerRequestedCertSignSchemes:Ljava/util/List;
            invokeinterface java.util.List.isEmpty:()Z
            ifeq 5
         2: .line 719
      StackMap locals:
      StackMap stack:
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 4
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 4
         3: .line 720
            ldc "No signature and hash algorithms in CertificateRequest"
            iconst_0
            anewarray java.lang.Object
            invokestatic sun.security.ssl.SSLLogger.warning:(Ljava/lang/String;[Ljava/lang/Object;)V
         4: .line 723
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
         5: .line 726
      StackMap locals:
      StackMap stack:
            new java.util.HashSet
            dup
            invokespecial java.util.HashSet.<init>:()V
            astore 1 /* checkedKeyTypes */
        start local 1 // java.util.Collection checkedKeyTypes
         6: .line 727
            aload 0 /* hc */
            getfield sun.security.ssl.HandshakeContext.peerRequestedCertSignSchemes:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 3
            goto 37
      StackMap locals: sun.security.ssl.HandshakeContext java.util.Collection top java.util.Iterator
      StackMap stack:
         7: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast sun.security.ssl.SignatureScheme
            astore 2 /* ss */
        start local 2 // sun.security.ssl.SignatureScheme ss
         8: .line 728
            aload 1 /* checkedKeyTypes */
            aload 2 /* ss */
            getfield sun.security.ssl.SignatureScheme.keyAlgorithm:Ljava/lang/String;
            invokeinterface java.util.Collection.contains:(Ljava/lang/Object;)Z
            ifeq 13
         9: .line 729
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 37
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 37
        10: .line 731
            new java.lang.StringBuilder
            dup
            ldc "Unsupported authentication scheme: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* 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
        11: .line 730
            invokestatic sun.security.ssl.SSLLogger.warning:(Ljava/lang/String;[Ljava/lang/Object;)V
        12: .line 733
            goto 37
        13: .line 739
      StackMap locals: sun.security.ssl.HandshakeContext java.util.Collection sun.security.ssl.SignatureScheme java.util.Iterator
      StackMap stack:
            aload 0 /* hc */
            getfield sun.security.ssl.HandshakeContext.peerRequestedSignatureSchemes:Ljava/util/List;
        14: .line 740
            aload 2 /* ss */
            aload 0 /* hc */
            getfield sun.security.ssl.HandshakeContext.negotiatedProtocol:Lsun/security/ssl/ProtocolVersion;
        15: .line 738
            invokestatic sun.security.ssl.SignatureScheme.getPreferableAlgorithm:(Ljava/util/List;Lsun/security/ssl/SignatureScheme;Lsun/security/ssl/ProtocolVersion;)Lsun/security/ssl/SignatureScheme;
            ifnonnull 23
        16: .line 742
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 21
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 21
        17: .line 744
            new java.lang.StringBuilder
            dup
            ldc "Unable to produce CertificateVerify for signature scheme: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        18: .line 745
            aload 2 /* ss */
            getfield sun.security.ssl.SignatureScheme.name:Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
        19: .line 744
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            iconst_0
            anewarray java.lang.Object
        20: .line 743
            invokestatic sun.security.ssl.SSLLogger.warning:(Ljava/lang/String;[Ljava/lang/Object;)V
        21: .line 747
      StackMap locals:
      StackMap stack:
            aload 1 /* checkedKeyTypes */
            aload 2 /* ss */
            getfield sun.security.ssl.SignatureScheme.keyAlgorithm:Ljava/lang/String;
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
        22: .line 748
            goto 37
        23: .line 751
      StackMap locals:
      StackMap stack:
            aload 2 /* ss */
            invokestatic sun.security.ssl.X509Authentication.valueOf:(Lsun/security/ssl/SignatureScheme;)Lsun/security/ssl/X509Authentication;
            astore 4 /* ka */
        start local 4 // sun.security.ssl.SSLAuthentication ka
        24: .line 752
            aload 4 /* ka */
            ifnonnull 30
        25: .line 753
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 28
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 28
        26: .line 755
            new java.lang.StringBuilder
            dup
            ldc "Unsupported authentication scheme: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* 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
        27: .line 754
            invokestatic sun.security.ssl.SSLLogger.warning:(Ljava/lang/String;[Ljava/lang/Object;)V
        28: .line 757
      StackMap locals: sun.security.ssl.SSLAuthentication
      StackMap stack:
            aload 1 /* checkedKeyTypes */
            aload 2 /* ss */
            getfield sun.security.ssl.SignatureScheme.keyAlgorithm:Ljava/lang/String;
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
        29: .line 758
            goto 37
        30: .line 761
      StackMap locals:
      StackMap stack:
            aload 4 /* ka */
            aload 0 /* hc */
            invokeinterface sun.security.ssl.SSLAuthentication.createPossession:(Lsun/security/ssl/HandshakeContext;)Lsun/security/ssl/SSLPossession;
            astore 5 /* pos */
        start local 5 // sun.security.ssl.SSLPossession pos
        31: .line 762
            aload 5 /* pos */
            ifnonnull 36
        32: .line 763
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 37
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 37
        33: .line 765
            new java.lang.StringBuilder
            dup
            ldc "Unavailable authentication scheme: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* 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
        34: .line 764
            invokestatic sun.security.ssl.SSLLogger.warning:(Ljava/lang/String;[Ljava/lang/Object;)V
        35: .line 767
            goto 37
        36: .line 770
      StackMap locals: sun.security.ssl.SSLPossession
      StackMap stack:
            aload 5 /* pos */
            areturn
        end local 5 // sun.security.ssl.SSLPossession pos
        end local 4 // sun.security.ssl.SSLAuthentication ka
        end local 2 // sun.security.ssl.SignatureScheme ss
        37: .line 727
      StackMap locals: sun.security.ssl.HandshakeContext java.util.Collection top java.util.Iterator
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 7
        38: .line 773
            getstatic sun.security.ssl.SSLLogger.isOn:Z
            ifeq 40
            ldc "ssl,handshake"
            invokestatic sun.security.ssl.SSLLogger.isOn:(Ljava/lang/String;)Z
            ifeq 40
        39: .line 774
            ldc "No available authentication scheme"
            iconst_0
            anewarray java.lang.Object
            invokestatic sun.security.ssl.SSLLogger.warning:(Ljava/lang/String;[Ljava/lang/Object;)V
        40: .line 776
      StackMap locals: sun.security.ssl.HandshakeContext java.util.Collection
      StackMap stack:
            aconst_null
            areturn
        end local 1 // java.util.Collection checkedKeyTypes
        end local 0 // sun.security.ssl.HandshakeContext hc
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   41     0               hc  Lsun/security/ssl/HandshakeContext;
            6   41     1  checkedKeyTypes  Ljava/util/Collection<Ljava/lang/String;>;
            8   37     2               ss  Lsun/security/ssl/SignatureScheme;
           24   37     4               ka  Lsun/security/ssl/SSLAuthentication;
           31   37     5              pos  Lsun/security/ssl/SSLPossession;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      hc    
}
SourceFile: "CertificateRequest.java"
NestHost: sun.security.ssl.CertificateRequest
InnerClasses:
  private final T12CertificateRequestConsumer = sun.security.ssl.CertificateRequest$T12CertificateRequestConsumer of sun.security.ssl.CertificateRequest
  final T12CertificateRequestMessage = sun.security.ssl.CertificateRequest$T12CertificateRequestMessage of sun.security.ssl.CertificateRequest
  abstract HandshakeMessage = sun.security.ssl.SSLHandshake$HandshakeMessage of sun.security.ssl.SSLHandshake