final class sun.security.ssl.HandshakeMessage$CertificateRequest extends sun.security.ssl.HandshakeMessage
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.HandshakeMessage$CertificateRequest
  super_class: sun.security.ssl.HandshakeMessage
{
  static final int cct_rsa_sign;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  static final int cct_dss_sign;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  static final int cct_rsa_fixed_dh;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  static final int cct_dss_fixed_dh;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  static final int cct_rsa_ephemeral_dh;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 5

  static final int cct_dss_ephemeral_dh;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 6

  static final int cct_ecdsa_sign;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 64

  static final int cct_rsa_fixed_ecdh;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 65

  static final int cct_ecdsa_fixed_ecdh;
    descriptor: I
    flags: (0x0018) ACC_STATIC, ACC_FINAL
    ConstantValue: 66

  private static final byte[] TYPES_NO_ECC;
    descriptor: [B
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  private static final byte[] TYPES_ECC;
    descriptor: [B
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL

  byte[] types;
    descriptor: [B
    flags: (0x0000) 

  sun.security.ssl.HandshakeMessage$DistinguishedName[] authorities;
    descriptor: [Lsun/security/ssl/HandshakeMessage$DistinguishedName;
    flags: (0x0000) 

  sun.security.ssl.ProtocolVersion protocolVersion;
    descriptor: Lsun/security/ssl/ProtocolVersion;
    flags: (0x0000) 

  private java.util.Collection<sun.security.ssl.SignatureAndHashAlgorithm> algorithms;
    descriptor: Ljava/util/Collection;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/Collection<Lsun/security/ssl/SignatureAndHashAlgorithm;>;

  private int algorithmsLen;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=4, locals=0, args_size=0
         0: .line 1262
            iconst_2
            newarray 8
            dup
            iconst_0
            iconst_1
            bastore
            dup
            iconst_1
            iconst_2
            bastore
            putstatic sun.security.ssl.HandshakeMessage$CertificateRequest.TYPES_NO_ECC:[B
         1: .line 1264
            iconst_3
            newarray 8
            dup
            iconst_0
            iconst_1
            bastore
            dup
            iconst_1
            iconst_2
            bastore
            dup
            iconst_2
            bipush 64
            bastore
         2: .line 1263
            putstatic sun.security.ssl.HandshakeMessage$CertificateRequest.TYPES_ECC:[B
         3: .line 1264
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>(java.security.cert.X509Certificate[], sun.security.ssl.CipherSuite$KeyExchange, java.util.Collection<sun.security.ssl.SignatureAndHashAlgorithm>, sun.security.ssl.ProtocolVersion);
    descriptor: ([Ljava/security/cert/X509Certificate;Lsun/security/ssl/CipherSuite$KeyExchange;Ljava/util/Collection;Lsun/security/ssl/ProtocolVersion;)V
    flags: (0x0000) 
    Code:
      stack=5, locals=7, args_size=5
        start local 0 // sun.security.ssl.HandshakeMessage$CertificateRequest this
        start local 1 // java.security.cert.X509Certificate[] ca
        start local 2 // sun.security.ssl.CipherSuite$KeyExchange keyExchange
        start local 3 // java.util.Collection signAlgs
        start local 4 // sun.security.ssl.ProtocolVersion protocolVersion
         0: .line 1279
            aload 0 /* this */
            invokespecial sun.security.ssl.HandshakeMessage.<init>:()V
         1: .line 1283
            aload 0 /* this */
            aload 4 /* protocolVersion */
            putfield sun.security.ssl.HandshakeMessage$CertificateRequest.protocolVersion:Lsun/security/ssl/ProtocolVersion;
         2: .line 1286
            aload 0 /* this */
            aload 1 /* ca */
            arraylength
            anewarray sun.security.ssl.HandshakeMessage$DistinguishedName
            putfield sun.security.ssl.HandshakeMessage$CertificateRequest.authorities:[Lsun/security/ssl/HandshakeMessage$DistinguishedName;
         3: .line 1287
            iconst_0
            istore 5 /* i */
        start local 5 // int i
         4: goto 8
         5: .line 1288
      StackMap locals: sun.security.ssl.HandshakeMessage$CertificateRequest java.security.cert.X509Certificate[] sun.security.ssl.CipherSuite$KeyExchange java.util.Collection sun.security.ssl.ProtocolVersion int
      StackMap stack:
            aload 1 /* ca */
            iload 5 /* i */
            aaload
            invokevirtual java.security.cert.X509Certificate.getSubjectX500Principal:()Ljavax/security/auth/x500/X500Principal;
            astore 6 /* x500Principal */
        start local 6 // javax.security.auth.x500.X500Principal x500Principal
         6: .line 1289
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.authorities:[Lsun/security/ssl/HandshakeMessage$DistinguishedName;
            iload 5 /* i */
            new sun.security.ssl.HandshakeMessage$DistinguishedName
            dup
            aload 6 /* x500Principal */
            invokespecial sun.security.ssl.HandshakeMessage$DistinguishedName.<init>:(Ljavax/security/auth/x500/X500Principal;)V
            aastore
        end local 6 // javax.security.auth.x500.X500Principal x500Principal
         7: .line 1287
            iinc 5 /* i */ 1
      StackMap locals:
      StackMap stack:
         8: iload 5 /* i */
            aload 1 /* ca */
            arraylength
            if_icmplt 5
        end local 5 // int i
         9: .line 1295
            aload 0 /* this */
            invokestatic sun.security.ssl.JsseJce.isEcAvailable:()Z
            ifeq 10
            getstatic sun.security.ssl.HandshakeMessage$CertificateRequest.TYPES_ECC:[B
            goto 11
      StackMap locals: sun.security.ssl.HandshakeMessage$CertificateRequest java.security.cert.X509Certificate[] sun.security.ssl.CipherSuite$KeyExchange java.util.Collection sun.security.ssl.ProtocolVersion
      StackMap stack: sun.security.ssl.HandshakeMessage$CertificateRequest
        10: getstatic sun.security.ssl.HandshakeMessage$CertificateRequest.TYPES_NO_ECC:[B
      StackMap locals: sun.security.ssl.HandshakeMessage$CertificateRequest java.security.cert.X509Certificate[] sun.security.ssl.CipherSuite$KeyExchange java.util.Collection sun.security.ssl.ProtocolVersion
      StackMap stack: sun.security.ssl.HandshakeMessage$CertificateRequest byte[]
        11: putfield sun.security.ssl.HandshakeMessage$CertificateRequest.types:[B
        12: .line 1298
            aload 4 /* protocolVersion */
            getfield sun.security.ssl.ProtocolVersion.v:I
            getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            if_icmplt 22
        13: .line 1299
            aload 3 /* signAlgs */
            ifnull 14
            aload 3 /* signAlgs */
            invokeinterface java.util.Collection.isEmpty:()Z
            ifeq 17
        14: .line 1300
      StackMap locals:
      StackMap stack:
            new javax.net.ssl.SSLProtocolException
            dup
        15: .line 1301
            ldc "No supported signature algorithms"
        16: .line 1300
            invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
            athrow
        17: .line 1304
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.util.ArrayList
            dup
            aload 3 /* signAlgs */
            invokespecial java.util.ArrayList.<init>:(Ljava/util/Collection;)V
            putfield sun.security.ssl.HandshakeMessage$CertificateRequest.algorithms:Ljava/util/Collection;
        18: .line 1305
            aload 0 /* this */
        19: .line 1306
            invokestatic sun.security.ssl.SignatureAndHashAlgorithm.sizeInRecord:()I
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.algorithms:Ljava/util/Collection;
            invokeinterface java.util.Collection.size:()I
            imul
        20: .line 1305
            putfield sun.security.ssl.HandshakeMessage$CertificateRequest.algorithmsLen:I
        21: .line 1307
            goto 24
        22: .line 1308
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield sun.security.ssl.HandshakeMessage$CertificateRequest.algorithms:Ljava/util/Collection;
        23: .line 1309
            aload 0 /* this */
            iconst_0
            putfield sun.security.ssl.HandshakeMessage$CertificateRequest.algorithmsLen:I
        24: .line 1311
      StackMap locals:
      StackMap stack:
            return
        end local 4 // sun.security.ssl.ProtocolVersion protocolVersion
        end local 3 // java.util.Collection signAlgs
        end local 2 // sun.security.ssl.CipherSuite$KeyExchange keyExchange
        end local 1 // java.security.cert.X509Certificate[] ca
        end local 0 // sun.security.ssl.HandshakeMessage$CertificateRequest this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   25     0             this  Lsun/security/ssl/HandshakeMessage$CertificateRequest;
            0   25     1               ca  [Ljava/security/cert/X509Certificate;
            0   25     2      keyExchange  Lsun/security/ssl/CipherSuite$KeyExchange;
            0   25     3         signAlgs  Ljava/util/Collection<Lsun/security/ssl/SignatureAndHashAlgorithm;>;
            0   25     4  protocolVersion  Lsun/security/ssl/ProtocolVersion;
            4    9     5                i  I
            6    7     6    x500Principal  Ljavax/security/auth/x500/X500Principal;
    Exceptions:
      throws java.io.IOException
    Signature: ([Ljava/security/cert/X509Certificate;Lsun/security/ssl/CipherSuite$KeyExchange;Ljava/util/Collection<Lsun/security/ssl/SignatureAndHashAlgorithm;>;Lsun/security/ssl/ProtocolVersion;)V
    MethodParameters:
                 Name  Flags
      ca               
      keyExchange      
      signAlgs         
      protocolVersion  

  void <init>(sun.security.ssl.HandshakeInStream, sun.security.ssl.ProtocolVersion);
    descriptor: (Lsun/security/ssl/HandshakeInStream;Lsun/security/ssl/ProtocolVersion;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=8, args_size=3
        start local 0 // sun.security.ssl.HandshakeMessage$CertificateRequest this
        start local 1 // sun.security.ssl.HandshakeInStream input
        start local 2 // sun.security.ssl.ProtocolVersion protocolVersion
         0: .line 1313
            aload 0 /* this */
            invokespecial sun.security.ssl.HandshakeMessage.<init>:()V
         1: .line 1316
            aload 0 /* this */
            aload 2 /* protocolVersion */
            putfield sun.security.ssl.HandshakeMessage$CertificateRequest.protocolVersion:Lsun/security/ssl/ProtocolVersion;
         2: .line 1319
            aload 0 /* this */
            aload 1 /* input */
            invokevirtual sun.security.ssl.HandshakeInStream.getBytes8:()[B
            putfield sun.security.ssl.HandshakeMessage$CertificateRequest.types:[B
         3: .line 1322
            aload 2 /* protocolVersion */
            getfield sun.security.ssl.ProtocolVersion.v:I
            getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            if_icmplt 26
         4: .line 1323
            aload 0 /* this */
            aload 1 /* input */
            invokevirtual sun.security.ssl.HandshakeInStream.getInt16:()I
            putfield sun.security.ssl.HandshakeMessage$CertificateRequest.algorithmsLen:I
         5: .line 1324
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.algorithmsLen:I
            iconst_2
            if_icmpge 9
         6: .line 1325
            new javax.net.ssl.SSLProtocolException
            dup
         7: .line 1326
            ldc "Invalid supported_signature_algorithms field"
         8: .line 1325
            invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
            athrow
         9: .line 1329
      StackMap locals: sun.security.ssl.HandshakeMessage$CertificateRequest sun.security.ssl.HandshakeInStream sun.security.ssl.ProtocolVersion
      StackMap stack:
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield sun.security.ssl.HandshakeMessage$CertificateRequest.algorithms:Ljava/util/Collection;
        10: .line 1330
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.algorithmsLen:I
            istore 3 /* remains */
        start local 3 // int remains
        11: .line 1331
            iconst_0
            istore 4 /* sequence */
        start local 4 // int sequence
        12: .line 1332
            goto 21
        13: .line 1333
      StackMap locals: int int
      StackMap stack:
            aload 1 /* input */
            invokevirtual sun.security.ssl.HandshakeInStream.getInt8:()I
            istore 5 /* hash */
        start local 5 // int hash
        14: .line 1334
            aload 1 /* input */
            invokevirtual sun.security.ssl.HandshakeInStream.getInt8:()I
            istore 6 /* signature */
        start local 6 // int signature
        15: .line 1337
            iload 5 /* hash */
            iload 6 /* signature */
        16: .line 1338
            iinc 4 /* sequence */ 1
            iload 4 /* sequence */
        17: .line 1337
            invokestatic sun.security.ssl.SignatureAndHashAlgorithm.valueOf:(III)Lsun/security/ssl/SignatureAndHashAlgorithm;
        18: .line 1336
            astore 7 /* algorithm */
        start local 7 // sun.security.ssl.SignatureAndHashAlgorithm algorithm
        19: .line 1339
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.algorithms:Ljava/util/Collection;
            aload 7 /* algorithm */
            invokeinterface java.util.Collection.add:(Ljava/lang/Object;)Z
            pop
        20: .line 1340
            iinc 3 /* remains */ -2
        end local 7 // sun.security.ssl.SignatureAndHashAlgorithm algorithm
        end local 6 // int signature
        end local 5 // int hash
        21: .line 1332
      StackMap locals:
      StackMap stack:
            iload 3 /* remains */
            iconst_1
            if_icmpgt 13
        22: .line 1343
            iload 3 /* remains */
            ifeq 28
        23: .line 1344
            new javax.net.ssl.SSLProtocolException
            dup
        24: .line 1345
            ldc "Invalid supported_signature_algorithms field"
        25: .line 1344
            invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
            athrow
        end local 4 // int sequence
        end local 3 // int remains
        26: .line 1348
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            putfield sun.security.ssl.HandshakeMessage$CertificateRequest.algorithms:Ljava/util/Collection;
        27: .line 1349
            aload 0 /* this */
            iconst_0
            putfield sun.security.ssl.HandshakeMessage$CertificateRequest.algorithmsLen:I
        28: .line 1353
      StackMap locals:
      StackMap stack:
            aload 1 /* input */
            invokevirtual sun.security.ssl.HandshakeInStream.getInt16:()I
            istore 3 /* len */
        start local 3 // int len
        29: .line 1354
            new java.util.ArrayList
            dup
            invokespecial java.util.ArrayList.<init>:()V
            astore 4 /* v */
        start local 4 // java.util.ArrayList v
        30: .line 1355
            goto 34
        31: .line 1356
      StackMap locals: int java.util.ArrayList
      StackMap stack:
            new sun.security.ssl.HandshakeMessage$DistinguishedName
            dup
            aload 1 /* input */
            invokespecial sun.security.ssl.HandshakeMessage$DistinguishedName.<init>:(Lsun/security/ssl/HandshakeInStream;)V
            astore 5 /* dn */
        start local 5 // sun.security.ssl.HandshakeMessage$DistinguishedName dn
        32: .line 1357
            aload 4 /* v */
            aload 5 /* dn */
            invokevirtual java.util.ArrayList.add:(Ljava/lang/Object;)Z
            pop
        33: .line 1358
            iload 3 /* len */
            aload 5 /* dn */
            invokevirtual sun.security.ssl.HandshakeMessage$DistinguishedName.length:()I
            isub
            istore 3 /* len */
        end local 5 // sun.security.ssl.HandshakeMessage$DistinguishedName dn
        34: .line 1355
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            iconst_3
            if_icmpge 31
        35: .line 1361
            iload 3 /* len */
            ifeq 37
        36: .line 1362
            new javax.net.ssl.SSLProtocolException
            dup
            ldc "Bad CertificateRequest DN length"
            invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
            athrow
        37: .line 1365
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 4 /* v */
            aload 4 /* v */
            invokevirtual java.util.ArrayList.size:()I
            anewarray sun.security.ssl.HandshakeMessage$DistinguishedName
            invokevirtual java.util.ArrayList.toArray:([Ljava/lang/Object;)[Ljava/lang/Object;
            checkcast sun.security.ssl.HandshakeMessage$DistinguishedName[]
            putfield sun.security.ssl.HandshakeMessage$CertificateRequest.authorities:[Lsun/security/ssl/HandshakeMessage$DistinguishedName;
        38: .line 1366
            return
        end local 4 // java.util.ArrayList v
        end local 3 // int len
        end local 2 // sun.security.ssl.ProtocolVersion protocolVersion
        end local 1 // sun.security.ssl.HandshakeInStream input
        end local 0 // sun.security.ssl.HandshakeMessage$CertificateRequest this
      LocalVariableTable:
        Start  End  Slot             Name  Signature
            0   39     0             this  Lsun/security/ssl/HandshakeMessage$CertificateRequest;
            0   39     1            input  Lsun/security/ssl/HandshakeInStream;
            0   39     2  protocolVersion  Lsun/security/ssl/ProtocolVersion;
           11   26     3          remains  I
           12   26     4         sequence  I
           14   21     5             hash  I
           15   21     6        signature  I
           19   21     7        algorithm  Lsun/security/ssl/SignatureAndHashAlgorithm;
           29   39     3              len  I
           30   39     4                v  Ljava/util/ArrayList<Lsun/security/ssl/HandshakeMessage$DistinguishedName;>;
           32   34     5               dn  Lsun/security/ssl/HandshakeMessage$DistinguishedName;
    Exceptions:
      throws java.io.IOException
    MethodParameters:
                 Name  Flags
      input            
      protocolVersion  

  javax.security.auth.x500.X500Principal[] getAuthorities();
    descriptor: ()[Ljavax/security/auth/x500/X500Principal;
    flags: (0x0000) 
    Code:
      stack=4, locals=3, args_size=1
        start local 0 // sun.security.ssl.HandshakeMessage$CertificateRequest this
         0: .line 1369
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.authorities:[Lsun/security/ssl/HandshakeMessage$DistinguishedName;
            arraylength
            anewarray javax.security.auth.x500.X500Principal
            astore 1 /* ret */
        start local 1 // javax.security.auth.x500.X500Principal[] ret
         1: .line 1370
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: goto 5
         3: .line 1371
      StackMap locals: javax.security.auth.x500.X500Principal[] int
      StackMap stack:
            aload 1 /* ret */
            iload 2 /* i */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.authorities:[Lsun/security/ssl/HandshakeMessage$DistinguishedName;
            iload 2 /* i */
            aaload
            invokevirtual sun.security.ssl.HandshakeMessage$DistinguishedName.getX500Principal:()Ljavax/security/auth/x500/X500Principal;
            aastore
         4: .line 1370
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         5: iload 2 /* i */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.authorities:[Lsun/security/ssl/HandshakeMessage$DistinguishedName;
            arraylength
            if_icmplt 3
        end local 2 // int i
         6: .line 1373
            aload 1 /* ret */
            areturn
        end local 1 // javax.security.auth.x500.X500Principal[] ret
        end local 0 // sun.security.ssl.HandshakeMessage$CertificateRequest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Lsun/security/ssl/HandshakeMessage$CertificateRequest;
            1    7     1   ret  [Ljavax/security/auth/x500/X500Principal;
            2    6     2     i  I
    Exceptions:
      throws java.io.IOException

  java.util.Collection<sun.security.ssl.SignatureAndHashAlgorithm> getSignAlgorithms();
    descriptor: ()Ljava/util/Collection;
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.ssl.HandshakeMessage$CertificateRequest this
         0: .line 1377
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.algorithms:Ljava/util/Collection;
            areturn
        end local 0 // sun.security.ssl.HandshakeMessage$CertificateRequest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/ssl/HandshakeMessage$CertificateRequest;
    Signature: ()Ljava/util/Collection<Lsun/security/ssl/SignatureAndHashAlgorithm;>;

  int messageType();
    descriptor: ()I
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // sun.security.ssl.HandshakeMessage$CertificateRequest this
         0: .line 1382
            bipush 13
            ireturn
        end local 0 // sun.security.ssl.HandshakeMessage$CertificateRequest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lsun/security/ssl/HandshakeMessage$CertificateRequest;

  int messageLength();
    descriptor: ()I
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=1
        start local 0 // sun.security.ssl.HandshakeMessage$CertificateRequest this
         0: .line 1387
            iconst_1
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.types:[B
            arraylength
            iadd
            iconst_2
            iadd
            istore 1 /* len */
        start local 1 // int len
         1: .line 1389
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            if_icmplt 3
         2: .line 1390
            iload 1 /* len */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.algorithmsLen:I
            iconst_2
            iadd
            iadd
            istore 1 /* len */
         3: .line 1393
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         4: goto 7
         5: .line 1394
      StackMap locals: int
      StackMap stack:
            iload 1 /* len */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.authorities:[Lsun/security/ssl/HandshakeMessage$DistinguishedName;
            iload 2 /* i */
            aaload
            invokevirtual sun.security.ssl.HandshakeMessage$DistinguishedName.length:()I
            iadd
            istore 1 /* len */
         6: .line 1393
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
         7: iload 2 /* i */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.authorities:[Lsun/security/ssl/HandshakeMessage$DistinguishedName;
            arraylength
            if_icmplt 5
        end local 2 // int i
         8: .line 1397
            iload 1 /* len */
            ireturn
        end local 1 // int len
        end local 0 // sun.security.ssl.HandshakeMessage$CertificateRequest this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Lsun/security/ssl/HandshakeMessage$CertificateRequest;
            1    9     1   len  I
            4    8     2     i  I

  void send(sun.security.ssl.HandshakeOutStream);
    descriptor: (Lsun/security/ssl/HandshakeOutStream;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // sun.security.ssl.HandshakeMessage$CertificateRequest this
        start local 1 // sun.security.ssl.HandshakeOutStream output
         0: .line 1403
            aload 1 /* output */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.types:[B
            invokevirtual sun.security.ssl.HandshakeOutStream.putBytes8:([B)V
         1: .line 1406
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            if_icmplt 8
         2: .line 1407
            aload 1 /* output */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.algorithmsLen:I
            invokevirtual sun.security.ssl.HandshakeOutStream.putInt16:(I)V
         3: .line 1408
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.algorithms:Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 3
            goto 7
      StackMap locals: sun.security.ssl.HandshakeMessage$CertificateRequest sun.security.ssl.HandshakeOutStream top java.util.Iterator
      StackMap stack:
         4: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast sun.security.ssl.SignatureAndHashAlgorithm
            astore 2 /* algorithm */
        start local 2 // sun.security.ssl.SignatureAndHashAlgorithm algorithm
         5: .line 1409
            aload 1 /* output */
            aload 2 /* algorithm */
            invokevirtual sun.security.ssl.SignatureAndHashAlgorithm.getHashValue:()I
            invokevirtual sun.security.ssl.HandshakeOutStream.putInt8:(I)V
         6: .line 1410
            aload 1 /* output */
            aload 2 /* algorithm */
            invokevirtual sun.security.ssl.SignatureAndHashAlgorithm.getSignatureValue:()I
            invokevirtual sun.security.ssl.HandshakeOutStream.putInt8:(I)V
        end local 2 // sun.security.ssl.SignatureAndHashAlgorithm algorithm
         7: .line 1408
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 4
         8: .line 1415
      StackMap locals: sun.security.ssl.HandshakeMessage$CertificateRequest sun.security.ssl.HandshakeOutStream
      StackMap stack:
            iconst_0
            istore 2 /* len */
        start local 2 // int len
         9: .line 1416
            iconst_0
            istore 3 /* i */
        start local 3 // int i
        10: goto 13
        11: .line 1417
      StackMap locals: int int
      StackMap stack:
            iload 2 /* len */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.authorities:[Lsun/security/ssl/HandshakeMessage$DistinguishedName;
            iload 3 /* i */
            aaload
            invokevirtual sun.security.ssl.HandshakeMessage$DistinguishedName.length:()I
            iadd
            istore 2 /* len */
        12: .line 1416
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        13: iload 3 /* i */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.authorities:[Lsun/security/ssl/HandshakeMessage$DistinguishedName;
            arraylength
            if_icmplt 11
        end local 3 // int i
        14: .line 1420
            aload 1 /* output */
            iload 2 /* len */
            invokevirtual sun.security.ssl.HandshakeOutStream.putInt16:(I)V
        15: .line 1421
            iconst_0
            istore 3 /* i */
        start local 3 // int i
        16: goto 19
        17: .line 1422
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.authorities:[Lsun/security/ssl/HandshakeMessage$DistinguishedName;
            iload 3 /* i */
            aaload
            aload 1 /* output */
            invokevirtual sun.security.ssl.HandshakeMessage$DistinguishedName.send:(Lsun/security/ssl/HandshakeOutStream;)V
        18: .line 1421
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        19: iload 3 /* i */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.authorities:[Lsun/security/ssl/HandshakeMessage$DistinguishedName;
            arraylength
            if_icmplt 17
        end local 3 // int i
        20: .line 1424
            return
        end local 2 // int len
        end local 1 // sun.security.ssl.HandshakeOutStream output
        end local 0 // sun.security.ssl.HandshakeMessage$CertificateRequest this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0   21     0       this  Lsun/security/ssl/HandshakeMessage$CertificateRequest;
            0   21     1     output  Lsun/security/ssl/HandshakeOutStream;
            5    7     2  algorithm  Lsun/security/ssl/SignatureAndHashAlgorithm;
            9   21     2        len  I
           10   14     3          i  I
           16   20     3          i  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
        Name  Flags
      output  

  void print(java.io.PrintStream);
    descriptor: (Ljava/io/PrintStream;)V
    flags: (0x0000) 
    Code:
      stack=4, locals=6, args_size=2
        start local 0 // sun.security.ssl.HandshakeMessage$CertificateRequest this
        start local 1 // java.io.PrintStream s
         0: .line 1428
            aload 1 /* s */
            ldc "*** CertificateRequest"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
         1: .line 1430
            getstatic sun.security.ssl.HandshakeMessage$CertificateRequest.debug:Lsun/security/ssl/Debug;
            ifnull 42
            ldc "verbose"
            invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
            ifeq 42
         2: .line 1431
            aload 1 /* s */
            ldc "Cert Types: "
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
         3: .line 1432
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         4: goto 19
         5: .line 1433
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.types:[B
            iload 2 /* i */
            baload
            lookupswitch { // 9
                    1: 6
                    2: 7
                    3: 8
                    4: 9
                    5: 10
                    6: 11
                   64: 12
                   65: 13
                   66: 14
              default: 15
          }
         6: .line 1435
      StackMap locals:
      StackMap stack:
            aload 1 /* s */
            ldc "RSA"
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
            goto 16
         7: .line 1437
      StackMap locals:
      StackMap stack:
            aload 1 /* s */
            ldc "DSS"
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
            goto 16
         8: .line 1439
      StackMap locals:
      StackMap stack:
            aload 1 /* s */
            ldc "Fixed DH (RSA sig)"
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
            goto 16
         9: .line 1441
      StackMap locals:
      StackMap stack:
            aload 1 /* s */
            ldc "Fixed DH (DSS sig)"
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
            goto 16
        10: .line 1443
      StackMap locals:
      StackMap stack:
            aload 1 /* s */
            ldc "Ephemeral DH (RSA sig)"
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
            goto 16
        11: .line 1445
      StackMap locals:
      StackMap stack:
            aload 1 /* s */
            ldc "Ephemeral DH (DSS sig)"
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
            goto 16
        12: .line 1447
      StackMap locals:
      StackMap stack:
            aload 1 /* s */
            ldc "ECDSA"
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
            goto 16
        13: .line 1449
      StackMap locals:
      StackMap stack:
            aload 1 /* s */
            ldc "Fixed ECDH (RSA sig)"
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
            goto 16
        14: .line 1451
      StackMap locals:
      StackMap stack:
            aload 1 /* s */
            ldc "Fixed ECDH (ECDSA sig)"
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
            goto 16
        15: .line 1453
      StackMap locals:
      StackMap stack:
            aload 1 /* s */
            new java.lang.StringBuilder
            dup
            ldc "Type-"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.types:[B
            iload 2 /* i */
            baload
            sipush 255
            iand
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
        16: .line 1455
      StackMap locals:
      StackMap stack:
            iload 2 /* i */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.types:[B
            arraylength
            iconst_1
            isub
            if_icmpeq 18
        17: .line 1456
            aload 1 /* s */
            ldc ", "
            invokevirtual java.io.PrintStream.print:(Ljava/lang/String;)V
        18: .line 1432
      StackMap locals:
      StackMap stack:
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        19: iload 2 /* i */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.types:[B
            arraylength
            if_icmplt 5
        end local 2 // int i
        20: .line 1459
            aload 1 /* s */
            invokevirtual java.io.PrintStream.println:()V
        21: .line 1461
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.protocolVersion:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            getstatic sun.security.ssl.ProtocolVersion.TLS12:Lsun/security/ssl/ProtocolVersion;
            getfield sun.security.ssl.ProtocolVersion.v:I
            if_icmplt 33
        22: .line 1462
            new java.lang.StringBuffer
            dup
            invokespecial java.lang.StringBuffer.<init>:()V
            astore 2 /* buffer */
        start local 2 // java.lang.StringBuffer buffer
        23: .line 1463
            iconst_0
            istore 3 /* opened */
        start local 3 // boolean opened
        24: .line 1464
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.algorithms:Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 5
            goto 31
      StackMap locals: sun.security.ssl.HandshakeMessage$CertificateRequest java.io.PrintStream java.lang.StringBuffer int top java.util.Iterator
      StackMap stack:
        25: aload 5
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast sun.security.ssl.SignatureAndHashAlgorithm
            astore 4 /* signAlg */
        start local 4 // sun.security.ssl.SignatureAndHashAlgorithm signAlg
        26: .line 1465
            iload 3 /* opened */
            ifeq 29
        27: .line 1466
            aload 2 /* buffer */
            new java.lang.StringBuilder
            dup
            ldc ", "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 4 /* signAlg */
            invokevirtual sun.security.ssl.SignatureAndHashAlgorithm.getAlgorithmName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        28: .line 1467
            goto 31
        29: .line 1468
      StackMap locals: sun.security.ssl.HandshakeMessage$CertificateRequest java.io.PrintStream java.lang.StringBuffer int sun.security.ssl.SignatureAndHashAlgorithm java.util.Iterator
      StackMap stack:
            aload 2 /* buffer */
            aload 4 /* signAlg */
            invokevirtual sun.security.ssl.SignatureAndHashAlgorithm.getAlgorithmName:()Ljava/lang/String;
            invokevirtual java.lang.StringBuffer.append:(Ljava/lang/String;)Ljava/lang/StringBuffer;
            pop
        30: .line 1469
            iconst_1
            istore 3 /* opened */
        end local 4 // sun.security.ssl.SignatureAndHashAlgorithm signAlg
        31: .line 1464
      StackMap locals: sun.security.ssl.HandshakeMessage$CertificateRequest java.io.PrintStream java.lang.StringBuffer int top java.util.Iterator
      StackMap stack:
            aload 5
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 25
        32: .line 1472
            aload 1 /* s */
            new java.lang.StringBuilder
            dup
            ldc "Supported Signature Algorithms: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            aload 2 /* buffer */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        end local 3 // boolean opened
        end local 2 // java.lang.StringBuffer buffer
        33: .line 1475
      StackMap locals: sun.security.ssl.HandshakeMessage$CertificateRequest java.io.PrintStream
      StackMap stack:
            aload 1 /* s */
            ldc "Cert Authorities:"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        34: .line 1476
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.authorities:[Lsun/security/ssl/HandshakeMessage$DistinguishedName;
            arraylength
            ifne 37
        35: .line 1477
            aload 1 /* s */
            ldc "<Empty>"
            invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
        36: .line 1478
            goto 42
        37: .line 1479
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 2 /* i */
        start local 2 // int i
        38: goto 41
        39: .line 1480
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.authorities:[Lsun/security/ssl/HandshakeMessage$DistinguishedName;
            iload 2 /* i */
            aaload
            aload 1 /* s */
            invokevirtual sun.security.ssl.HandshakeMessage$DistinguishedName.print:(Ljava/io/PrintStream;)V
        40: .line 1479
            iinc 2 /* i */ 1
      StackMap locals:
      StackMap stack:
        41: iload 2 /* i */
            aload 0 /* this */
            getfield sun.security.ssl.HandshakeMessage$CertificateRequest.authorities:[Lsun/security/ssl/HandshakeMessage$DistinguishedName;
            arraylength
            if_icmplt 39
        end local 2 // int i
        42: .line 1484
      StackMap locals:
      StackMap stack:
            return
        end local 1 // java.io.PrintStream s
        end local 0 // sun.security.ssl.HandshakeMessage$CertificateRequest this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   43     0     this  Lsun/security/ssl/HandshakeMessage$CertificateRequest;
            0   43     1        s  Ljava/io/PrintStream;
            4   20     2        i  I
           23   33     2   buffer  Ljava/lang/StringBuffer;
           24   33     3   opened  Z
           26   31     4  signAlg  Lsun/security/ssl/SignatureAndHashAlgorithm;
           38   42     2        i  I
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      s     
}
SourceFile: "HandshakeMessage.java"
NestHost: sun.security.ssl.HandshakeMessage
InnerClasses:
  final KeyExchange = sun.security.ssl.CipherSuite$KeyExchange of sun.security.ssl.CipherSuite
  final CertificateRequest = sun.security.ssl.HandshakeMessage$CertificateRequest of sun.security.ssl.HandshakeMessage
  final DistinguishedName = sun.security.ssl.HandshakeMessage$DistinguishedName of sun.security.ssl.HandshakeMessage