class com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Factory extends com.microsoft.sqlserver.jdbc.SQLServerEncryptionAlgorithmFactory
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Factory
  super_class: com.microsoft.sqlserver.jdbc.SQLServerEncryptionAlgorithmFactory
{
  private byte algorithmVersion;
    descriptor: B
    flags: (0x0002) ACC_PRIVATE

  private java.util.concurrent.ConcurrentHashMap<java.lang.String, com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm> encryptionAlgorithms;
    descriptor: Ljava/util/concurrent/ConcurrentHashMap;
    flags: (0x0002) ACC_PRIVATE
    Signature: Ljava/util/concurrent/ConcurrentHashMap<Ljava/lang/String;Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;>;

  static final boolean $assertionsDisabled;
    descriptor: Z
    flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 18
            ldc Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Factory;
            invokevirtual java.lang.Class.desiredAssertionStatus:()Z
            ifne 1
            iconst_1
            goto 2
      StackMap locals:
      StackMap stack:
         1: iconst_0
      StackMap locals:
      StackMap stack: int
         2: putstatic com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Factory.$assertionsDisabled:Z
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  void <init>();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=3, locals=1, args_size=1
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Factory this
         0: .line 18
            aload 0 /* this */
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerEncryptionAlgorithmFactory.<init>:()V
         1: .line 20
            aload 0 /* this */
            iconst_1
            putfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Factory.algorithmVersion:B
         2: .line 21
            aload 0 /* this */
            new java.util.concurrent.ConcurrentHashMap
            dup
            invokespecial java.util.concurrent.ConcurrentHashMap.<init>:()V
            putfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Factory.encryptionAlgorithms:Ljava/util/concurrent/ConcurrentHashMap;
         3: .line 18
            return
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Factory this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    4     0  this  Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Factory;

  com.microsoft.sqlserver.jdbc.SQLServerEncryptionAlgorithm create(com.microsoft.sqlserver.jdbc.SQLServerSymmetricKey, com.microsoft.sqlserver.jdbc.SQLServerEncryptionType, java.lang.String);
    descriptor: (Lcom/microsoft/sqlserver/jdbc/SQLServerSymmetricKey;Lcom/microsoft/sqlserver/jdbc/SQLServerEncryptionType;Ljava/lang/String;)Lcom/microsoft/sqlserver/jdbc/SQLServerEncryptionAlgorithm;
    flags: (0x0000) 
    Code:
      stack=7, locals=8, args_size=4
        start local 0 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Factory this
        start local 1 // com.microsoft.sqlserver.jdbc.SQLServerSymmetricKey columnEncryptionKey
        start local 2 // com.microsoft.sqlserver.jdbc.SQLServerEncryptionType encryptionType
        start local 3 // java.lang.String encryptionAlgorithm
         0: .line 27
            getstatic com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Factory.$assertionsDisabled:Z
            ifne 1
            aload 1 /* columnEncryptionKey */
            ifnonnull 1
            new java.lang.AssertionError
            dup
            invokespecial java.lang.AssertionError.<init>:()V
            athrow
         1: .line 28
      StackMap locals:
      StackMap stack:
            aload 2 /* encryptionType */
            getstatic com.microsoft.sqlserver.jdbc.SQLServerEncryptionType.Deterministic:Lcom/microsoft/sqlserver/jdbc/SQLServerEncryptionType;
            if_acmpeq 8
         2: .line 29
            aload 2 /* encryptionType */
            getstatic com.microsoft.sqlserver.jdbc.SQLServerEncryptionType.Randomized:Lcom/microsoft/sqlserver/jdbc/SQLServerEncryptionType;
            if_acmpeq 8
         3: .line 30
            new java.text.MessageFormat
            dup
            ldc "R_InvalidEncryptionType"
            invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
            invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
            astore 4 /* form */
        start local 4 // java.text.MessageFormat form
         4: .line 31
            iconst_3
            anewarray java.lang.Object
            dup
            iconst_0
            aload 2 /* encryptionType */
            aastore
            dup
            iconst_1
            aload 3 /* encryptionAlgorithm */
            aastore
            dup
            iconst_2
         5: .line 32
            new java.lang.StringBuilder
            dup
            ldc "'"
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            getstatic com.microsoft.sqlserver.jdbc.SQLServerEncryptionType.Deterministic:Lcom/microsoft/sqlserver/jdbc/SQLServerEncryptionType;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc ","
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            getstatic com.microsoft.sqlserver.jdbc.SQLServerEncryptionType.Randomized:Lcom/microsoft/sqlserver/jdbc/SQLServerEncryptionType;
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            ldc "'"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            aastore
         6: .line 31
            astore 5 /* msgArgs */
        start local 5 // java.lang.Object[] msgArgs
         7: .line 33
            new com.microsoft.sqlserver.jdbc.SQLServerException
            dup
            aload 0 /* this */
            aload 4 /* form */
            aload 5 /* msgArgs */
            invokevirtual java.text.MessageFormat.format:(Ljava/lang/Object;)Ljava/lang/String;
            aconst_null
            iconst_0
            iconst_0
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;IZ)V
            athrow
        end local 5 // java.lang.Object[] msgArgs
        end local 4 // java.text.MessageFormat form
         8: .line 37
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            invokespecial java.lang.StringBuilder.<init>:()V
            astore 4 /* factoryKeyBuilder */
        start local 4 // java.lang.StringBuilder factoryKeyBuilder
         9: .line 38
            aload 4 /* factoryKeyBuilder */
        10: .line 39
            invokestatic java.util.Base64.getEncoder:()Ljava/util/Base64$Encoder;
            new java.lang.String
            dup
            aload 1 /* columnEncryptionKey */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerSymmetricKey.getRootKey:()[B
            getstatic java.nio.charset.StandardCharsets.UTF_8:Ljava/nio/charset/Charset;
            invokespecial java.lang.String.<init>:([BLjava/nio/charset/Charset;)V
            invokevirtual java.lang.String.getBytes:()[B
            invokevirtual java.util.Base64$Encoder.encodeToString:([B)Ljava/lang/String;
        11: .line 38
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        12: .line 41
            aload 4 /* factoryKeyBuilder */
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        13: .line 42
            aload 4 /* factoryKeyBuilder */
            aload 2 /* encryptionType */
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
            pop
        14: .line 43
            aload 4 /* factoryKeyBuilder */
            ldc ":"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            pop
        15: .line 44
            aload 4 /* factoryKeyBuilder */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Factory.algorithmVersion:B
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            pop
        16: .line 46
            aload 4 /* factoryKeyBuilder */
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            astore 5 /* factoryKey */
        start local 5 // java.lang.String factoryKey
        17: .line 50
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Factory.encryptionAlgorithms:Ljava/util/concurrent/ConcurrentHashMap;
            aload 5 /* factoryKey */
            invokevirtual java.util.concurrent.ConcurrentHashMap.containsKey:(Ljava/lang/Object;)Z
            ifne 23
        18: .line 51
            new com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256EncryptionKey
            dup
        19: .line 52
            aload 1 /* columnEncryptionKey */
            invokevirtual com.microsoft.sqlserver.jdbc.SQLServerSymmetricKey.getRootKey:()[B
            ldc "AEAD_AES_256_CBC_HMAC_SHA256"
        20: .line 51
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256EncryptionKey.<init>:([BLjava/lang/String;)V
            astore 7 /* encryptedKey */
        start local 7 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256EncryptionKey encryptedKey
        21: .line 53
            new com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm
            dup
            aload 7 /* encryptedKey */
            aload 2 /* encryptionType */
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Factory.algorithmVersion:B
            invokespecial com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.<init>:(Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256EncryptionKey;Lcom/microsoft/sqlserver/jdbc/SQLServerEncryptionType;B)V
            astore 6 /* aesAlgorithm */
        start local 6 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm aesAlgorithm
        22: .line 54
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Factory.encryptionAlgorithms:Ljava/util/concurrent/ConcurrentHashMap;
            aload 5 /* factoryKey */
            aload 6 /* aesAlgorithm */
            invokevirtual java.util.concurrent.ConcurrentHashMap.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        end local 7 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256EncryptionKey encryptedKey
        end local 6 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm aesAlgorithm
        23: .line 57
      StackMap locals: java.lang.StringBuilder java.lang.String
      StackMap stack:
            aload 0 /* this */
            getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Factory.encryptionAlgorithms:Ljava/util/concurrent/ConcurrentHashMap;
            aload 5 /* factoryKey */
            invokevirtual java.util.concurrent.ConcurrentHashMap.get:(Ljava/lang/Object;)Ljava/lang/Object;
            checkcast com.microsoft.sqlserver.jdbc.SQLServerEncryptionAlgorithm
            areturn
        end local 5 // java.lang.String factoryKey
        end local 4 // java.lang.StringBuilder factoryKeyBuilder
        end local 3 // java.lang.String encryptionAlgorithm
        end local 2 // com.microsoft.sqlserver.jdbc.SQLServerEncryptionType encryptionType
        end local 1 // com.microsoft.sqlserver.jdbc.SQLServerSymmetricKey columnEncryptionKey
        end local 0 // com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Factory this
      LocalVariableTable:
        Start  End  Slot                 Name  Signature
            0   24     0                 this  Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Factory;
            0   24     1  columnEncryptionKey  Lcom/microsoft/sqlserver/jdbc/SQLServerSymmetricKey;
            0   24     2       encryptionType  Lcom/microsoft/sqlserver/jdbc/SQLServerEncryptionType;
            0   24     3  encryptionAlgorithm  Ljava/lang/String;
            4    8     4                 form  Ljava/text/MessageFormat;
            7    8     5              msgArgs  [Ljava/lang/Object;
            9   24     4    factoryKeyBuilder  Ljava/lang/StringBuilder;
           17   24     5           factoryKey  Ljava/lang/String;
           22   23     6         aesAlgorithm  Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
           21   23     7         encryptedKey  Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256EncryptionKey;
    Exceptions:
      throws com.microsoft.sqlserver.jdbc.SQLServerException
    MethodParameters:
                     Name  Flags
      columnEncryptionKey  
      encryptionType       
      encryptionAlgorithm  
}
SourceFile: "SQLServerAeadAes256CbcHmac256Factory.java"
InnerClasses:
  public Encoder = java.util.Base64$Encoder of java.util.Base64