final class sun.security.ssl.CertificateAuthoritiesExtension$CertificateAuthoritiesSpec implements sun.security.ssl.SSLExtension$SSLExtensionSpec
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: sun.security.ssl.CertificateAuthoritiesExtension$CertificateAuthoritiesSpec
  super_class: java.lang.Object
{
  final java.util.List<byte[]> authorities;
    descriptor: Ljava/util/List;
    flags: (0x0010) ACC_FINAL
    Signature: Ljava/util/List<[B>;

  private void <init>(java.util.List<byte[]>);
    descriptor: (Ljava/util/List;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // sun.security.ssl.CertificateAuthoritiesExtension$CertificateAuthoritiesSpec this
        start local 1 // java.util.List authorities
         0: .line 62
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 63
            aload 0 /* this */
            aload 1 /* authorities */
            putfield sun.security.ssl.CertificateAuthoritiesExtension$CertificateAuthoritiesSpec.authorities:Ljava/util/List;
         2: .line 64
            return
        end local 1 // java.util.List authorities
        end local 0 // sun.security.ssl.CertificateAuthoritiesExtension$CertificateAuthoritiesSpec this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    3     0         this  Lsun/security/ssl/CertificateAuthoritiesExtension$CertificateAuthoritiesSpec;
            0    3     1  authorities  Ljava/util/List<[B>;
    Signature: (Ljava/util/List<[B>;)V
    MethodParameters:
             Name  Flags
      authorities  

  private void <init>(sun.security.ssl.HandshakeContext, java.nio.ByteBuffer);
    descriptor: (Lsun/security/ssl/HandshakeContext;Ljava/nio/ByteBuffer;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=5, args_size=3
        start local 0 // sun.security.ssl.CertificateAuthoritiesExtension$CertificateAuthoritiesSpec this
        start local 1 // sun.security.ssl.HandshakeContext hc
        start local 2 // java.nio.ByteBuffer m
         0: .line 66
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 68
            aload 2 /* m */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            iconst_3
            if_icmpge 7
         2: .line 70
            aload 1 /* hc */
            getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.DECODE_ERROR:Lsun/security/ssl/Alert;
         3: .line 71
            new javax.net.ssl.SSLProtocolException
            dup
         4: .line 72
            ldc "Invalid certificate_authorities extension: insufficient data"
         5: .line 71
            invokespecial javax.net.ssl.SSLProtocolException.<init>:(Ljava/lang/String;)V
         6: .line 70
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/Throwable;)Ljavax/net/ssl/SSLException;
            athrow
         7: .line 76
      StackMap locals: sun.security.ssl.CertificateAuthoritiesExtension$CertificateAuthoritiesSpec sun.security.ssl.HandshakeContext java.nio.ByteBuffer
      StackMap stack:
            aload 2 /* m */
            invokestatic sun.security.ssl.Record.getInt16:(Ljava/nio/ByteBuffer;)I
            istore 3 /* listLen */
        start local 3 // int listLen
         8: .line 77
            iload 3 /* listLen */
            ifne 12
         9: .line 78
            aload 1 /* hc */
            getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.DECODE_ERROR:Lsun/security/ssl/Alert;
        10: .line 79
            ldc "Invalid certificate_authorities extension: no certificate authorities"
        11: .line 78
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        12: .line 83
      StackMap locals: int
      StackMap stack:
            iload 3 /* listLen */
            aload 2 /* m */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            if_icmple 16
        13: .line 84
            aload 1 /* hc */
            getfield sun.security.ssl.HandshakeContext.conContext:Lsun/security/ssl/TransportContext;
            getstatic sun.security.ssl.Alert.DECODE_ERROR:Lsun/security/ssl/Alert;
        14: .line 85
            ldc "Invalid certificate_authorities extension: insufficient data"
        15: .line 84
            invokevirtual sun.security.ssl.TransportContext.fatal:(Lsun/security/ssl/Alert;Ljava/lang/String;)Ljavax/net/ssl/SSLException;
            athrow
        16: .line 89
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            new java.util.LinkedList
            dup
            invokespecial java.util.LinkedList.<init>:()V
            putfield sun.security.ssl.CertificateAuthoritiesExtension$CertificateAuthoritiesSpec.authorities:Ljava/util/List;
        17: .line 90
            goto 21
        18: .line 92
      StackMap locals:
      StackMap stack:
            aload 2 /* m */
            invokestatic sun.security.ssl.Record.getBytes16:(Ljava/nio/ByteBuffer;)[B
            astore 4 /* encoded */
        start local 4 // byte[] encoded
        19: .line 93
            iload 3 /* listLen */
            iconst_2
            aload 4 /* encoded */
            arraylength
            iadd
            isub
            istore 3 /* listLen */
        20: .line 94
            aload 0 /* this */
            getfield sun.security.ssl.CertificateAuthoritiesExtension$CertificateAuthoritiesSpec.authorities:Ljava/util/List;
            aload 4 /* encoded */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 4 // byte[] encoded
        21: .line 90
      StackMap locals:
      StackMap stack:
            iload 3 /* listLen */
            ifgt 18
        22: .line 96
            return
        end local 3 // int listLen
        end local 2 // java.nio.ByteBuffer m
        end local 1 // sun.security.ssl.HandshakeContext hc
        end local 0 // sun.security.ssl.CertificateAuthoritiesExtension$CertificateAuthoritiesSpec this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0   23     0     this  Lsun/security/ssl/CertificateAuthoritiesExtension$CertificateAuthoritiesSpec;
            0   23     1       hc  Lsun/security/ssl/HandshakeContext;
            0   23     2        m  Ljava/nio/ByteBuffer;
            8   23     3  listLen  I
           19   21     4  encoded  [B
    Exceptions:
      throws java.io.IOException
    MethodParameters:
      Name  Flags
      hc    
      m     

  private static java.util.List<byte[]> getEncodedAuthorities(java.security.cert.X509Certificate[]);
    descriptor: ([Ljava/security/cert/X509Certificate;)Ljava/util/List;
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=9, args_size=1
        start local 0 // java.security.cert.X509Certificate[] trustedCerts
         0: .line 100
            new java.util.ArrayList
            dup
            aload 0 /* trustedCerts */
            arraylength
            invokespecial java.util.ArrayList.<init>:(I)V
            astore 1 /* authorities */
        start local 1 // java.util.List authorities
         1: .line 101
            iconst_0
            istore 2 /* sizeAccount */
        start local 2 // int sizeAccount
         2: .line 102
            aload 0 /* trustedCerts */
            dup
            astore 6
            arraylength
            istore 5
            iconst_0
            istore 4
            goto 12
      StackMap locals: java.security.cert.X509Certificate[] java.util.List int top int int java.security.cert.X509Certificate[]
      StackMap stack:
         3: aload 6
            iload 4
            aaload
            astore 3 /* cert */
        start local 3 // java.security.cert.X509Certificate cert
         4: .line 103
            aload 3 /* cert */
            invokevirtual java.security.cert.X509Certificate.getSubjectX500Principal:()Ljavax/security/auth/x500/X500Principal;
            astore 7 /* x500Principal */
        start local 7 // javax.security.auth.x500.X500Principal x500Principal
         5: .line 104
            aload 7 /* x500Principal */
            invokevirtual javax.security.auth.x500.X500Principal.getEncoded:()[B
            astore 8 /* encodedPrincipal */
        start local 8 // byte[] encodedPrincipal
         6: .line 105
            iload 2 /* sizeAccount */
            aload 8 /* encodedPrincipal */
            arraylength
            iadd
            istore 2 /* sizeAccount */
         7: .line 106
            iload 2 /* sizeAccount */
            ldc 65535
            if_icmple 9
         8: .line 114
            invokestatic java.util.Collections.emptyList:()Ljava/util/List;
            areturn
         9: .line 117
      StackMap locals: java.security.cert.X509Certificate[] java.util.List int java.security.cert.X509Certificate int int java.security.cert.X509Certificate[] javax.security.auth.x500.X500Principal byte[]
      StackMap stack:
            aload 8 /* encodedPrincipal */
            arraylength
            ifeq 11
        10: .line 118
            aload 1 /* authorities */
            aload 8 /* encodedPrincipal */
            invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
            pop
        end local 8 // byte[] encodedPrincipal
        end local 7 // javax.security.auth.x500.X500Principal x500Principal
        end local 3 // java.security.cert.X509Certificate cert
        11: .line 102
      StackMap locals: java.security.cert.X509Certificate[] java.util.List int top int int java.security.cert.X509Certificate[]
      StackMap stack:
            iinc 4 1
      StackMap locals:
      StackMap stack:
        12: iload 4
            iload 5
            if_icmplt 3
        13: .line 122
            aload 1 /* authorities */
            areturn
        end local 2 // int sizeAccount
        end local 1 // java.util.List authorities
        end local 0 // java.security.cert.X509Certificate[] trustedCerts
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0   14     0      trustedCerts  [Ljava/security/cert/X509Certificate;
            1   14     1       authorities  Ljava/util/List<[B>;
            2   14     2       sizeAccount  I
            4   11     3              cert  Ljava/security/cert/X509Certificate;
            5   11     7     x500Principal  Ljavax/security/auth/x500/X500Principal;
            6   11     8  encodedPrincipal  [B
    Signature: ([Ljava/security/cert/X509Certificate;)Ljava/util/List<[B>;
    MethodParameters:
              Name  Flags
      trustedCerts  

  javax.security.auth.x500.X500Principal[] getAuthorities();
    descriptor: ()[Ljavax/security/auth/x500/X500Principal;
    flags: (0x0000) 
    Code:
      stack=5, locals=5, args_size=1
        start local 0 // sun.security.ssl.CertificateAuthoritiesExtension$CertificateAuthoritiesSpec this
         0: .line 126
            aload 0 /* this */
            getfield sun.security.ssl.CertificateAuthoritiesExtension$CertificateAuthoritiesSpec.authorities:Ljava/util/List;
            invokeinterface java.util.List.size:()I
            anewarray javax.security.auth.x500.X500Principal
            astore 1 /* principals */
        start local 1 // javax.security.auth.x500.X500Principal[] principals
         1: .line 127
            iconst_0
            istore 2 /* i */
        start local 2 // int i
         2: .line 128
            aload 0 /* this */
            getfield sun.security.ssl.CertificateAuthoritiesExtension$CertificateAuthoritiesSpec.authorities:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 5
      StackMap locals: sun.security.ssl.CertificateAuthoritiesExtension$CertificateAuthoritiesSpec javax.security.auth.x500.X500Principal[] int top java.util.Iterator
      StackMap stack:
         3: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast byte[]
            astore 3 /* encoded */
        start local 3 // byte[] encoded
         4: .line 129
            aload 1 /* principals */
            iload 2 /* i */
            iinc 2 /* i */ 1
            new javax.security.auth.x500.X500Principal
            dup
            aload 3 /* encoded */
            invokespecial javax.security.auth.x500.X500Principal.<init>:([B)V
            aastore
        end local 3 // byte[] encoded
         5: .line 128
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         6: .line 132
            aload 1 /* principals */
            areturn
        end local 2 // int i
        end local 1 // javax.security.auth.x500.X500Principal[] principals
        end local 0 // sun.security.ssl.CertificateAuthoritiesExtension$CertificateAuthoritiesSpec this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    7     0        this  Lsun/security/ssl/CertificateAuthoritiesExtension$CertificateAuthoritiesSpec;
            1    7     1  principals  [Ljavax/security/auth/x500/X500Principal;
            2    7     2           i  I
            4    5     3     encoded  [B

  public java.lang.String toString();
    descriptor: ()Ljava/lang/String;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=6, args_size=1
        start local 0 // sun.security.ssl.CertificateAuthoritiesExtension$CertificateAuthoritiesSpec this
         0: .line 137
            new java.text.MessageFormat
            dup
         1: .line 138
            ldc "\"certificate authorities\": '['\n{0}']'"
            getstatic java.util.Locale.ENGLISH:Ljava/util/Locale;
         2: .line 137
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;Ljava/util/Locale;)V
            astore 1 /* messageFormat */
        start local 1 // java.text.MessageFormat messageFormat
         3: .line 139
            new java.lang.StringBuilder
            dup
            sipush 512
            invokespecial java.lang.StringBuilder.<init>:(I)V
            astore 2 /* builder */
        start local 2 // java.lang.StringBuilder builder
         4: .line 140
            aload 0 /* this */
            getfield sun.security.ssl.CertificateAuthoritiesExtension$CertificateAuthoritiesSpec.authorities:Ljava/util/List;
            invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
            astore 4
            goto 9
      StackMap locals: sun.security.ssl.CertificateAuthoritiesExtension$CertificateAuthoritiesSpec java.text.MessageFormat java.lang.StringBuilder top java.util.Iterator
      StackMap stack:
         5: aload 4
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast byte[]
            astore 3 /* encoded */
        start local 3 // byte[] encoded
         6: .line 141
            new javax.security.auth.x500.X500Principal
            dup
            aload 3 /* encoded */
            invokespecial javax.security.auth.x500.X500Principal.<init>:([B)V
            astore 5 /* principal */
        start local 5 // javax.security.auth.x500.X500Principal principal
         7: .line 142
            aload 2 /* builder */
            aload 5 /* principal */
            invokevirtual javax.security.auth.x500.X500Principal.toString:()Ljava/lang/String;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
         8: .line 143
            aload 2 /* builder */
            ldc "\n"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        end local 5 // javax.security.auth.x500.X500Principal principal
        end local 3 // byte[] encoded
         9: .line 140
      StackMap locals:
      StackMap stack:
            aload 4
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 5
        10: .line 145
            iconst_1
            anewarray java.lang.Object
            dup
            iconst_0
        11: .line 146
            aload 2 /* builder */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic sun.security.ssl.Utilities.indent:(Ljava/lang/String;)Ljava/lang/String;
            aastore
        12: .line 145
            astore 3 /* messageFields */
        start local 3 // java.lang.Object[] messageFields
        13: .line 149
            aload 1 /* messageFormat */
            aload 3 /* messageFields */
            invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
            areturn
        end local 3 // java.lang.Object[] messageFields
        end local 2 // java.lang.StringBuilder builder
        end local 1 // java.text.MessageFormat messageFormat
        end local 0 // sun.security.ssl.CertificateAuthoritiesExtension$CertificateAuthoritiesSpec this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   14     0           this  Lsun/security/ssl/CertificateAuthoritiesExtension$CertificateAuthoritiesSpec;
            3   14     1  messageFormat  Ljava/text/MessageFormat;
            4   14     2        builder  Ljava/lang/StringBuilder;
            6    9     3        encoded  [B
            7    9     5      principal  Ljavax/security/auth/x500/X500Principal;
           13   14     3  messageFields  [Ljava/lang/Object;
}
SourceFile: "CertificateAuthoritiesExtension.java"
NestHost: sun.security.ssl.CertificateAuthoritiesExtension
InnerClasses:
  final CertificateAuthoritiesSpec = sun.security.ssl.CertificateAuthoritiesExtension$CertificateAuthoritiesSpec of sun.security.ssl.CertificateAuthoritiesExtension
  abstract SSLExtensionSpec = sun.security.ssl.SSLExtension$SSLExtensionSpec of sun.security.ssl.SSLExtension