class com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm extends com.microsoft.sqlserver.jdbc.SQLServerEncryptionAlgorithm
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm
super_class: com.microsoft.sqlserver.jdbc.SQLServerEncryptionAlgorithm
{
private static final java.util.logging.Logger aeLogger;
descriptor: Ljava/util/logging/Logger;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
static final java.lang.String algorithmName;
descriptor: Ljava/lang/String;
flags: (0x0018) ACC_STATIC, ACC_FINAL
ConstantValue: "AEAD_AES_256_CBC_HMAC_SHA256"
private com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256EncryptionKey columnEncryptionkey;
descriptor: Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256EncryptionKey;
flags: (0x0002) ACC_PRIVATE
private byte algorithmVersion;
descriptor: B
flags: (0x0002) ACC_PRIVATE
private boolean isDeterministic;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private int blockSizeInBytes;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int keySizeInBytes;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private byte[] version;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private byte[] versionSize;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private int minimumCipherTextLengthInBytesNoAuthenticationTag;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int minimumCipherTextLengthInBytesWithAuthenticationTag;
descriptor: I
flags: (0x0002) ACC_PRIVATE
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: ldc Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
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.SQLServerAeadAes256CbcHmac256Algorithm.$assertionsDisabled:Z
3: ldc "com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm"
invokestatic java.util.logging.Logger.getLogger:(Ljava/lang/String;)Ljava/util/logging/Logger;
4: putstatic com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.aeLogger:Ljava/util/logging/Logger;
5: return
LocalVariableTable:
Start End Slot Name Signature
void <init>(com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256EncryptionKey, com.microsoft.sqlserver.jdbc.SQLServerEncryptionType, byte);
descriptor: (Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256EncryptionKey;Lcom/microsoft/sqlserver/jdbc/SQLServerEncryptionType;B)V
flags: (0x0000)
Code:
stack=5, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokespecial com.microsoft.sqlserver.jdbc.SQLServerEncryptionAlgorithm.<init>:()V
1: aload 0
iconst_0
putfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.isDeterministic:Z
2: aload 0
bipush 16
putfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.blockSizeInBytes:I
3: aload 0
bipush 32
putfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.keySizeInBytes:I
4: aload 0
iconst_1
newarray 8
dup
iconst_0
iconst_1
bastore
putfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.version:[B
5: aload 0
iconst_1
newarray 8
dup
iconst_0
iconst_1
bastore
putfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.versionSize:[B
6: aload 0
iconst_1
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.blockSizeInBytes:I
iadd
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.blockSizeInBytes:I
iadd
putfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.minimumCipherTextLengthInBytesNoAuthenticationTag:I
7: aload 0
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.minimumCipherTextLengthInBytesNoAuthenticationTag:I
8: aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.keySizeInBytes:I
9: iadd
putfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.minimumCipherTextLengthInBytesWithAuthenticationTag:I
10: aload 0
aload 1
putfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.columnEncryptionkey:Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256EncryptionKey;
11: aload 2
getstatic com.microsoft.sqlserver.jdbc.SQLServerEncryptionType.Deterministic:Lcom/microsoft/sqlserver/jdbc/SQLServerEncryptionType;
if_acmpne 13
12: aload 0
iconst_1
putfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.isDeterministic:Z
13: StackMap locals: com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256EncryptionKey com.microsoft.sqlserver.jdbc.SQLServerEncryptionType int
StackMap stack:
aload 0
iload 3
putfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.algorithmVersion:B
14: aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.version:[B
iconst_0
iload 3
bastore
15: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
0 16 1 columnEncryptionkey Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256EncryptionKey;
0 16 2 encryptionType Lcom/microsoft/sqlserver/jdbc/SQLServerEncryptionType;
0 16 3 algorithmVersion B
MethodParameters:
Name Flags
columnEncryptionkey
encryptionType
algorithmVersion
byte[] encryptData(byte[]);
descriptor: ([B)[B
flags: (0x0000)
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
iconst_1
invokevirtual com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.encryptData:([BZ)[B
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
0 1 1 plainText [B
Exceptions:
throws com.microsoft.sqlserver.jdbc.SQLServerException
MethodParameters:
Name Flags
plainText
protected byte[] encryptData(byte[], boolean);
descriptor: ([BZ)[B
flags: (0x0004) ACC_PROTECTED
Code:
stack=7, locals=20, args_size=3
start local 0 start local 1 start local 2 0: getstatic com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.aeLogger:Ljava/util/logging/Logger;
ldc Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
ldc "encryptData"
ldc "Encrypting data."
invokevirtual java.util.logging.Logger.entering:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V
1: getstatic com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.$assertionsDisabled:Z
ifne 2
aload 1
ifnonnull 2
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.blockSizeInBytes:I
newarray 8
astore 3
start local 3 3: new javax.crypto.spec.SecretKeySpec
dup
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.columnEncryptionkey:Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256EncryptionKey;
invokevirtual com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256EncryptionKey.getEncryptionKey:()[B
ldc "AES"
invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
astore 4
start local 4 4: aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.isDeterministic:Z
ifeq 13
5: aload 1
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.columnEncryptionkey:Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256EncryptionKey;
invokevirtual com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256EncryptionKey.getIVKey:()[B
6: aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.blockSizeInBytes:I
7: invokestatic com.microsoft.sqlserver.jdbc.SQLServerSecurityUtility.getHMACWithSHA256:([B[BI)[B
astore 3
8: goto 15
StackMap locals: com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm byte[] int byte[] javax.crypto.spec.SecretKeySpec
StackMap stack: java.security.GeneralSecurityException
9: astore 5
start local 5 10: new java.text.MessageFormat
dup
ldc "R_EncryptionFailed"
invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
astore 6
start local 6 11: iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 5
invokevirtual java.security.GeneralSecurityException.getMessage:()Ljava/lang/String;
aastore
astore 7
start local 7 12: new com.microsoft.sqlserver.jdbc.SQLServerException
dup
aload 0
aload 6
aload 7
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 7 end local 6 end local 5 13: StackMap locals:
StackMap stack:
new java.security.SecureRandom
dup
invokespecial java.security.SecureRandom.<init>:()V
astore 5
start local 5 14: aload 5
aload 3
invokevirtual java.security.SecureRandom.nextBytes:([B)V
end local 5 15: StackMap locals:
StackMap stack:
aload 1
arraylength
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.blockSizeInBytes:I
idiv
iconst_1
iadd
istore 5
start local 5 16: iconst_1
istore 6
start local 6 17: iload 2
ifeq 18
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.keySizeInBytes:I
goto 19
StackMap locals: int int
StackMap stack:
18: iconst_0
StackMap locals:
StackMap stack: int
19: istore 7
start local 7 20: iload 6
iload 7
iadd
istore 8
start local 8 21: iload 8
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.blockSizeInBytes:I
iadd
istore 9
start local 9 22: iconst_1
iload 7
iadd
aload 3
arraylength
iadd
iload 5
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.blockSizeInBytes:I
imul
iadd
istore 10
start local 10 23: iload 10
newarray 8
astore 11
start local 11 24: aload 11
iconst_0
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.algorithmVersion:B
bastore
25: aload 3
iconst_0
aload 11
iload 8
aload 3
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
26: new javax.crypto.spec.IvParameterSpec
dup
aload 3
invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
astore 12
start local 12 27: ldc "AES/CBC/PKCS5Padding"
invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
astore 13
start local 13 28: aload 13
iconst_1
aload 4
aload 12
invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
29: iconst_0
istore 14
start local 14 30: iload 9
istore 15
start local 15 31: iload 5
iconst_1
if_icmple 34
32: iload 5
iconst_1
isub
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.blockSizeInBytes:I
imul
istore 14
33: iload 15
aload 13
aload 1
iconst_0
iload 14
aload 11
iload 15
invokevirtual javax.crypto.Cipher.update:([BII[BI)I
iadd
istore 15
34: StackMap locals: com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm byte[] int byte[] javax.crypto.spec.SecretKeySpec int int int int int int byte[] javax.crypto.spec.IvParameterSpec javax.crypto.Cipher int int
StackMap stack:
aload 13
aload 1
iload 14
aload 1
arraylength
iload 14
isub
invokevirtual javax.crypto.Cipher.doFinal:([BII)[B
astore 16
start local 16 35: aload 16
iconst_0
aload 11
iload 15
aload 16
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
36: iload 2
ifeq 51
37: ldc "HmacSHA256"
invokestatic javax.crypto.Mac.getInstance:(Ljava/lang/String;)Ljavax/crypto/Mac;
astore 17
start local 17 38: new javax.crypto.spec.SecretKeySpec
dup
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.columnEncryptionkey:Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256EncryptionKey;
invokevirtual com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256EncryptionKey.getMacKey:()[B
ldc "HmacSHA256"
invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
astore 18
start local 18 39: aload 17
aload 18
invokevirtual javax.crypto.Mac.init:(Ljava/security/Key;)V
40: aload 17
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.version:[B
iconst_0
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.version:[B
arraylength
invokevirtual javax.crypto.Mac.update:([BII)V
41: aload 17
aload 3
iconst_0
aload 3
arraylength
invokevirtual javax.crypto.Mac.update:([BII)V
42: aload 17
aload 11
iload 9
iload 5
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.blockSizeInBytes:I
imul
invokevirtual javax.crypto.Mac.update:([BII)V
43: aload 17
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.versionSize:[B
iconst_0
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.version:[B
arraylength
invokevirtual javax.crypto.Mac.update:([BII)V
44: aload 17
invokevirtual javax.crypto.Mac.doFinal:()[B
astore 19
start local 19 45: aload 19
iconst_0
aload 11
iload 6
iload 7
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
end local 19 end local 18 end local 17 end local 16 end local 15 end local 14 end local 13 end local 12 46: goto 51
47: StackMap locals: com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm byte[] int byte[] javax.crypto.spec.SecretKeySpec int int int int int int byte[]
StackMap stack: java.security.GeneralSecurityException
astore 12
start local 12 48: new java.text.MessageFormat
dup
ldc "R_EncryptionFailed"
invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
astore 13
start local 13 49: iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 12
invokevirtual java.security.GeneralSecurityException.getMessage:()Ljava/lang/String;
aastore
astore 14
start local 14 50: new com.microsoft.sqlserver.jdbc.SQLServerException
dup
aload 0
aload 13
aload 14
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 14 end local 13 end local 12 51: StackMap locals:
StackMap stack:
getstatic com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.aeLogger:Ljava/util/logging/Logger;
ldc Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
ldc "encryptData"
ldc "Data encrypted."
invokevirtual java.util.logging.Logger.exiting:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V
52: aload 11
areturn
end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 53 0 this Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
0 53 1 plainText [B
0 53 2 hasAuthenticationTag Z
3 53 3 iv [B
4 53 4 skeySpec Ljavax/crypto/spec/SecretKeySpec;
10 13 5 e Ljava/security/GeneralSecurityException;
11 13 6 form Ljava/text/MessageFormat;
12 13 7 msgArgs [Ljava/lang/Object;
14 15 5 random Ljava/security/SecureRandom;
16 53 5 numBlocks I
17 53 6 hmacStartIndex I
20 53 7 authenticationTagLen I
21 53 8 ivStartIndex I
22 53 9 cipherStartIndex I
23 53 10 outputBufSize I
24 53 11 outBuffer [B
27 46 12 ivector Ljavax/crypto/spec/IvParameterSpec;
28 46 13 encryptCipher Ljavax/crypto/Cipher;
30 46 14 count I
31 46 15 cipherIndex I
35 46 16 buffTmp [B
38 46 17 hmac Ljavax/crypto/Mac;
39 46 18 initkey Ljavax/crypto/spec/SecretKeySpec;
45 46 19 hash [B
48 51 12 e Ljava/security/GeneralSecurityException;
49 51 13 form Ljava/text/MessageFormat;
50 51 14 msgArgs [Ljava/lang/Object;
Exception table:
from to target type
5 8 9 Class java.security.InvalidKeyException
5 8 9 Class java.security.NoSuchAlgorithmException
26 46 47 Class java.security.NoSuchAlgorithmException
26 46 47 Class java.security.InvalidAlgorithmParameterException
26 46 47 Class java.security.InvalidKeyException
26 46 47 Class javax.crypto.NoSuchPaddingException
26 46 47 Class javax.crypto.IllegalBlockSizeException
26 46 47 Class javax.crypto.BadPaddingException
26 46 47 Class javax.crypto.ShortBufferException
Exceptions:
throws com.microsoft.sqlserver.jdbc.SQLServerException
MethodParameters:
Name Flags
plainText
hasAuthenticationTag
byte[] decryptData(byte[]);
descriptor: ([B)[B
flags: (0x0000)
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
iconst_1
invokevirtual com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.decryptData:([BZ)[B
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
0 1 1 cipherText [B
Exceptions:
throws com.microsoft.sqlserver.jdbc.SQLServerException
MethodParameters:
Name Flags
cipherText
private byte[] decryptData(byte[], boolean);
descriptor: ([BZ)[B
flags: (0x0002) ACC_PRIVATE
Code:
stack=9, locals=13, args_size=3
start local 0 start local 1 start local 2 0: getstatic com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.$assertionsDisabled:Z
ifne 1
aload 1
ifnonnull 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.blockSizeInBytes:I
newarray 8
astore 3
start local 3 2: iload 2
ifeq 3
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.minimumCipherTextLengthInBytesWithAuthenticationTag:I
goto 4
3: StackMap locals: byte[]
StackMap stack:
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.minimumCipherTextLengthInBytesNoAuthenticationTag:I
4: StackMap locals:
StackMap stack: int
istore 4
start local 4 5: aload 1
arraylength
iload 4
if_icmpge 9
6: new java.text.MessageFormat
dup
ldc "R_InvalidCipherTextSize"
invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
astore 5
start local 5 7: iconst_2
anewarray java.lang.Object
dup
iconst_0
aload 1
arraylength
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
dup
iconst_1
iload 4
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aastore
astore 6
start local 6 8: new com.microsoft.sqlserver.jdbc.SQLServerException
dup
aload 0
aload 5
aload 6
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 6 end local 5 9: StackMap locals: int
StackMap stack:
iconst_0
istore 5
start local 5 10: aload 1
iload 5
baload
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.algorithmVersion:B
if_icmpeq 16
11: new java.text.MessageFormat
dup
ldc "R_InvalidAlgorithmVersion"
invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
astore 6
start local 6 12: iconst_2
anewarray java.lang.Object
dup
iconst_0
ldc "%02X "
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 1
iload 5
baload
invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
aastore
dup
iconst_1
13: ldc "%02X "
iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.algorithmVersion:B
invokestatic java.lang.Byte.valueOf:(B)Ljava/lang/Byte;
aastore
invokestatic java.lang.String.format:(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
aastore
14: astore 7
start local 7 15: new com.microsoft.sqlserver.jdbc.SQLServerException
dup
aload 0
aload 6
aload 7
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 7 end local 6 16: StackMap locals: int
StackMap stack:
iinc 5 1
17: iconst_0
istore 6
start local 6 18: iload 2
ifeq 21
19: iload 5
istore 6
20: iload 5
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.keySizeInBytes:I
iadd
istore 5
21: StackMap locals: int
StackMap stack:
aload 1
iload 5
aload 3
iconst_0
aload 3
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
22: iload 5
aload 3
arraylength
iadd
istore 5
23: iload 5
istore 7
start local 7 24: aload 1
arraylength
iload 5
isub
istore 8
start local 8 25: iload 2
ifeq 39
26: aload 0
aload 3
aload 1
iload 7
iload 8
invokevirtual com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.prepareAuthenticationTag:([B[BII)[B
astore 9
start local 9 27: goto 32
end local 9 StackMap locals: com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm byte[] int byte[] int int int int int
StackMap stack: java.security.GeneralSecurityException
28: astore 10
start local 10 29: new java.text.MessageFormat
dup
ldc "R_DecryptionFailed"
invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
astore 11
start local 11 30: iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 10
invokevirtual java.security.GeneralSecurityException.getMessage:()Ljava/lang/String;
aastore
astore 12
start local 12 31: new com.microsoft.sqlserver.jdbc.SQLServerException
dup
aload 0
aload 11
aload 12
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 12 end local 11 end local 10 start local 9 32: StackMap locals: byte[]
StackMap stack:
aload 9
aload 1
iload 6
33: iload 8
34: invokestatic com.microsoft.sqlserver.jdbc.SQLServerSecurityUtility.compareBytes:([B[BII)Z
35: ifne 39
36: new com.microsoft.sqlserver.jdbc.SQLServerException
dup
aload 0
ldc "R_InvalidAuthenticationTag"
invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
aconst_null
37: iconst_0
iconst_0
38: invokespecial com.microsoft.sqlserver.jdbc.SQLServerException.<init>:(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;IZ)V
athrow
end local 9 39: StackMap locals:
StackMap stack:
aload 0
aload 3
aload 1
iload 7
iload 8
invokevirtual com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.decryptData:([B[BII)[B
areturn
end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 40 0 this Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
0 40 1 cipherText [B
0 40 2 hasAuthenticationTag Z
2 40 3 iv [B
5 40 4 minimumCipherTextLength I
7 9 5 form Ljava/text/MessageFormat;
8 9 6 msgArgs [Ljava/lang/Object;
10 40 5 startIndex I
12 16 6 form Ljava/text/MessageFormat;
15 16 7 msgArgs [Ljava/lang/Object;
18 40 6 authenticationTagOffset I
24 40 7 cipherTextOffset I
25 40 8 cipherTextCount I
27 28 9 authenticationTag [B
32 39 9 authenticationTag [B
29 32 10 e Ljava/security/GeneralSecurityException;
30 32 11 form Ljava/text/MessageFormat;
31 32 12 msgArgs [Ljava/lang/Object;
Exception table:
from to target type
26 27 28 Class java.security.InvalidKeyException
26 27 28 Class java.security.NoSuchAlgorithmException
Exceptions:
throws com.microsoft.sqlserver.jdbc.SQLServerException
MethodParameters:
Name Flags
cipherText
hasAuthenticationTag
private byte[] decryptData(byte[], byte[], int, int);
descriptor: ([B[BII)[B
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=12, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: getstatic com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.aeLogger:Ljava/util/logging/Logger;
ldc Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
ldc "decryptData"
ldc "Decrypting data."
invokevirtual java.util.logging.Logger.entering:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V
1: getstatic com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.$assertionsDisabled:Z
ifne 2
aload 2
ifnonnull 2
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
getstatic com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.$assertionsDisabled:Z
ifne 3
aload 1
ifnonnull 3
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
3: StackMap locals:
StackMap stack:
aconst_null
astore 5
start local 5 4: new javax.crypto.spec.SecretKeySpec
dup
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.columnEncryptionkey:Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256EncryptionKey;
invokevirtual com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256EncryptionKey.getEncryptionKey:()[B
ldc "AES"
invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
astore 6
start local 6 5: new javax.crypto.spec.IvParameterSpec
dup
aload 1
invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
astore 7
start local 7 6: ldc "AES/CBC/PKCS5Padding"
invokestatic javax.crypto.Cipher.getInstance:(Ljava/lang/String;)Ljavax/crypto/Cipher;
astore 8
start local 8 7: aload 8
iconst_2
aload 6
aload 7
invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
8: aload 8
aload 2
iload 3
iload 4
invokevirtual javax.crypto.Cipher.doFinal:([BII)[B
astore 5
9: goto 14
end local 8 10: StackMap locals: com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm byte[] byte[] int int byte[] javax.crypto.spec.SecretKeySpec javax.crypto.spec.IvParameterSpec
StackMap stack: java.security.GeneralSecurityException
astore 9
start local 9 11: new java.text.MessageFormat
dup
ldc "R_DecryptionFailed"
invokestatic com.microsoft.sqlserver.jdbc.SQLServerException.getErrString:(Ljava/lang/String;)Ljava/lang/String;
invokespecial java.text.MessageFormat.<init>:(Ljava/lang/String;)V
astore 10
start local 10 12: iconst_1
anewarray java.lang.Object
dup
iconst_0
aload 9
invokevirtual java.security.GeneralSecurityException.getMessage:()Ljava/lang/String;
aastore
astore 11
start local 11 13: new com.microsoft.sqlserver.jdbc.SQLServerException
dup
aload 0
aload 10
aload 11
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 11 end local 10 end local 9 start local 8 14: StackMap locals: javax.crypto.Cipher
StackMap stack:
getstatic com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.aeLogger:Ljava/util/logging/Logger;
ldc Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
ldc "decryptData"
ldc "Data decrypted."
invokevirtual java.util.logging.Logger.exiting:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V
15: aload 5
areturn
end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
0 16 1 iv [B
0 16 2 cipherText [B
0 16 3 offset I
0 16 4 count I
4 16 5 plainText [B
5 16 6 skeySpec Ljavax/crypto/spec/SecretKeySpec;
6 16 7 ivector Ljavax/crypto/spec/IvParameterSpec;
7 10 8 decryptCipher Ljavax/crypto/Cipher;
14 16 8 decryptCipher Ljavax/crypto/Cipher;
11 14 9 e Ljava/security/GeneralSecurityException;
12 14 10 form Ljava/text/MessageFormat;
13 14 11 msgArgs [Ljava/lang/Object;
Exception table:
from to target type
6 9 10 Class java.security.NoSuchAlgorithmException
6 9 10 Class java.security.InvalidAlgorithmParameterException
6 9 10 Class java.security.InvalidKeyException
6 9 10 Class javax.crypto.NoSuchPaddingException
6 9 10 Class javax.crypto.IllegalBlockSizeException
6 9 10 Class javax.crypto.BadPaddingException
Exceptions:
throws com.microsoft.sqlserver.jdbc.SQLServerException
MethodParameters:
Name Flags
iv
cipherText
offset
count
private byte[] prepareAuthenticationTag(byte[], byte[], int, int);
descriptor: ([B[BII)[B
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=9, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: getstatic com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.$assertionsDisabled:Z
ifne 1
aload 2
ifnonnull 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.keySizeInBytes:I
newarray 8
astore 6
start local 6 2: ldc "HmacSHA256"
invokestatic javax.crypto.Mac.getInstance:(Ljava/lang/String;)Ljavax/crypto/Mac;
astore 7
start local 7 3: new javax.crypto.spec.SecretKeySpec
dup
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.columnEncryptionkey:Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256EncryptionKey;
invokevirtual com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256EncryptionKey.getMacKey:()[B
ldc "HmacSHA256"
invokespecial javax.crypto.spec.SecretKeySpec.<init>:([BLjava/lang/String;)V
astore 8
start local 8 4: aload 7
aload 8
invokevirtual javax.crypto.Mac.init:(Ljava/security/Key;)V
5: aload 7
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.version:[B
iconst_0
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.version:[B
arraylength
invokevirtual javax.crypto.Mac.update:([BII)V
6: aload 7
aload 1
iconst_0
aload 1
arraylength
invokevirtual javax.crypto.Mac.update:([BII)V
7: aload 7
aload 2
iload 3
iload 4
invokevirtual javax.crypto.Mac.update:([BII)V
8: aload 7
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.versionSize:[B
iconst_0
aload 0
getfield com.microsoft.sqlserver.jdbc.SQLServerAeadAes256CbcHmac256Algorithm.version:[B
arraylength
invokevirtual javax.crypto.Mac.update:([BII)V
9: aload 7
invokevirtual javax.crypto.Mac.doFinal:()[B
astore 5
start local 5 10: aload 5
iconst_0
aload 6
iconst_0
aload 6
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
11: aload 6
areturn
end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lcom/microsoft/sqlserver/jdbc/SQLServerAeadAes256CbcHmac256Algorithm;
0 12 1 iv [B
0 12 2 cipherText [B
0 12 3 offset I
0 12 4 length I
10 12 5 computedHash [B
2 12 6 authenticationTag [B
3 12 7 hmac Ljavax/crypto/Mac;
4 12 8 key Ljavax/crypto/spec/SecretKeySpec;
Exceptions:
throws java.security.NoSuchAlgorithmException, java.security.InvalidKeyException
MethodParameters:
Name Flags
iv
cipherText
offset
length
}
SourceFile: "SQLServerAeadAes256CbcHmac256Algorithm.java"