final class sun.security.ssl.CipherBox
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: sun.security.ssl.CipherBox
super_class: java.lang.Object
{
static final sun.security.ssl.CipherBox NULL;
descriptor: Lsun/security/ssl/CipherBox;
flags: (0x0018) ACC_STATIC, ACC_FINAL
private static final sun.security.ssl.Debug debug;
descriptor: Lsun/security/ssl/Debug;
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
private final sun.security.ssl.ProtocolVersion protocolVersion;
descriptor: Lsun/security/ssl/ProtocolVersion;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final javax.crypto.Cipher cipher;
descriptor: Ljavax/crypto/Cipher;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private java.security.SecureRandom random;
descriptor: Ljava/security/SecureRandom;
flags: (0x0002) ACC_PRIVATE
private final byte[] fixedIv;
descriptor: [B
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final java.security.Key key;
descriptor: Ljava/security/Key;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int mode;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int tagSize;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int recordIvSize;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final sun.security.ssl.CipherSuite$CipherType cipherType;
descriptor: Lsun/security/ssl/CipherSuite$CipherType;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private static java.util.Hashtable<java.lang.Integer, javax.crypto.spec.IvParameterSpec> masks;
descriptor: Ljava/util/Hashtable;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Signature: Ljava/util/Hashtable<Ljava/lang/Integer;Ljavax/crypto/spec/IvParameterSpec;>;
private static volatile int[] $SWITCH_TABLE$sun$security$ssl$CipherSuite$CipherType;
descriptor: [I
flags: (0x104a) ACC_PRIVATE, ACC_STATIC, ACC_VOLATILE, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=2, locals=0, args_size=0
0: new sun.security.ssl.CipherBox
dup
invokespecial sun.security.ssl.CipherBox.<init>:()V
putstatic sun.security.ssl.CipherBox.NULL:Lsun/security/ssl/CipherBox;
1: ldc "ssl"
invokestatic sun.security.ssl.Debug.getInstance:(Ljava/lang/String;)Lsun/security/ssl/Debug;
putstatic sun.security.ssl.CipherBox.debug:Lsun/security/ssl/Debug;
2: return
LocalVariableTable:
Start End Slot Name Signature
private void <init>();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
getstatic sun.security.ssl.ProtocolVersion.DEFAULT_TLS:Lsun/security/ssl/ProtocolVersion;
putfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
2: aload 0
aconst_null
putfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
3: aload 0
getstatic sun.security.ssl.CipherSuite$CipherType.NULL_CIPHER:Lsun/security/ssl/CipherSuite$CipherType;
putfield sun.security.ssl.CipherBox.cipherType:Lsun/security/ssl/CipherSuite$CipherType;
4: aload 0
iconst_0
newarray 8
putfield sun.security.ssl.CipherBox.fixedIv:[B
5: aload 0
aconst_null
putfield sun.security.ssl.CipherBox.key:Ljava/security/Key;
6: aload 0
iconst_1
putfield sun.security.ssl.CipherBox.mode:I
7: aload 0
aconst_null
putfield sun.security.ssl.CipherBox.random:Ljava/security/SecureRandom;
8: aload 0
iconst_0
putfield sun.security.ssl.CipherBox.tagSize:I
9: aload 0
iconst_0
putfield sun.security.ssl.CipherBox.recordIvSize:I
10: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lsun/security/ssl/CipherBox;
private void <init>(sun.security.ssl.ProtocolVersion, sun.security.ssl.CipherSuite$BulkCipher, javax.crypto.SecretKey, javax.crypto.spec.IvParameterSpec, java.security.SecureRandom, boolean);
descriptor: (Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/CipherSuite$BulkCipher;Ljavax/crypto/SecretKey;Ljavax/crypto/spec/IvParameterSpec;Ljava/security/SecureRandom;Z)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=8, args_size=7
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
aload 1
putfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
2: aload 0
aload 2
getfield sun.security.ssl.CipherSuite$BulkCipher.transformation:Ljava/lang/String;
invokestatic sun.security.ssl.JsseJce.getCipher:(Ljava/lang/String;)Ljavax/crypto/Cipher;
putfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
3: aload 0
iload 6
ifeq 4
iconst_1
goto 5
StackMap locals: sun.security.ssl.CipherBox sun.security.ssl.ProtocolVersion sun.security.ssl.CipherSuite$BulkCipher javax.crypto.SecretKey javax.crypto.spec.IvParameterSpec java.security.SecureRandom int
StackMap stack: sun.security.ssl.CipherBox
4: iconst_2
StackMap locals: sun.security.ssl.CipherBox sun.security.ssl.ProtocolVersion sun.security.ssl.CipherSuite$BulkCipher javax.crypto.SecretKey javax.crypto.spec.IvParameterSpec java.security.SecureRandom int
StackMap stack: sun.security.ssl.CipherBox int
5: putfield sun.security.ssl.CipherBox.mode:I
6: aload 5
ifnonnull 8
7: invokestatic sun.security.ssl.JsseJce.getSecureRandom:()Ljava/security/SecureRandom;
astore 5
8: StackMap locals:
StackMap stack:
aload 0
aload 5
putfield sun.security.ssl.CipherBox.random:Ljava/security/SecureRandom;
9: aload 0
aload 2
getfield sun.security.ssl.CipherSuite$BulkCipher.cipherType:Lsun/security/ssl/CipherSuite$CipherType;
putfield sun.security.ssl.CipherBox.cipherType:Lsun/security/ssl/CipherSuite$CipherType;
10: aload 4
ifnonnull 14
aload 2
getfield sun.security.ssl.CipherSuite$BulkCipher.ivSize:I
ifeq 14
11: aload 0
getfield sun.security.ssl.CipherBox.mode:I
iconst_2
if_icmpne 14
12: aload 1
invokevirtual sun.security.ssl.ProtocolVersion.useTLS11PlusSpec:()Z
ifeq 14
13: aload 2
getfield sun.security.ssl.CipherSuite$BulkCipher.ivSize:I
invokestatic sun.security.ssl.CipherBox.getFixedMask:(I)Ljavax/crypto/spec/IvParameterSpec;
astore 4
14: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.CipherBox.cipherType:Lsun/security/ssl/CipherSuite$CipherType;
getstatic sun.security.ssl.CipherSuite$CipherType.AEAD_CIPHER:Lsun/security/ssl/CipherSuite$CipherType;
if_acmpne 23
15: aload 0
aload 2
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
pop
bipush 16
putfield sun.security.ssl.CipherBox.tagSize:I
16: aload 0
aload 3
putfield sun.security.ssl.CipherBox.key:Ljava/security/Key;
17: aload 0
aload 4
invokevirtual javax.crypto.spec.IvParameterSpec.getIV:()[B
putfield sun.security.ssl.CipherBox.fixedIv:[B
18: aload 0
getfield sun.security.ssl.CipherBox.fixedIv:[B
ifnull 20
19: aload 0
getfield sun.security.ssl.CipherBox.fixedIv:[B
arraylength
aload 2
getfield sun.security.ssl.CipherSuite$BulkCipher.fixedIvSize:I
if_icmpeq 21
20: StackMap locals:
StackMap stack:
new java.lang.RuntimeException
dup
ldc "Improper fixed IV for AEAD"
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
21: StackMap locals:
StackMap stack:
aload 0
aload 2
getfield sun.security.ssl.CipherSuite$BulkCipher.ivSize:I
aload 2
getfield sun.security.ssl.CipherSuite$BulkCipher.fixedIvSize:I
isub
putfield sun.security.ssl.CipherBox.recordIvSize:I
22: goto 39
23: StackMap locals:
StackMap stack:
aload 0
iconst_0
putfield sun.security.ssl.CipherBox.tagSize:I
24: aload 0
iconst_0
newarray 8
putfield sun.security.ssl.CipherBox.fixedIv:[B
25: aload 0
iconst_0
putfield sun.security.ssl.CipherBox.recordIvSize:I
26: aload 0
aconst_null
putfield sun.security.ssl.CipherBox.key:Ljava/security/Key;
27: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
aload 0
getfield sun.security.ssl.CipherBox.mode:I
aload 3
aload 4
aload 5
invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
28: goto 39
StackMap locals:
StackMap stack: java.security.NoSuchAlgorithmException
29: astore 7
start local 7 30: aload 7
athrow
end local 7 31: StackMap locals:
StackMap stack: java.lang.Exception
astore 7
start local 7 32: new java.security.NoSuchAlgorithmException
dup
33: new java.lang.StringBuilder
dup
ldc "Could not create cipher "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 7
34: invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 7 35: StackMap locals:
StackMap stack: java.lang.ExceptionInInitializerError
astore 7
start local 7 36: new java.security.NoSuchAlgorithmException
dup
37: new java.lang.StringBuilder
dup
ldc "Could not create cipher "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
aload 7
38: invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 7 39: StackMap locals:
StackMap stack:
return
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 Lsun/security/ssl/CipherBox;
0 40 1 protocolVersion Lsun/security/ssl/ProtocolVersion;
0 40 2 bulkCipher Lsun/security/ssl/CipherSuite$BulkCipher;
0 40 3 key Ljavax/crypto/SecretKey;
0 40 4 iv Ljavax/crypto/spec/IvParameterSpec;
0 40 5 random Ljava/security/SecureRandom;
0 40 6 encrypt Z
30 31 7 e Ljava/security/NoSuchAlgorithmException;
32 35 7 e Ljava/lang/Exception;
36 39 7 e Ljava/lang/ExceptionInInitializerError;
Exception table:
from to target type
1 28 29 Class java.security.NoSuchAlgorithmException
1 28 31 Class java.lang.Exception
1 28 35 Class java.lang.ExceptionInInitializerError
Exceptions:
throws java.security.NoSuchAlgorithmException
MethodParameters:
Name Flags
protocolVersion
bulkCipher
key
iv
random
encrypt
static sun.security.ssl.CipherBox newCipherBox(sun.security.ssl.ProtocolVersion, sun.security.ssl.CipherSuite$BulkCipher, javax.crypto.SecretKey, javax.crypto.spec.IvParameterSpec, java.security.SecureRandom, boolean);
descriptor: (Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/CipherSuite$BulkCipher;Ljavax/crypto/SecretKey;Ljavax/crypto/spec/IvParameterSpec;Ljava/security/SecureRandom;Z)Lsun/security/ssl/CipherBox;
flags: (0x0008) ACC_STATIC
Code:
stack=8, locals=6, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 1
getfield sun.security.ssl.CipherSuite$BulkCipher.allowed:Z
ifne 2
1: new java.security.NoSuchAlgorithmException
dup
new java.lang.StringBuilder
dup
ldc "Unsupported cipher "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 1
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 1
getstatic sun.security.ssl.CipherSuite$BulkCipher.B_NULL:Lsun/security/ssl/CipherSuite$BulkCipher;
if_acmpne 4
3: getstatic sun.security.ssl.CipherBox.NULL:Lsun/security/ssl/CipherBox;
areturn
4: StackMap locals:
StackMap stack:
new sun.security.ssl.CipherBox
dup
aload 0
aload 1
aload 2
aload 3
aload 4
iload 5
invokespecial sun.security.ssl.CipherBox.<init>:(Lsun/security/ssl/ProtocolVersion;Lsun/security/ssl/CipherSuite$BulkCipher;Ljavax/crypto/SecretKey;Ljavax/crypto/spec/IvParameterSpec;Ljava/security/SecureRandom;Z)V
areturn
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 5 0 version Lsun/security/ssl/ProtocolVersion;
0 5 1 cipher Lsun/security/ssl/CipherSuite$BulkCipher;
0 5 2 key Ljavax/crypto/SecretKey;
0 5 3 iv Ljavax/crypto/spec/IvParameterSpec;
0 5 4 random Ljava/security/SecureRandom;
0 5 5 encrypt Z
Exceptions:
throws java.security.NoSuchAlgorithmException
MethodParameters:
Name Flags
version
cipher
key
iv
random
encrypt
private static javax.crypto.spec.IvParameterSpec getFixedMask(int);
descriptor: (I)Ljavax/crypto/spec/IvParameterSpec;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=3, locals=2, args_size=1
start local 0 0: getstatic sun.security.ssl.CipherBox.masks:Ljava/util/Hashtable;
ifnonnull 2
1: new java.util.Hashtable
dup
iconst_5
invokespecial java.util.Hashtable.<init>:(I)V
putstatic sun.security.ssl.CipherBox.masks:Ljava/util/Hashtable;
2: StackMap locals:
StackMap stack:
getstatic sun.security.ssl.CipherBox.masks:Ljava/util/Hashtable;
iload 0
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
invokevirtual java.util.Hashtable.get:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast javax.crypto.spec.IvParameterSpec
astore 1
start local 1 3: aload 1
ifnonnull 6
4: new javax.crypto.spec.IvParameterSpec
dup
iload 0
newarray 8
invokespecial javax.crypto.spec.IvParameterSpec.<init>:([B)V
astore 1
5: getstatic sun.security.ssl.CipherBox.masks:Ljava/util/Hashtable;
iload 0
invokestatic java.lang.Integer.valueOf:(I)Ljava/lang/Integer;
aload 1
invokevirtual java.util.Hashtable.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
pop
6: StackMap locals: javax.crypto.spec.IvParameterSpec
StackMap stack:
aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 ivSize I
3 7 1 iv Ljavax/crypto/spec/IvParameterSpec;
MethodParameters:
Name Flags
ivSize
int encrypt(byte[], int, int);
descriptor: ([BII)I
flags: (0x0000)
Code:
stack=6, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
ifnonnull 2
1: iload 3
ireturn
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getBlockSize:()I
istore 4
start local 4 3: aload 0
getfield sun.security.ssl.CipherBox.cipherType:Lsun/security/ssl/CipherSuite$CipherType;
getstatic sun.security.ssl.CipherSuite$CipherType.BLOCK_CIPHER:Lsun/security/ssl/CipherSuite$CipherType;
if_acmpne 5
4: aload 1
iload 2
iload 3
iload 4
invokestatic sun.security.ssl.CipherBox.addPadding:([BIII)I
istore 3
5: StackMap locals: int
StackMap stack:
getstatic sun.security.ssl.CipherBox.debug:Lsun/security/ssl/Debug;
ifnull 18
ldc "plaintext"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 18
6: new sun.security.util.HexDumpEncoder
dup
invokespecial sun.security.util.HexDumpEncoder.<init>:()V
astore 5
start local 5 7: getstatic java.lang.System.out:Ljava/io/PrintStream;
8: new java.lang.StringBuilder
dup
ldc "Padded plaintext before ENCRYPTION: len = "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
9: iload 3
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
10: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
11: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
12: aload 5
13: new java.io.ByteArrayInputStream
dup
aload 1
iload 2
iload 3
invokespecial java.io.ByteArrayInputStream.<init>:([BII)V
14: getstatic java.lang.System.out:Ljava/io/PrintStream;
15: invokevirtual sun.security.util.HexDumpEncoder.encodeBuffer:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
end local 5 16: goto 18
StackMap locals:
StackMap stack: java.io.IOException
17: pop
18: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.CipherBox.cipherType:Lsun/security/ssl/CipherSuite$CipherType;
getstatic sun.security.ssl.CipherSuite$CipherType.AEAD_CIPHER:Lsun/security/ssl/CipherSuite$CipherType;
if_acmpne 28
19: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
aload 1
iload 2
iload 3
aload 1
iload 2
invokevirtual javax.crypto.Cipher.doFinal:([BII[BI)I
20: ireturn
21: StackMap locals:
StackMap stack: java.security.GeneralSecurityException
astore 5
start local 5 22: new java.lang.RuntimeException
dup
23: new java.lang.StringBuilder
dup
ldc "Cipher error in AEAD mode in JCE provider "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
24: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getProvider:()Ljava/security/Provider;
invokevirtual java.security.Provider.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
25: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
26: aload 5
27: invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 5 28: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
aload 1
iload 2
iload 3
aload 1
iload 2
invokevirtual javax.crypto.Cipher.update:([BII[BI)I
istore 5
start local 5 29: iload 5
iload 3
if_icmpeq 33
30: new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
ldc "Cipher buffering error in JCE provider "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
31: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getProvider:()Ljava/security/Provider;
invokevirtual java.security.Provider.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
32: invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
33: StackMap locals: int
StackMap stack:
iload 5
34: ireturn
end local 5 end local 4 35: StackMap locals: sun.security.ssl.CipherBox byte[] int int
StackMap stack: javax.crypto.ShortBufferException
astore 4
start local 4 36: new java.lang.ArrayIndexOutOfBoundsException
dup
aload 4
invokevirtual javax.crypto.ShortBufferException.toString:()Ljava/lang/String;
invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(Ljava/lang/String;)V
athrow
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 37 0 this Lsun/security/ssl/CipherBox;
0 37 1 buf [B
0 37 2 offset I
0 37 3 len I
3 35 4 blockSize I
7 16 5 hd Lsun/security/util/HexDumpEncoder;
22 28 5 ibe Ljava/security/GeneralSecurityException;
29 35 5 newLen I
36 37 4 e Ljavax/crypto/ShortBufferException;
Exception table:
from to target type
6 16 17 Class java.io.IOException
19 20 21 Class javax.crypto.IllegalBlockSizeException
19 20 21 Class javax.crypto.BadPaddingException
2 20 35 Class javax.crypto.ShortBufferException
21 34 35 Class javax.crypto.ShortBufferException
MethodParameters:
Name Flags
buf
offset
len
int encrypt(java.nio.ByteBuffer, int);
descriptor: (Ljava/nio/ByteBuffer;I)I
flags: (0x0000)
Code:
stack=5, locals=9, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual java.nio.ByteBuffer.remaining:()I
istore 3
start local 3 1: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
ifnonnull 4
2: aload 1
aload 1
invokevirtual java.nio.ByteBuffer.limit:()I
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
3: iload 3
ireturn
4: StackMap locals: int
StackMap stack:
aload 1
invokevirtual java.nio.ByteBuffer.position:()I
istore 4
start local 4 5: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getBlockSize:()I
istore 5
start local 5 6: aload 0
getfield sun.security.ssl.CipherBox.cipherType:Lsun/security/ssl/CipherSuite$CipherType;
getstatic sun.security.ssl.CipherSuite$CipherType.BLOCK_CIPHER:Lsun/security/ssl/CipherSuite$CipherType;
if_acmpne 9
7: aload 1
iload 5
invokestatic sun.security.ssl.CipherBox.addPadding:(Ljava/nio/ByteBuffer;I)I
istore 3
8: aload 1
iload 4
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
9: StackMap locals: int int
StackMap stack:
getstatic sun.security.ssl.CipherBox.debug:Lsun/security/ssl/Debug;
ifnull 19
ldc "plaintext"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 19
10: new sun.security.util.HexDumpEncoder
dup
invokespecial sun.security.util.HexDumpEncoder.<init>:()V
astore 6
start local 6 11: getstatic java.lang.System.out:Ljava/io/PrintStream;
12: new java.lang.StringBuilder
dup
ldc "Padded plaintext before ENCRYPTION: len = "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
13: iload 3
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
14: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
15: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
16: aload 6
aload 1
invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
getstatic java.lang.System.out:Ljava/io/PrintStream;
invokevirtual sun.security.util.HexDumpEncoder.encodeBuffer:(Ljava/nio/ByteBuffer;Ljava/io/OutputStream;)V
end local 6 17: goto 19
StackMap locals:
StackMap stack: java.io.IOException
18: pop
19: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
astore 6
start local 6 20: aload 0
getfield sun.security.ssl.CipherBox.cipherType:Lsun/security/ssl/CipherSuite$CipherType;
getstatic sun.security.ssl.CipherSuite$CipherType.AEAD_CIPHER:Lsun/security/ssl/CipherSuite$CipherType;
if_acmpne 44
21: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
aload 6
invokevirtual java.nio.ByteBuffer.remaining:()I
invokevirtual javax.crypto.Cipher.getOutputSize:(I)I
istore 7
start local 7 22: iload 7
aload 1
invokevirtual java.nio.ByteBuffer.remaining:()I
if_icmple 28
23: iload 2
iload 4
iload 7
iadd
if_icmpge 27
24: new javax.crypto.ShortBufferException
dup
25: ldc "need more space in output buffer"
26: invokespecial javax.crypto.ShortBufferException.<init>:(Ljava/lang/String;)V
athrow
27: StackMap locals: java.nio.ByteBuffer int
StackMap stack:
aload 1
iload 4
iload 7
iadd
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
28: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
aload 6
aload 1
invokevirtual javax.crypto.Cipher.doFinal:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
istore 8
start local 8 29: iload 8
iload 7
if_icmpeq 35
30: new java.lang.RuntimeException
dup
31: new java.lang.StringBuilder
dup
ldc "Cipher buffering error in JCE provider "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
32: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getProvider:()Ljava/security/Provider;
invokevirtual java.security.Provider.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
33: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
34: invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
35: StackMap locals: int
StackMap stack:
iload 8
36: ireturn
end local 8 end local 7 37: StackMap locals: sun.security.ssl.CipherBox java.nio.ByteBuffer int int int int java.nio.ByteBuffer
StackMap stack: java.security.GeneralSecurityException
astore 7
start local 7 38: new java.lang.RuntimeException
dup
39: new java.lang.StringBuilder
dup
ldc "Cipher error in AEAD mode in JCE provider "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
40: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getProvider:()Ljava/security/Provider;
invokevirtual java.security.Provider.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
41: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
42: aload 7
43: invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 7 44: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
aload 6
aload 1
invokevirtual javax.crypto.Cipher.update:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
istore 7
start local 7 45: goto 50
end local 7 StackMap locals:
StackMap stack: javax.crypto.ShortBufferException
46: pop
47: new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
ldc "Cipher buffering error in JCE provider "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
48: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getProvider:()Ljava/security/Provider;
invokevirtual java.security.Provider.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
49: invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
start local 7 50: StackMap locals: int
StackMap stack:
aload 1
invokevirtual java.nio.ByteBuffer.position:()I
aload 6
invokevirtual java.nio.ByteBuffer.position:()I
if_icmpeq 52
51: new java.lang.RuntimeException
dup
ldc "bytebuffer padding error"
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
52: StackMap locals:
StackMap stack:
iload 7
iload 3
if_icmpeq 56
53: new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
ldc "Cipher buffering error in JCE provider "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
54: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getProvider:()Ljava/security/Provider;
invokevirtual java.security.Provider.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
55: invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
56: StackMap locals:
StackMap stack:
iload 7
ireturn
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 57 0 this Lsun/security/ssl/CipherBox;
0 57 1 bb Ljava/nio/ByteBuffer;
0 57 2 outLimit I
1 57 3 len I
5 57 4 pos I
6 57 5 blockSize I
11 17 6 hd Lsun/security/util/HexDumpEncoder;
20 57 6 dup Ljava/nio/ByteBuffer;
22 37 7 outputSize I
29 37 8 newLen I
38 44 7 ibse Ljava/security/GeneralSecurityException;
45 46 7 newLen I
50 57 7 newLen I
Exception table:
from to target type
10 17 18 Class java.io.IOException
21 36 37 Class javax.crypto.IllegalBlockSizeException
21 36 37 Class javax.crypto.BadPaddingException
21 36 37 Class javax.crypto.ShortBufferException
44 45 46 Class javax.crypto.ShortBufferException
MethodParameters:
Name Flags
bb
outLimit
int decrypt(byte[], int, int, int);
descriptor: ([BIII)I
flags: (0x0000)
Code:
stack=6, locals=7, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
ifnonnull 2
1: iload 3
ireturn
2: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.CipherBox.cipherType:Lsun/security/ssl/CipherSuite$CipherType;
getstatic sun.security.ssl.CipherSuite$CipherType.AEAD_CIPHER:Lsun/security/ssl/CipherSuite$CipherType;
if_acmpne 12
3: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
aload 1
iload 2
iload 3
aload 1
iload 2
invokevirtual javax.crypto.Cipher.doFinal:([BII[BI)I
istore 5
start local 5 4: goto 17
end local 5 StackMap locals:
StackMap stack: javax.crypto.IllegalBlockSizeException
5: astore 6
start local 6 6: new java.lang.RuntimeException
dup
7: new java.lang.StringBuilder
dup
ldc "Cipher error in AEAD mode in JCE provider "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
8: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getProvider:()Ljava/security/Provider;
invokevirtual java.security.Provider.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
9: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
10: aload 6
11: invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 6 12: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
aload 1
iload 2
iload 3
aload 1
iload 2
invokevirtual javax.crypto.Cipher.update:([BII[BI)I
istore 5
start local 5 13: iload 5
iload 3
if_icmpeq 17
14: new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
ldc "Cipher buffering error in JCE provider "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
15: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getProvider:()Ljava/security/Provider;
invokevirtual java.security.Provider.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
16: invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
17: StackMap locals: int
StackMap stack:
getstatic sun.security.ssl.CipherBox.debug:Lsun/security/ssl/Debug;
ifnull 30
ldc "plaintext"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 30
18: new sun.security.util.HexDumpEncoder
dup
invokespecial sun.security.util.HexDumpEncoder.<init>:()V
astore 6
start local 6 19: getstatic java.lang.System.out:Ljava/io/PrintStream;
20: new java.lang.StringBuilder
dup
ldc "Padded plaintext after DECRYPTION: len = "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
21: iload 5
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
22: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
23: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
24: aload 6
25: new java.io.ByteArrayInputStream
dup
aload 1
iload 2
iload 5
invokespecial java.io.ByteArrayInputStream.<init>:([BII)V
26: getstatic java.lang.System.out:Ljava/io/PrintStream;
27: invokevirtual sun.security.util.HexDumpEncoder.encodeBuffer:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
end local 6 28: goto 30
StackMap locals:
StackMap stack: java.io.IOException
29: pop
30: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.CipherBox.cipherType:Lsun/security/ssl/CipherSuite$CipherType;
getstatic sun.security.ssl.CipherSuite$CipherType.BLOCK_CIPHER:Lsun/security/ssl/CipherSuite$CipherType;
if_acmpne 40
31: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getBlockSize:()I
istore 6
start local 6 32: aload 1
iload 2
iload 5
iload 4
iload 6
aload 0
getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
33: invokestatic sun.security.ssl.CipherBox.removePadding:([BIIIILsun/security/ssl/ProtocolVersion;)I
istore 5
34: aload 0
getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
invokevirtual sun.security.ssl.ProtocolVersion.useTLS11PlusSpec:()Z
ifeq 40
35: iload 5
iload 6
if_icmpge 40
36: new javax.crypto.BadPaddingException
dup
new java.lang.StringBuilder
dup
ldc "The length after padding removal ("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
37: iload 5
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ") should be larger "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
38: ldc "than <"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 6
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc "> since explicit IV used"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
39: invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
athrow
end local 6 40: StackMap locals:
StackMap stack:
iload 5
41: ireturn
end local 5 42: StackMap locals: sun.security.ssl.CipherBox byte[] int int int
StackMap stack: javax.crypto.ShortBufferException
astore 5
start local 5 43: new java.lang.ArrayIndexOutOfBoundsException
dup
aload 5
invokevirtual javax.crypto.ShortBufferException.toString:()Ljava/lang/String;
invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(Ljava/lang/String;)V
athrow
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 44 0 this Lsun/security/ssl/CipherBox;
0 44 1 buf [B
0 44 2 offset I
0 44 3 len I
0 44 4 tagLen I
4 5 5 newLen I
13 42 5 newLen I
6 12 6 ibse Ljavax/crypto/IllegalBlockSizeException;
19 28 6 hd Lsun/security/util/HexDumpEncoder;
32 40 6 blockSize I
43 44 5 e Ljavax/crypto/ShortBufferException;
Exception table:
from to target type
3 4 5 Class javax.crypto.IllegalBlockSizeException
18 28 29 Class java.io.IOException
2 41 42 Class javax.crypto.ShortBufferException
Exceptions:
throws javax.crypto.BadPaddingException
MethodParameters:
Name Flags
buf
offset
len
tagLen
int decrypt(java.nio.ByteBuffer, int);
descriptor: (Ljava/nio/ByteBuffer;I)I
flags: (0x0000)
Code:
stack=5, locals=8, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual java.nio.ByteBuffer.remaining:()I
istore 3
start local 3 1: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
ifnonnull 4
2: aload 1
aload 1
invokevirtual java.nio.ByteBuffer.limit:()I
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
3: iload 3
ireturn
4: StackMap locals: int
StackMap stack:
aload 1
invokevirtual java.nio.ByteBuffer.position:()I
istore 4
start local 4 5: aload 1
invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
astore 5
start local 5 6: aload 0
getfield sun.security.ssl.CipherBox.cipherType:Lsun/security/ssl/CipherSuite$CipherType;
getstatic sun.security.ssl.CipherSuite$CipherType.AEAD_CIPHER:Lsun/security/ssl/CipherSuite$CipherType;
if_acmpne 15
7: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
aload 5
aload 1
invokevirtual javax.crypto.Cipher.doFinal:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
istore 6
start local 6 8: goto 20
end local 6 StackMap locals: sun.security.ssl.CipherBox java.nio.ByteBuffer int int int java.nio.ByteBuffer
StackMap stack: javax.crypto.IllegalBlockSizeException
9: astore 7
start local 7 10: new java.lang.RuntimeException
dup
11: new java.lang.StringBuilder
dup
ldc "Cipher error in AEAD mode \""
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 7
invokevirtual javax.crypto.IllegalBlockSizeException.getMessage:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
12: ldc " \"in JCE provider "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getProvider:()Ljava/security/Provider;
invokevirtual java.security.Provider.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
13: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
14: invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
end local 7 15: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
aload 5
aload 1
invokevirtual javax.crypto.Cipher.update:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
istore 6
start local 6 16: iload 6
iload 3
if_icmpeq 20
17: new java.lang.RuntimeException
dup
new java.lang.StringBuilder
dup
ldc "Cipher buffering error in JCE provider "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
18: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getProvider:()Ljava/security/Provider;
invokevirtual java.security.Provider.getName:()Ljava/lang/String;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
19: invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
20: StackMap locals: int
StackMap stack:
aload 1
iload 4
iload 6
iadd
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
21: getstatic sun.security.ssl.CipherBox.debug:Lsun/security/ssl/Debug;
ifnull 33
ldc "plaintext"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 33
22: new sun.security.util.HexDumpEncoder
dup
invokespecial sun.security.util.HexDumpEncoder.<init>:()V
astore 7
start local 7 23: getstatic java.lang.System.out:Ljava/io/PrintStream;
24: new java.lang.StringBuilder
dup
ldc "Padded plaintext after DECRYPTION: len = "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
25: iload 6
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
26: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
27: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
28: aload 7
29: aload 1
invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
iload 4
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
getstatic java.lang.System.out:Ljava/io/PrintStream;
30: invokevirtual sun.security.util.HexDumpEncoder.encodeBuffer:(Ljava/nio/ByteBuffer;Ljava/io/OutputStream;)V
end local 7 31: goto 33
StackMap locals:
StackMap stack: java.io.IOException
32: pop
33: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.CipherBox.cipherType:Lsun/security/ssl/CipherSuite$CipherType;
getstatic sun.security.ssl.CipherSuite$CipherType.BLOCK_CIPHER:Lsun/security/ssl/CipherSuite$CipherType;
if_acmpne 44
34: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getBlockSize:()I
istore 7
start local 7 35: aload 1
iload 4
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
36: aload 1
iload 2
iload 7
aload 0
getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
invokestatic sun.security.ssl.CipherBox.removePadding:(Ljava/nio/ByteBuffer;IILsun/security/ssl/ProtocolVersion;)I
istore 6
37: aload 0
getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
invokevirtual sun.security.ssl.ProtocolVersion.useTLS11PlusSpec:()Z
ifeq 44
38: iload 6
iload 7
if_icmpge 43
39: new javax.crypto.BadPaddingException
dup
new java.lang.StringBuilder
dup
ldc "The length after padding removal ("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
40: iload 6
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ") should be larger "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
41: ldc "than <"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 7
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc "> since explicit IV used"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
42: invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
athrow
43: StackMap locals: int
StackMap stack:
aload 1
aload 1
invokevirtual java.nio.ByteBuffer.limit:()I
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
end local 7 44: StackMap locals:
StackMap stack:
iload 6
45: ireturn
end local 6 end local 5 end local 4 46: StackMap locals: sun.security.ssl.CipherBox java.nio.ByteBuffer int int
StackMap stack: javax.crypto.ShortBufferException
astore 4
start local 4 47: new java.lang.ArrayIndexOutOfBoundsException
dup
aload 4
invokevirtual javax.crypto.ShortBufferException.toString:()Ljava/lang/String;
invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(Ljava/lang/String;)V
athrow
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 48 0 this Lsun/security/ssl/CipherBox;
0 48 1 bb Ljava/nio/ByteBuffer;
0 48 2 tagLen I
1 48 3 len I
5 46 4 pos I
6 46 5 dup Ljava/nio/ByteBuffer;
8 9 6 newLen I
16 46 6 newLen I
10 15 7 ibse Ljavax/crypto/IllegalBlockSizeException;
23 31 7 hd Lsun/security/util/HexDumpEncoder;
35 44 7 blockSize I
47 48 4 e Ljavax/crypto/ShortBufferException;
Exception table:
from to target type
7 8 9 Class javax.crypto.IllegalBlockSizeException
22 31 32 Class java.io.IOException
4 45 46 Class javax.crypto.ShortBufferException
Exceptions:
throws javax.crypto.BadPaddingException
MethodParameters:
Name Flags
bb
tagLen
private static int addPadding(byte[], int, int, int);
descriptor: ([BIII)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 2
iconst_1
iadd
istore 4
start local 4 1: iload 4
iload 3
irem
ifeq 4
2: iload 4
iload 3
iconst_1
isub
iadd
istore 4
3: iload 4
iload 4
iload 3
irem
isub
istore 4
4: StackMap locals: int
StackMap stack:
iload 4
iload 2
isub
i2b
istore 5
start local 5 5: aload 0
arraylength
iload 4
iload 1
iadd
if_icmpge 7
6: new java.lang.IllegalArgumentException
dup
ldc "no space to pad buffer"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals: int
StackMap stack:
iconst_0
istore 6
start local 6 8: iload 1
iload 2
iadd
istore 1
goto 11
9: StackMap locals: int
StackMap stack:
aload 0
iload 1
iinc 1 1
iload 5
iconst_1
isub
i2b
bastore
10: iinc 6 1
StackMap locals:
StackMap stack:
11: iload 6
iload 5
if_icmplt 9
12: iload 4
ireturn
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 13 0 buf [B
0 13 1 offset I
0 13 2 len I
0 13 3 blockSize I
1 13 4 newlen I
5 13 5 pad B
8 13 6 i I
MethodParameters:
Name Flags
buf
offset
len
blockSize
private static int addPadding(java.nio.ByteBuffer, int);
descriptor: (Ljava/nio/ByteBuffer;I)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=7, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual java.nio.ByteBuffer.remaining:()I
istore 2
start local 2 1: aload 0
invokevirtual java.nio.ByteBuffer.position:()I
istore 3
start local 3 2: iload 2
iconst_1
iadd
istore 4
start local 4 3: iload 4
iload 1
irem
ifeq 6
4: iload 4
iload 1
iconst_1
isub
iadd
istore 4
5: iload 4
iload 4
iload 1
irem
isub
istore 4
6: StackMap locals: int int int
StackMap stack:
iload 4
iload 2
isub
i2b
istore 5
start local 5 7: aload 0
iload 4
iload 3
iadd
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
8: iconst_0
istore 6
start local 6 9: iload 3
iload 2
iadd
istore 3
goto 12
10: StackMap locals: int int
StackMap stack:
aload 0
iload 3
iinc 3 1
iload 5
iconst_1
isub
i2b
invokevirtual java.nio.ByteBuffer.put:(IB)Ljava/nio/ByteBuffer;
pop
11: iinc 6 1
StackMap locals:
StackMap stack:
12: iload 6
iload 5
if_icmplt 10
13: aload 0
iload 3
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
14: aload 0
iload 3
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
15: iload 4
ireturn
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 bb Ljava/nio/ByteBuffer;
0 16 1 blockSize I
1 16 2 len I
2 16 3 offset I
3 16 4 newlen I
7 16 5 pad B
9 16 6 i I
MethodParameters:
Name Flags
bb
blockSize
private static int[] checkPadding(byte[], int, int, byte);
descriptor: ([BIIB)[I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=7, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 2
ifgt 2
1: new java.lang.RuntimeException
dup
ldc "padding len must be positive"
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
iconst_2
newarray 10
astore 4
start local 4 3: iconst_0
istore 5
start local 5 4: goto 13
5: StackMap locals: int[] int
StackMap stack:
iconst_0
istore 6
start local 6 6: goto 12
7: StackMap locals: int
StackMap stack:
aload 0
iload 1
iload 6
iadd
baload
iload 3
if_icmpeq 10
8: aload 4
iconst_0
dup2
iaload
iconst_1
iadd
iastore
9: goto 11
10: StackMap locals:
StackMap stack:
aload 4
iconst_1
dup2
iaload
iconst_1
iadd
iastore
11: StackMap locals:
StackMap stack:
iinc 6 1
iinc 5 1
StackMap locals:
StackMap stack:
12: iload 6
iload 2
if_icmpge 13
iload 5
sipush 256
if_icmple 7
end local 6 13: StackMap locals:
StackMap stack:
iload 5
sipush 256
if_icmple 5
end local 5 14: aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 buf [B
0 15 1 offset I
0 15 2 len I
0 15 3 pad B
3 15 4 results [I
4 14 5 i I
6 13 6 j I
MethodParameters:
Name Flags
buf
offset
len
pad
private static int[] checkPadding(java.nio.ByteBuffer, byte);
descriptor: (Ljava/nio/ByteBuffer;B)[I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=4, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
ifne 2
1: new java.lang.RuntimeException
dup
ldc "hasRemaining() must be positive"
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
iconst_2
newarray 10
astore 2
start local 2 3: aload 0
invokevirtual java.nio.ByteBuffer.mark:()Ljava/nio/ByteBuffer;
pop
4: iconst_0
istore 3
start local 3 5: goto 13
6: StackMap locals: int[] int
StackMap stack:
aload 0
invokevirtual java.nio.ByteBuffer.get:()B
iload 1
if_icmpeq 9
7: aload 2
iconst_0
dup2
iaload
iconst_1
iadd
iastore
8: goto 10
9: StackMap locals:
StackMap stack:
aload 2
iconst_1
dup2
iaload
iconst_1
iadd
iastore
10: StackMap locals:
StackMap stack:
iinc 3 1
StackMap locals:
StackMap stack:
11: aload 0
invokevirtual java.nio.ByteBuffer.hasRemaining:()Z
ifeq 12
iload 3
sipush 256
if_icmple 6
12: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.nio.ByteBuffer.reset:()Ljava/nio/ByteBuffer;
pop
StackMap locals:
StackMap stack:
13: iload 3
sipush 256
if_icmple 11
end local 3 14: aload 2
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 bb Ljava/nio/ByteBuffer;
0 15 1 pad B
3 15 2 results [I
5 14 3 i I
MethodParameters:
Name Flags
bb
pad
private static int removePadding(byte[], int, int, int, int, sun.security.ssl.ProtocolVersion);
descriptor: ([BIIIILsun/security/ssl/ProtocolVersion;)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=10, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: iload 1
iload 2
iadd
iconst_1
isub
istore 6
start local 6 1: aload 0
iload 6
baload
sipush 255
iand
istore 7
start local 7 2: iload 2
iload 7
iconst_1
iadd
isub
istore 8
start local 8 3: iload 8
iload 3
isub
ifge 6
4: aload 0
iload 1
iload 2
iload 7
sipush 255
iand
i2b
invokestatic sun.security.ssl.CipherBox.checkPadding:([BIIB)[I
pop
5: new javax.crypto.BadPaddingException
dup
new java.lang.StringBuilder
dup
ldc "Invalid Padding length: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 7
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals: int int int
StackMap stack:
aload 0
iload 1
iload 8
iadd
7: iload 7
iconst_1
iadd
iload 7
sipush 255
iand
i2b
8: invokestatic sun.security.ssl.CipherBox.checkPadding:([BIIB)[I
astore 9
start local 9 9: aload 5
invokevirtual sun.security.ssl.ProtocolVersion.useTLS10PlusSpec:()Z
ifeq 12
10: aload 9
iconst_0
iaload
ifeq 17
11: new javax.crypto.BadPaddingException
dup
ldc "Invalid TLS padding data"
invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
athrow
12: StackMap locals: int[]
StackMap stack:
iload 7
iload 4
if_icmple 17
13: new javax.crypto.BadPaddingException
dup
new java.lang.StringBuilder
dup
ldc "Padding length ("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
14: iload 7
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ") of SSLv3 message should not be bigger "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
15: ldc "than the block size ("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 4
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ")"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
16: invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
athrow
17: StackMap locals:
StackMap stack:
iload 8
ireturn
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 18 0 buf [B
0 18 1 offset I
0 18 2 len I
0 18 3 tagLen I
0 18 4 blockSize I
0 18 5 protocolVersion Lsun/security/ssl/ProtocolVersion;
1 18 6 padOffset I
2 18 7 padLen I
3 18 8 newLen I
9 18 9 results [I
Exceptions:
throws javax.crypto.BadPaddingException
MethodParameters:
Name Flags
buf
offset
len
tagLen
blockSize
protocolVersion
private static int removePadding(java.nio.ByteBuffer, int, int, sun.security.ssl.ProtocolVersion);
descriptor: (Ljava/nio/ByteBuffer;IILsun/security/ssl/ProtocolVersion;)I
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=10, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
invokevirtual java.nio.ByteBuffer.remaining:()I
istore 4
start local 4 1: aload 0
invokevirtual java.nio.ByteBuffer.position:()I
istore 5
start local 5 2: iload 5
iload 4
iadd
iconst_1
isub
istore 6
start local 6 3: aload 0
iload 6
invokevirtual java.nio.ByteBuffer.get:(I)B
sipush 255
iand
istore 7
start local 7 4: iload 4
iload 7
iconst_1
iadd
isub
istore 8
start local 8 5: iload 8
iload 1
isub
ifge 8
6: aload 0
invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
iload 7
sipush 255
iand
i2b
invokestatic sun.security.ssl.CipherBox.checkPadding:(Ljava/nio/ByteBuffer;B)[I
pop
7: new javax.crypto.BadPaddingException
dup
new java.lang.StringBuilder
dup
ldc "Invalid Padding length: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 7
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
athrow
8: StackMap locals: java.nio.ByteBuffer int int sun.security.ssl.ProtocolVersion int int int int int
StackMap stack:
aload 0
invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
iload 5
iload 8
iadd
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
9: iload 7
sipush 255
iand
i2b
10: invokestatic sun.security.ssl.CipherBox.checkPadding:(Ljava/nio/ByteBuffer;B)[I
astore 9
start local 9 11: aload 3
invokevirtual sun.security.ssl.ProtocolVersion.useTLS10PlusSpec:()Z
ifeq 14
12: aload 9
iconst_0
iaload
ifeq 19
13: new javax.crypto.BadPaddingException
dup
ldc "Invalid TLS padding data"
invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
athrow
14: StackMap locals: int[]
StackMap stack:
iload 7
iload 2
if_icmple 19
15: new javax.crypto.BadPaddingException
dup
new java.lang.StringBuilder
dup
ldc "Padding length ("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
16: iload 7
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ") of SSLv3 message should not be bigger "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
17: ldc "than the block size ("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 2
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ")"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
18: invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
athrow
19: StackMap locals:
StackMap stack:
aload 0
iload 5
iload 8
iadd
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
20: aload 0
iload 5
iload 8
iadd
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/ByteBuffer;
pop
21: iload 8
ireturn
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 22 0 bb Ljava/nio/ByteBuffer;
0 22 1 tagLen I
0 22 2 blockSize I
0 22 3 protocolVersion Lsun/security/ssl/ProtocolVersion;
1 22 4 len I
2 22 5 offset I
3 22 6 padOffset I
4 22 7 padLen I
5 22 8 newLen I
11 22 9 results [I
Exceptions:
throws javax.crypto.BadPaddingException
MethodParameters:
Name Flags
bb
tagLen
blockSize
protocolVersion
void dispose();
descriptor: ()V
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
ifnull 4
1: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.doFinal:()[B
pop
2: goto 4
StackMap locals:
StackMap stack: java.lang.Exception
3: pop
4: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/security/ssl/CipherBox;
Exception table:
from to target type
0 2 3 Class java.lang.Exception
boolean isCBCMode();
descriptor: ()Z
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.CipherBox.cipherType:Lsun/security/ssl/CipherSuite$CipherType;
getstatic sun.security.ssl.CipherSuite$CipherType.BLOCK_CIPHER:Lsun/security/ssl/CipherSuite$CipherType;
if_acmpne 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/CipherBox;
boolean isAEADMode();
descriptor: ()Z
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.CipherBox.cipherType:Lsun/security/ssl/CipherSuite$CipherType;
getstatic sun.security.ssl.CipherSuite$CipherType.AEAD_CIPHER:Lsun/security/ssl/CipherSuite$CipherType;
if_acmpne 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/CipherBox;
boolean isNullCipher();
descriptor: ()Z
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
ifnonnull 1
iconst_1
ireturn
StackMap locals:
StackMap stack:
1: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lsun/security/ssl/CipherBox;
int getExplicitNonceSize();
descriptor: ()I
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: invokestatic sun.security.ssl.CipherBox.$SWITCH_TABLE$sun$security$ssl$CipherSuite$CipherType:()[I
aload 0
getfield sun.security.ssl.CipherBox.cipherType:Lsun/security/ssl/CipherSuite$CipherType;
invokevirtual sun.security.ssl.CipherSuite$CipherType.ordinal:()I
iaload
tableswitch { // 3 - 4
3: 1
4: 3
default: 4
}
1: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
invokevirtual sun.security.ssl.ProtocolVersion.useTLS11PlusSpec:()Z
ifeq 4
2: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getBlockSize:()I
ireturn
3: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.CipherBox.recordIvSize:I
ireturn
4: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lsun/security/ssl/CipherBox;
int applyExplicitNonce(sun.security.ssl.Authenticator, byte, java.nio.ByteBuffer, byte[]);
descriptor: (Lsun/security/ssl/Authenticator;BLjava/nio/ByteBuffer;[B)I
flags: (0x0000)
Code:
stack=5, locals=9, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: invokestatic sun.security.ssl.CipherBox.$SWITCH_TABLE$sun$security$ssl$CipherSuite$CipherType:()[I
aload 0
getfield sun.security.ssl.CipherBox.cipherType:Lsun/security/ssl/CipherSuite$CipherType;
invokevirtual sun.security.ssl.CipherSuite$CipherType.ordinal:()I
iaload
tableswitch { // 3 - 4
3: 1
4: 12
default: 38
}
1: StackMap locals:
StackMap stack:
aload 1
instanceof sun.security.ssl.MAC
ifeq 3
2: aload 1
checkcast sun.security.ssl.MAC
invokevirtual sun.security.ssl.MAC.MAClen:()I
goto 4
StackMap locals:
StackMap stack:
3: iconst_0
4: StackMap locals:
StackMap stack: int
istore 5
start local 5 5: iload 5
ifeq 10
6: aload 0
iload 5
aload 3
invokevirtual java.nio.ByteBuffer.remaining:()I
invokevirtual sun.security.ssl.CipherBox.sanityCheck:(II)Z
ifne 10
7: new javax.crypto.BadPaddingException
dup
8: ldc "ciphertext sanity check failed"
9: invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
athrow
10: StackMap locals: int
StackMap stack:
aload 0
getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
invokevirtual sun.security.ssl.ProtocolVersion.useTLS11PlusSpec:()Z
ifeq 38
11: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getBlockSize:()I
ireturn
end local 5 12: StackMap locals:
StackMap stack:
aload 3
invokevirtual java.nio.ByteBuffer.remaining:()I
aload 0
getfield sun.security.ssl.CipherBox.recordIvSize:I
aload 0
getfield sun.security.ssl.CipherBox.tagSize:I
iadd
if_icmpge 20
13: new javax.crypto.BadPaddingException
dup
14: new java.lang.StringBuilder
dup
ldc "Insufficient buffer remaining for AEAD cipher fragment ("
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
15: aload 3
invokevirtual java.nio.ByteBuffer.remaining:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc "). Needs to be "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
16: ldc "more than or equal to IV size ("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield sun.security.ssl.CipherBox.recordIvSize:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
17: ldc ") + tag size ("
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield sun.security.ssl.CipherBox.tagSize:I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc ")"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
18: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
19: invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
athrow
20: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.CipherBox.fixedIv:[B
21: aload 0
getfield sun.security.ssl.CipherBox.fixedIv:[B
arraylength
aload 0
getfield sun.security.ssl.CipherBox.recordIvSize:I
iadd
22: invokestatic java.util.Arrays.copyOf:([BI)[B
astore 6
start local 6 23: aload 3
aload 6
aload 0
getfield sun.security.ssl.CipherBox.fixedIv:[B
arraylength
aload 0
getfield sun.security.ssl.CipherBox.recordIvSize:I
invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
pop
24: aload 3
aload 3
invokevirtual java.nio.ByteBuffer.position:()I
aload 0
getfield sun.security.ssl.CipherBox.recordIvSize:I
isub
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/ByteBuffer;
pop
25: new javax.crypto.spec.GCMParameterSpec
dup
aload 0
getfield sun.security.ssl.CipherBox.tagSize:I
bipush 8
imul
aload 6
invokespecial javax.crypto.spec.GCMParameterSpec.<init>:(I[B)V
astore 7
start local 7 26: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
aload 0
getfield sun.security.ssl.CipherBox.mode:I
aload 0
getfield sun.security.ssl.CipherBox.key:Ljava/security/Key;
aload 7
aload 0
getfield sun.security.ssl.CipherBox.random:Ljava/security/SecureRandom;
invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
27: goto 32
28: StackMap locals: sun.security.ssl.CipherBox sun.security.ssl.Authenticator int java.nio.ByteBuffer byte[] top byte[] javax.crypto.spec.GCMParameterSpec
StackMap stack: java.security.GeneralSecurityException
astore 8
start local 8 29: new java.lang.RuntimeException
dup
30: ldc "invalid key or spec in GCM mode"
aload 8
31: invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 8 32: StackMap locals:
StackMap stack:
aload 1
33: iload 2
aload 3
invokevirtual java.nio.ByteBuffer.remaining:()I
aload 0
getfield sun.security.ssl.CipherBox.recordIvSize:I
isub
aload 0
getfield sun.security.ssl.CipherBox.tagSize:I
isub
34: aload 4
35: invokevirtual sun.security.ssl.Authenticator.acquireAuthenticationBytes:(BI[B)[B
astore 8
start local 8 36: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
aload 8
invokevirtual javax.crypto.Cipher.updateAAD:([B)V
37: aload 0
getfield sun.security.ssl.CipherBox.recordIvSize:I
ireturn
end local 8 end local 7 end local 6 38: StackMap locals: sun.security.ssl.CipherBox sun.security.ssl.Authenticator int java.nio.ByteBuffer byte[]
StackMap stack:
iconst_0
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 39 0 this Lsun/security/ssl/CipherBox;
0 39 1 authenticator Lsun/security/ssl/Authenticator;
0 39 2 contentType B
0 39 3 bb Ljava/nio/ByteBuffer;
0 39 4 sequence [B
5 12 5 tagLen I
23 38 6 iv [B
26 38 7 spec Ljavax/crypto/spec/GCMParameterSpec;
29 32 8 ikae Ljava/security/GeneralSecurityException;
36 38 8 aad [B
Exception table:
from to target type
26 27 28 Class java.security.InvalidKeyException
26 27 28 Class java.security.InvalidAlgorithmParameterException
Exceptions:
throws javax.crypto.BadPaddingException
MethodParameters:
Name Flags
authenticator
contentType
bb
sequence
byte[] createExplicitNonce(sun.security.ssl.Authenticator, byte, int);
descriptor: (Lsun/security/ssl/Authenticator;BI)[B
flags: (0x0000)
Code:
stack=5, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iconst_0
newarray 8
astore 4
start local 4 1: invokestatic sun.security.ssl.CipherBox.$SWITCH_TABLE$sun$security$ssl$CipherSuite$CipherType:()[I
aload 0
getfield sun.security.ssl.CipherBox.cipherType:Lsun/security/ssl/CipherSuite$CipherType;
invokevirtual sun.security.ssl.CipherSuite$CipherType.ordinal:()I
iaload
tableswitch { // 3 - 4
3: 2
4: 6
default: 22
}
2: StackMap locals: byte[]
StackMap stack:
aload 0
getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
invokevirtual sun.security.ssl.ProtocolVersion.useTLS11PlusSpec:()Z
ifeq 22
3: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getBlockSize:()I
newarray 8
astore 4
4: aload 0
getfield sun.security.ssl.CipherBox.random:Ljava/security/SecureRandom;
aload 4
invokevirtual java.security.SecureRandom.nextBytes:([B)V
5: goto 22
6: StackMap locals:
StackMap stack:
aload 1
invokevirtual sun.security.ssl.Authenticator.sequenceNumber:()[B
astore 4
7: aload 0
getfield sun.security.ssl.CipherBox.fixedIv:[B
8: aload 0
getfield sun.security.ssl.CipherBox.fixedIv:[B
arraylength
aload 4
arraylength
iadd
9: invokestatic java.util.Arrays.copyOf:([BI)[B
astore 5
start local 5 10: aload 4
iconst_0
aload 5
aload 0
getfield sun.security.ssl.CipherBox.fixedIv:[B
arraylength
aload 4
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
11: new javax.crypto.spec.GCMParameterSpec
dup
aload 0
getfield sun.security.ssl.CipherBox.tagSize:I
bipush 8
imul
aload 5
invokespecial javax.crypto.spec.GCMParameterSpec.<init>:(I[B)V
astore 6
start local 6 12: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
aload 0
getfield sun.security.ssl.CipherBox.mode:I
aload 0
getfield sun.security.ssl.CipherBox.key:Ljava/security/Key;
aload 6
aload 0
getfield sun.security.ssl.CipherBox.random:Ljava/security/SecureRandom;
invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
13: goto 18
14: StackMap locals: sun.security.ssl.CipherBox sun.security.ssl.Authenticator int int byte[] byte[] javax.crypto.spec.GCMParameterSpec
StackMap stack: java.security.GeneralSecurityException
astore 7
start local 7 15: new java.lang.RuntimeException
dup
16: ldc "invalid key or spec in GCM mode"
aload 7
17: invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 7 18: StackMap locals:
StackMap stack:
aload 1
19: iload 2
iload 3
aconst_null
20: invokevirtual sun.security.ssl.Authenticator.acquireAuthenticationBytes:(BI[B)[B
astore 7
start local 7 21: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
aload 7
invokevirtual javax.crypto.Cipher.updateAAD:([B)V
end local 7 end local 6 end local 5 22: StackMap locals:
StackMap stack:
aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 23 0 this Lsun/security/ssl/CipherBox;
0 23 1 authenticator Lsun/security/ssl/Authenticator;
0 23 2 contentType B
0 23 3 fragmentLength I
1 23 4 nonce [B
10 22 5 iv [B
12 22 6 spec Ljavax/crypto/spec/GCMParameterSpec;
15 18 7 ikae Ljava/security/GeneralSecurityException;
21 22 7 aad [B
Exception table:
from to target type
12 13 14 Class java.security.InvalidKeyException
12 13 14 Class java.security.InvalidAlgorithmParameterException
MethodParameters:
Name Flags
authenticator
contentType
fragmentLength
int calculatePacketSize(int, int, int);
descriptor: (III)I
flags: (0x0000)
Code:
stack=4, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 1
istore 4
start local 4 1: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
ifnull 15
2: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getBlockSize:()I
istore 5
start local 5 3: invokestatic sun.security.ssl.CipherBox.$SWITCH_TABLE$sun$security$ssl$CipherSuite$CipherType:()[I
aload 0
getfield sun.security.ssl.CipherBox.cipherType:Lsun/security/ssl/CipherSuite$CipherType;
invokevirtual sun.security.ssl.CipherSuite$CipherType.ordinal:()I
iaload
tableswitch { // 3 - 4
3: 4
4: 11
default: 14
}
4: StackMap locals: int int
StackMap stack:
iload 4
iload 2
iadd
istore 4
5: iinc 4 1
6: iload 4
7: iload 5
iload 4
iload 5
irem
isub
iload 5
irem
iadd
istore 4
8: aload 0
getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
invokevirtual sun.security.ssl.ProtocolVersion.useTLS11PlusSpec:()Z
ifeq 15
9: iload 4
iload 5
iadd
istore 4
10: goto 15
11: StackMap locals:
StackMap stack:
iload 4
aload 0
getfield sun.security.ssl.CipherBox.recordIvSize:I
iadd
istore 4
12: iload 4
aload 0
getfield sun.security.ssl.CipherBox.tagSize:I
iadd
istore 4
13: goto 15
14: StackMap locals:
StackMap stack:
iload 4
iload 2
iadd
istore 4
end local 5 15: StackMap locals:
StackMap stack:
iload 4
iload 3
iadd
ireturn
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 Lsun/security/ssl/CipherBox;
0 16 1 fragmentSize I
0 16 2 macLen I
0 16 3 headerSize I
1 16 4 packetSize I
3 15 5 blockSize I
MethodParameters:
Name Flags
fragmentSize
macLen
headerSize
int calculateFragmentSize(int, int, int);
descriptor: (III)I
flags: (0x0000)
Code:
stack=3, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 1
iload 3
isub
istore 4
start local 4 1: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
ifnull 14
2: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getBlockSize:()I
istore 5
start local 5 3: invokestatic sun.security.ssl.CipherBox.$SWITCH_TABLE$sun$security$ssl$CipherSuite$CipherType:()[I
aload 0
getfield sun.security.ssl.CipherBox.cipherType:Lsun/security/ssl/CipherSuite$CipherType;
invokevirtual sun.security.ssl.CipherSuite$CipherType.ordinal:()I
iaload
tableswitch { // 3 - 4
3: 4
4: 10
default: 13
}
4: StackMap locals: int int
StackMap stack:
aload 0
getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
invokevirtual sun.security.ssl.ProtocolVersion.useTLS11PlusSpec:()Z
ifeq 6
5: iload 4
iload 5
isub
istore 4
6: StackMap locals:
StackMap stack:
iload 4
iload 4
iload 5
irem
isub
istore 4
7: iinc 4 -1
8: iload 4
iload 2
isub
istore 4
9: goto 14
10: StackMap locals:
StackMap stack:
iload 4
aload 0
getfield sun.security.ssl.CipherBox.recordIvSize:I
isub
istore 4
11: iload 4
aload 0
getfield sun.security.ssl.CipherBox.tagSize:I
isub
istore 4
12: goto 14
13: StackMap locals:
StackMap stack:
iload 4
iload 2
isub
istore 4
end local 5 14: StackMap locals:
StackMap stack:
iload 4
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lsun/security/ssl/CipherBox;
0 15 1 packetLimit I
0 15 2 macLen I
0 15 3 headerSize I
1 15 4 fragLen I
3 14 5 blockSize I
MethodParameters:
Name Flags
packetLimit
macLen
headerSize
int estimateFragmentSize(int, int, int);
descriptor: (III)I
flags: (0x0000)
Code:
stack=2, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: iload 1
iload 3
isub
istore 4
start local 4 1: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
ifnull 13
2: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getBlockSize:()I
istore 5
start local 5 3: invokestatic sun.security.ssl.CipherBox.$SWITCH_TABLE$sun$security$ssl$CipherSuite$CipherType:()[I
aload 0
getfield sun.security.ssl.CipherBox.cipherType:Lsun/security/ssl/CipherSuite$CipherType;
invokevirtual sun.security.ssl.CipherSuite$CipherType.ordinal:()I
iaload
tableswitch { // 3 - 4
3: 4
4: 9
default: 12
}
4: StackMap locals: int int
StackMap stack:
aload 0
getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
invokevirtual sun.security.ssl.ProtocolVersion.useTLS11PlusSpec:()Z
ifeq 6
5: iload 4
iload 5
isub
istore 4
6: StackMap locals:
StackMap stack:
iinc 4 -1
7: iload 4
iload 2
isub
istore 4
8: goto 13
9: StackMap locals:
StackMap stack:
iload 4
aload 0
getfield sun.security.ssl.CipherBox.recordIvSize:I
isub
istore 4
10: iload 4
aload 0
getfield sun.security.ssl.CipherBox.tagSize:I
isub
istore 4
11: goto 13
12: StackMap locals:
StackMap stack:
iload 4
iload 2
isub
istore 4
end local 5 13: StackMap locals:
StackMap stack:
iload 4
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lsun/security/ssl/CipherBox;
0 14 1 packetSize I
0 14 2 macLen I
0 14 3 headerSize I
1 14 4 fragLen I
3 13 5 blockSize I
MethodParameters:
Name Flags
packetSize
macLen
headerSize
private boolean sanityCheck(int, int);
descriptor: (II)Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual sun.security.ssl.CipherBox.isCBCMode:()Z
ifne 3
1: iload 2
iload 1
if_icmplt 2
iconst_1
ireturn
StackMap locals:
StackMap stack:
2: iconst_0
ireturn
3: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getBlockSize:()I
istore 3
start local 3 4: iload 2
iload 3
irem
ifne 13
5: iload 1
iconst_1
iadd
istore 4
start local 4 6: iload 4
iload 3
if_icmplt 7
iload 4
goto 8
StackMap locals: int int
StackMap stack:
7: iload 3
StackMap locals:
StackMap stack: int
8: istore 4
9: aload 0
getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
invokevirtual sun.security.ssl.ProtocolVersion.useTLS11PlusSpec:()Z
ifeq 11
10: iload 4
iload 3
iadd
istore 4
11: StackMap locals:
StackMap stack:
iload 2
iload 4
if_icmplt 12
iconst_1
ireturn
StackMap locals:
StackMap stack:
12: iconst_0
ireturn
end local 4 13: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lsun/security/ssl/CipherBox;
0 14 1 tagLen I
0 14 2 fragmentLen I
4 14 3 blockSize I
6 13 4 minimal I
MethodParameters:
Name Flags
tagLen
fragmentLen
static int[] $SWITCH_TABLE$sun$security$ssl$CipherSuite$CipherType();
descriptor: ()[I
flags: (0x1008) ACC_STATIC, ACC_SYNTHETIC
Code:
stack=3, locals=1, args_size=0
0: getstatic sun.security.ssl.CipherBox.$SWITCH_TABLE$sun$security$ssl$CipherSuite$CipherType:[I
dup
ifnull 1
areturn
StackMap locals:
StackMap stack: int[]
1: pop
invokestatic sun.security.ssl.CipherSuite$CipherType.values:()[Lsun/security/ssl/CipherSuite$CipherType;
arraylength
newarray 10
astore 0
2: aload 0
getstatic sun.security.ssl.CipherSuite$CipherType.AEAD_CIPHER:Lsun/security/ssl/CipherSuite$CipherType;
invokevirtual sun.security.ssl.CipherSuite$CipherType.ordinal:()I
iconst_4
iastore
3: goto 5
StackMap locals: int[]
StackMap stack: java.lang.NoSuchFieldError
4: pop
StackMap locals:
StackMap stack:
5: aload 0
getstatic sun.security.ssl.CipherSuite$CipherType.BLOCK_CIPHER:Lsun/security/ssl/CipherSuite$CipherType;
invokevirtual sun.security.ssl.CipherSuite$CipherType.ordinal:()I
iconst_3
iastore
6: goto 8
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
7: pop
StackMap locals:
StackMap stack:
8: aload 0
getstatic sun.security.ssl.CipherSuite$CipherType.NULL_CIPHER:Lsun/security/ssl/CipherSuite$CipherType;
invokevirtual sun.security.ssl.CipherSuite$CipherType.ordinal:()I
iconst_1
iastore
9: goto 11
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
10: pop
StackMap locals:
StackMap stack:
11: aload 0
getstatic sun.security.ssl.CipherSuite$CipherType.STREAM_CIPHER:Lsun/security/ssl/CipherSuite$CipherType;
invokevirtual sun.security.ssl.CipherSuite$CipherType.ordinal:()I
iconst_2
iastore
12: goto 14
StackMap locals:
StackMap stack: java.lang.NoSuchFieldError
13: pop
StackMap locals:
StackMap stack:
14: aload 0
dup
putstatic sun.security.ssl.CipherBox.$SWITCH_TABLE$sun$security$ssl$CipherSuite$CipherType:[I
areturn
LocalVariableTable:
Start End Slot Name Signature
Exception table:
from to target type
2 3 4 Class java.lang.NoSuchFieldError
5 6 7 Class java.lang.NoSuchFieldError
8 9 10 Class java.lang.NoSuchFieldError
11 12 13 Class java.lang.NoSuchFieldError
}
SourceFile: "CipherBox.java"
InnerClasses:
final BulkCipher = sun.security.ssl.CipherSuite$BulkCipher of sun.security.ssl.CipherSuite
final CipherType = sun.security.ssl.CipherSuite$CipherType of sun.security.ssl.CipherSuite