public class com.sun.jndi.ldap.sasl.TlsChannelBinding
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: com.sun.jndi.ldap.sasl.TlsChannelBinding
  super_class: java.lang.Object
{
  public static final java.lang.String CHANNEL_BINDING_TYPE;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "com.sun.jndi.ldap.tls.cbtype"

  public static final java.lang.String CHANNEL_BINDING;
    descriptor: Ljava/lang/String;
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: "jdk.internal.sasl.tlschannelbinding"

  private final com.sun.jndi.ldap.sasl.TlsChannelBinding$TlsChannelBindingType cbType;
    descriptor: Lcom/sun/jndi/ldap/sasl/TlsChannelBinding$TlsChannelBindingType;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final byte[] cbData;
    descriptor: [B
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  public static com.sun.jndi.ldap.sasl.TlsChannelBinding$TlsChannelBindingType parseType(java.lang.String);
    descriptor: (Ljava/lang/String;)Lcom/sun/jndi/ldap/sasl/TlsChannelBinding$TlsChannelBindingType;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // java.lang.String cbType
         0: .line 90
            aload 0 /* cbType */
            ifnull 4
         1: .line 91
            aload 0 /* cbType */
            getstatic com.sun.jndi.ldap.sasl.TlsChannelBinding$TlsChannelBindingType.TLS_SERVER_END_POINT:Lcom/sun/jndi/ldap/sasl/TlsChannelBinding$TlsChannelBindingType;
            invokevirtual com.sun.jndi.ldap.sasl.TlsChannelBinding$TlsChannelBindingType.getName:()Ljava/lang/String;
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 3
         2: .line 92
            getstatic com.sun.jndi.ldap.sasl.TlsChannelBinding$TlsChannelBindingType.TLS_SERVER_END_POINT:Lcom/sun/jndi/ldap/sasl/TlsChannelBinding$TlsChannelBindingType;
            areturn
         3: .line 94
      StackMap locals:
      StackMap stack:
            new javax.naming.NamingException
            dup
            ldc "Illegal value for com.sun.jndi.ldap.tls.cbtype property."
            invokespecial javax.naming.NamingException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 98
      StackMap locals:
      StackMap stack:
            aconst_null
            areturn
        end local 0 // java.lang.String cbType
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    5     0  cbType  Ljava/lang/String;
    Exceptions:
      throws javax.naming.NamingException
    MethodParameters:
        Name  Flags
      cbType  

  public static com.sun.jndi.ldap.sasl.TlsChannelBinding create(java.security.cert.X509Certificate);
    descriptor: (Ljava/security/cert/X509Certificate;)Lcom/sun/jndi/ldap/sasl/TlsChannelBinding;
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=5, locals=7, args_size=1
        start local 0 // java.security.cert.X509Certificate serverCertificate
         0: .line 112
            getstatic com.sun.jndi.ldap.sasl.TlsChannelBinding$TlsChannelBindingType.TLS_SERVER_END_POINT:Lcom/sun/jndi/ldap/sasl/TlsChannelBinding$TlsChannelBindingType;
            invokevirtual com.sun.jndi.ldap.sasl.TlsChannelBinding$TlsChannelBindingType.getName:()Ljava/lang/String;
            ldc ":"
            invokevirtual java.lang.String.concat:(Ljava/lang/String;)Ljava/lang/String;
            invokevirtual java.lang.String.getBytes:()[B
         1: .line 111
            astore 1 /* prefix */
        start local 1 // byte[] prefix
         2: .line 113
            aload 0 /* serverCertificate */
            invokevirtual java.security.cert.X509Certificate.getSigAlgName:()Ljava/lang/String;
         3: .line 114
            ldc "SHA"
            ldc "SHA-"
            invokevirtual java.lang.String.replace:(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;
            invokevirtual java.lang.String.toUpperCase:()Ljava/lang/String;
         4: .line 113
            astore 2 /* hashAlg */
        start local 2 // java.lang.String hashAlg
         5: .line 115
            aload 2 /* hashAlg */
            ldc "WITH"
            invokevirtual java.lang.String.indexOf:(Ljava/lang/String;)I
            istore 3 /* ind */
        start local 3 // int ind
         6: .line 116
            iload 3 /* ind */
            ifle 11
         7: .line 117
            aload 2 /* hashAlg */
            iconst_0
            iload 3 /* ind */
            invokevirtual java.lang.String.substring:(II)Ljava/lang/String;
            astore 2 /* hashAlg */
         8: .line 118
            aload 2 /* hashAlg */
            ldc "MD5"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifne 9
            aload 2 /* hashAlg */
            ldc "SHA-1"
            invokevirtual java.lang.String.equals:(Ljava/lang/Object;)Z
            ifeq 12
         9: .line 119
      StackMap locals: byte[] java.lang.String int
      StackMap stack:
            ldc "SHA-256"
            astore 2 /* hashAlg */
        10: .line 121
            goto 12
        11: .line 122
      StackMap locals:
      StackMap stack:
            ldc "SHA-256"
            astore 2 /* hashAlg */
        12: .line 124
      StackMap locals:
      StackMap stack:
            aload 2 /* hashAlg */
            invokestatic java.security.MessageDigest.getInstance:(Ljava/lang/String;)Ljava/security/MessageDigest;
            astore 4 /* md */
        start local 4 // java.security.MessageDigest md
        13: .line 125
            aload 4 /* md */
            aload 0 /* serverCertificate */
            invokevirtual java.security.cert.X509Certificate.getEncoded:()[B
            invokevirtual java.security.MessageDigest.digest:([B)[B
            astore 5 /* hash */
        start local 5 // byte[] hash
        14: .line 126
            aload 1 /* prefix */
            aload 1 /* prefix */
            arraylength
            aload 5 /* hash */
            arraylength
            iadd
            invokestatic java.util.Arrays.copyOf:([BI)[B
            astore 6 /* cbData */
        start local 6 // byte[] cbData
        15: .line 127
            aload 5 /* hash */
            iconst_0
            aload 6 /* cbData */
            aload 1 /* prefix */
            arraylength
            aload 5 /* hash */
            arraylength
            invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
        16: .line 128
            new com.sun.jndi.ldap.sasl.TlsChannelBinding
            dup
            getstatic com.sun.jndi.ldap.sasl.TlsChannelBinding$TlsChannelBindingType.TLS_SERVER_END_POINT:Lcom/sun/jndi/ldap/sasl/TlsChannelBinding$TlsChannelBindingType;
            aload 6 /* cbData */
            invokespecial com.sun.jndi.ldap.sasl.TlsChannelBinding.<init>:(Lcom/sun/jndi/ldap/sasl/TlsChannelBinding$TlsChannelBindingType;[B)V
        17: areturn
        end local 6 // byte[] cbData
        end local 5 // byte[] hash
        end local 4 // java.security.MessageDigest md
        end local 3 // int ind
        end local 2 // java.lang.String hashAlg
        end local 1 // byte[] prefix
        18: .line 129
      StackMap locals: java.security.cert.X509Certificate
      StackMap stack: java.security.GeneralSecurityException
            astore 1 /* e */
        start local 1 // java.security.GeneralSecurityException e
        19: .line 130
            new javax.security.sasl.SaslException
            dup
            ldc "Cannot create TLS channel binding data"
            aload 1 /* e */
            invokespecial javax.security.sasl.SaslException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
            athrow
        end local 1 // java.security.GeneralSecurityException e
        end local 0 // java.security.cert.X509Certificate serverCertificate
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   20     0  serverCertificate  Ljava/security/cert/X509Certificate;
            2   18     1             prefix  [B
            5   18     2            hashAlg  Ljava/lang/String;
            6   18     3                ind  I
           13   18     4                 md  Ljava/security/MessageDigest;
           14   18     5               hash  [B
           15   18     6             cbData  [B
           19   20     1                  e  Ljava/security/GeneralSecurityException;
      Exception table:
        from    to  target  type
           0    17      18  Class java.security.NoSuchAlgorithmException
           0    17      18  Class java.security.cert.CertificateEncodingException
    Exceptions:
      throws javax.security.sasl.SaslException
    MethodParameters:
                   Name  Flags
      serverCertificate  

  private void <init>(com.sun.jndi.ldap.sasl.TlsChannelBinding$TlsChannelBindingType, byte[]);
    descriptor: (Lcom/sun/jndi/ldap/sasl/TlsChannelBinding$TlsChannelBindingType;[B)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // com.sun.jndi.ldap.sasl.TlsChannelBinding this
        start local 1 // com.sun.jndi.ldap.sasl.TlsChannelBinding$TlsChannelBindingType cbType
        start local 2 // byte[] cbData
         0: .line 134
            aload 0 /* this */
            invokespecial java.lang.Object.<init>:()V
         1: .line 135
            aload 0 /* this */
            aload 1 /* cbType */
            putfield com.sun.jndi.ldap.sasl.TlsChannelBinding.cbType:Lcom/sun/jndi/ldap/sasl/TlsChannelBinding$TlsChannelBindingType;
         2: .line 136
            aload 0 /* this */
            aload 2 /* cbData */
            putfield com.sun.jndi.ldap.sasl.TlsChannelBinding.cbData:[B
         3: .line 137
            return
        end local 2 // byte[] cbData
        end local 1 // com.sun.jndi.ldap.sasl.TlsChannelBinding$TlsChannelBindingType cbType
        end local 0 // com.sun.jndi.ldap.sasl.TlsChannelBinding this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Lcom/sun/jndi/ldap/sasl/TlsChannelBinding;
            0    4     1  cbType  Lcom/sun/jndi/ldap/sasl/TlsChannelBinding$TlsChannelBindingType;
            0    4     2  cbData  [B
    MethodParameters:
        Name  Flags
      cbType  
      cbData  

  public com.sun.jndi.ldap.sasl.TlsChannelBinding$TlsChannelBindingType getType();
    descriptor: ()Lcom/sun/jndi/ldap/sasl/TlsChannelBinding$TlsChannelBindingType;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.jndi.ldap.sasl.TlsChannelBinding this
         0: .line 140
            aload 0 /* this */
            getfield com.sun.jndi.ldap.sasl.TlsChannelBinding.cbType:Lcom/sun/jndi/ldap/sasl/TlsChannelBinding$TlsChannelBindingType;
            areturn
        end local 0 // com.sun.jndi.ldap.sasl.TlsChannelBinding this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/jndi/ldap/sasl/TlsChannelBinding;

  public byte[] getData();
    descriptor: ()[B
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // com.sun.jndi.ldap.sasl.TlsChannelBinding this
         0: .line 144
            aload 0 /* this */
            getfield com.sun.jndi.ldap.sasl.TlsChannelBinding.cbData:[B
            areturn
        end local 0 // com.sun.jndi.ldap.sasl.TlsChannelBinding this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Lcom/sun/jndi/ldap/sasl/TlsChannelBinding;
}
SourceFile: "TlsChannelBinding.java"
NestMembers:
  com.sun.jndi.ldap.sasl.TlsChannelBinding$TlsChannelBindingType
InnerClasses:
  public final TlsChannelBindingType = com.sun.jndi.ldap.sasl.TlsChannelBinding$TlsChannelBindingType of com.sun.jndi.ldap.sasl.TlsChannelBinding