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 int blockSize;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private java.security.SecureRandom random;
descriptor: Ljava/security/SecureRandom;
flags: (0x0002) ACC_PRIVATE
private final boolean isCBCMode;
descriptor: Z
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;>;
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: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
iconst_0
putfield sun.security.ssl.CipherBox.isCBCMode:Z
4: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 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: 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:
4: iconst_2
StackMap locals:
StackMap stack: int
5: istore 7
start local 7 6: aload 5
ifnonnull 8
7: invokestatic sun.security.ssl.JsseJce.getSecureRandom:()Ljava/security/SecureRandom;
astore 5
8: StackMap locals: int
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.isCBCMode:Z
putfield sun.security.ssl.CipherBox.isCBCMode:Z
10: aload 4
ifnonnull 14
aload 2
getfield sun.security.ssl.CipherSuite$BulkCipher.ivSize:I
ifeq 14
11: iload 7
iconst_2
if_icmpne 14
12: aload 1
getfield sun.security.ssl.ProtocolVersion.v:I
getstatic sun.security.ssl.ProtocolVersion.TLS11:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
if_icmplt 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.cipher:Ljavax/crypto/Cipher;
iload 7
aload 3
aload 4
aload 5
invokevirtual javax.crypto.Cipher.init:(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
15: aload 0
aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
invokevirtual javax.crypto.Cipher.getBlockSize:()I
putfield sun.security.ssl.CipherBox.blockSize:I
16: aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
iconst_1
if_icmpne 29
17: aload 0
iconst_0
putfield sun.security.ssl.CipherBox.blockSize:I
end local 7 18: goto 29
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: java.security.NoSuchAlgorithmException
19: astore 7
start local 7 20: aload 7
athrow
end local 7 21: StackMap locals:
StackMap stack: java.lang.Exception
astore 7
start local 7 22: new java.security.NoSuchAlgorithmException
dup
23: 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
24: invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 7 25: StackMap locals:
StackMap stack: java.lang.ExceptionInInitializerError
astore 7
start local 7 26: new java.security.NoSuchAlgorithmException
dup
27: 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
28: invokespecial java.security.NoSuchAlgorithmException.<init>:(Ljava/lang/String;Ljava/lang/Throwable;)V
athrow
end local 7 29: 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 30 0 this Lsun/security/ssl/CipherBox;
0 30 1 protocolVersion Lsun/security/ssl/ProtocolVersion;
0 30 2 bulkCipher Lsun/security/ssl/CipherSuite$BulkCipher;
0 30 3 key Ljavax/crypto/SecretKey;
0 30 4 iv Ljavax/crypto/spec/IvParameterSpec;
0 30 5 random Ljava/security/SecureRandom;
0 30 6 encrypt Z
6 18 7 mode I
20 21 7 e Ljava/security/NoSuchAlgorithmException;
22 25 7 e Ljava/lang/Exception;
26 29 7 e Ljava/lang/ExceptionInInitializerError;
Exception table:
from to target type
1 18 19 Class java.security.NoSuchAlgorithmException
1 18 21 Class java.lang.Exception
1 18 25 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.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=5, 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.blockSize:I
ifeq 14
3: aload 0
getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
getstatic sun.security.ssl.ProtocolVersion.TLS11:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
if_icmplt 13
4: aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
newarray 8
astore 4
start local 4 5: aload 0
getfield sun.security.ssl.CipherBox.random:Ljava/security/SecureRandom;
aload 4
invokevirtual java.security.SecureRandom.nextBytes:([B)V
6: aload 1
iload 2
7: aload 1
iload 2
aload 4
arraylength
iadd
iload 3
8: invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
9: aload 4
iconst_0
10: aload 1
iload 2
aload 4
arraylength
11: invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
12: iload 3
aload 4
arraylength
iadd
istore 3
end local 4 13: StackMap locals:
StackMap stack:
aload 1
iload 2
iload 3
aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
invokestatic sun.security.ssl.CipherBox.addPadding:([BIII)I
istore 3
14: StackMap locals:
StackMap stack:
getstatic sun.security.ssl.CipherBox.debug:Lsun/security/ssl/Debug;
ifnull 27
ldc "plaintext"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 27
15: new sun.misc.HexDumpEncoder
dup
invokespecial sun.misc.HexDumpEncoder.<init>:()V
astore 4
start local 4 16: getstatic java.lang.System.out:Ljava/io/PrintStream;
17: new java.lang.StringBuilder
dup
ldc "Padded plaintext before ENCRYPTION: len = "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
18: iload 3
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
19: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
20: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
21: aload 4
22: new java.io.ByteArrayInputStream
dup
aload 1
iload 2
iload 3
invokespecial java.io.ByteArrayInputStream.<init>:([BII)V
23: getstatic java.lang.System.out:Ljava/io/PrintStream;
24: invokevirtual sun.misc.HexDumpEncoder.encodeBuffer:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
end local 4 25: goto 27
StackMap locals:
StackMap stack: java.io.IOException
26: pop
27: 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 4
start local 4 28: iload 4
iload 3
if_icmpeq 32
29: 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
30: 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;
31: invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
32: StackMap locals: int
StackMap stack:
iload 4
33: ireturn
end local 4 34: StackMap locals: sun.security.ssl.CipherBox byte[] int int
StackMap stack: javax.crypto.ShortBufferException
astore 4
start local 4 35: 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 36 0 this Lsun/security/ssl/CipherBox;
0 36 1 buf [B
0 36 2 offset I
0 36 3 len I
5 13 4 prefix [B
16 25 4 hd Lsun/misc/HexDumpEncoder;
28 34 4 newLen I
35 36 4 e Ljavax/crypto/ShortBufferException;
Exception table:
from to target type
15 25 26 Class java.io.IOException
2 33 34 Class javax.crypto.ShortBufferException
MethodParameters:
Name Flags
buf
offset
len
int encrypt(java.nio.ByteBuffer);
descriptor: (Ljava/nio/ByteBuffer;)I
flags: (0x0000)
Code:
stack=6, locals=8, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual java.nio.ByteBuffer.remaining:()I
istore 2
start local 2 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/Buffer;
pop
3: iload 2
ireturn
4: StackMap locals: int
StackMap stack:
aload 1
invokevirtual java.nio.ByteBuffer.position:()I
istore 3
start local 3 5: aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
ifeq 30
6: aload 0
getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
getstatic sun.security.ssl.ProtocolVersion.TLS11:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
if_icmplt 28
7: aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
newarray 8
astore 4
start local 4 8: aload 0
getfield sun.security.ssl.CipherBox.random:Ljava/security/SecureRandom;
aload 4
invokevirtual java.security.SecureRandom.nextBytes:([B)V
9: aconst_null
astore 5
start local 5 10: aload 1
invokevirtual java.nio.ByteBuffer.limit:()I
istore 6
start local 6 11: aload 1
invokevirtual java.nio.ByteBuffer.hasArray:()Z
ifeq 20
12: aload 1
invokevirtual java.nio.ByteBuffer.arrayOffset:()I
istore 7
start local 7 13: aload 1
invokevirtual java.nio.ByteBuffer.array:()[B
astore 5
14: aload 5
iload 7
iload 3
iadd
15: aload 5
iload 7
iload 3
iadd
aload 4
arraylength
iadd
16: iload 6
iload 3
isub
17: invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
18: aload 1
iload 6
aload 4
arraylength
iadd
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
end local 7 19: goto 25
20: StackMap locals: sun.security.ssl.CipherBox java.nio.ByteBuffer int int byte[] byte[] int
StackMap stack:
iload 6
iload 3
isub
newarray 8
astore 5
21: aload 1
aload 5
iconst_0
iload 6
iload 3
isub
invokevirtual java.nio.ByteBuffer.get:([BII)Ljava/nio/ByteBuffer;
pop
22: aload 1
iload 3
aload 4
arraylength
iadd
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
23: aload 1
iload 6
aload 4
arraylength
iadd
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
24: aload 1
aload 5
invokevirtual java.nio.ByteBuffer.put:([B)Ljava/nio/ByteBuffer;
pop
25: StackMap locals:
StackMap stack:
aload 1
iload 3
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
26: aload 1
aload 4
invokevirtual java.nio.ByteBuffer.put:([B)Ljava/nio/ByteBuffer;
pop
27: aload 1
iload 3
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
end local 6 end local 5 end local 4 28: StackMap locals:
StackMap stack:
aload 1
aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
invokestatic sun.security.ssl.CipherBox.addPadding:(Ljava/nio/ByteBuffer;I)I
istore 2
29: aload 1
iload 3
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
30: StackMap locals:
StackMap stack:
getstatic sun.security.ssl.CipherBox.debug:Lsun/security/ssl/Debug;
ifnull 41
ldc "plaintext"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 41
31: new sun.misc.HexDumpEncoder
dup
invokespecial sun.misc.HexDumpEncoder.<init>:()V
astore 4
start local 4 32: getstatic java.lang.System.out:Ljava/io/PrintStream;
33: new java.lang.StringBuilder
dup
ldc "Padded plaintext before ENCRYPTION: len = "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
34: iload 2
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
35: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
36: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
37: aload 4
aload 1
getstatic java.lang.System.out:Ljava/io/PrintStream;
invokevirtual sun.misc.HexDumpEncoder.encodeBuffer:(Ljava/nio/ByteBuffer;Ljava/io/OutputStream;)V
end local 4 38: goto 40
StackMap locals:
StackMap stack: java.io.IOException
39: pop
40: StackMap locals:
StackMap stack:
aload 1
iload 3
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
41: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
astore 4
start local 4 42: aload 0
getfield sun.security.ssl.CipherBox.cipher:Ljavax/crypto/Cipher;
aload 4
aload 1
invokevirtual javax.crypto.Cipher.update:(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)I
istore 5
start local 5 43: aload 1
invokevirtual java.nio.ByteBuffer.position:()I
aload 4
invokevirtual java.nio.ByteBuffer.position:()I
if_icmpeq 45
44: new java.lang.RuntimeException
dup
ldc "bytebuffer padding error"
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
45: StackMap locals: java.nio.ByteBuffer int
StackMap stack:
iload 5
iload 2
if_icmpeq 49
46: 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
47: 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;
48: invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
49: StackMap locals:
StackMap stack:
iload 5
50: ireturn
end local 5 end local 4 end local 3 51: StackMap locals: sun.security.ssl.CipherBox java.nio.ByteBuffer int
StackMap stack: javax.crypto.ShortBufferException
astore 3
start local 3 52: new java.lang.RuntimeException
dup
aload 3
invokevirtual javax.crypto.ShortBufferException.toString:()Ljava/lang/String;
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
astore 4
start local 4 53: aload 4
aload 3
invokevirtual java.lang.RuntimeException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
pop
54: aload 4
athrow
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 55 0 this Lsun/security/ssl/CipherBox;
0 55 1 bb Ljava/nio/ByteBuffer;
1 55 2 len I
5 51 3 pos I
8 28 4 prefix [B
10 28 5 buf [B
11 28 6 limit I
13 19 7 arrayOffset I
32 38 4 hd Lsun/misc/HexDumpEncoder;
42 51 4 dup Ljava/nio/ByteBuffer;
43 51 5 newLen I
52 55 3 e Ljavax/crypto/ShortBufferException;
53 55 4 exc Ljava/lang/RuntimeException;
Exception table:
from to target type
31 38 39 Class java.io.IOException
4 50 51 Class javax.crypto.ShortBufferException
MethodParameters:
Name Flags
bb
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.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 3: iload 5
iload 3
if_icmpeq 7
4: 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
5: 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;
6: invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals: int
StackMap stack:
getstatic sun.security.ssl.CipherBox.debug:Lsun/security/ssl/Debug;
ifnull 20
ldc "plaintext"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 20
8: new sun.misc.HexDumpEncoder
dup
invokespecial sun.misc.HexDumpEncoder.<init>:()V
astore 6
start local 6 9: getstatic java.lang.System.out:Ljava/io/PrintStream;
10: new java.lang.StringBuilder
dup
ldc "Padded plaintext after DECRYPTION: len = "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
11: iload 5
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
12: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
13: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
14: aload 6
15: new java.io.ByteArrayInputStream
dup
aload 1
iload 2
iload 5
invokespecial java.io.ByteArrayInputStream.<init>:([BII)V
16: getstatic java.lang.System.out:Ljava/io/PrintStream;
17: invokevirtual sun.misc.HexDumpEncoder.encodeBuffer:(Ljava/io/InputStream;Ljava/io/OutputStream;)V
end local 6 18: goto 20
StackMap locals:
StackMap stack: java.io.IOException
19: pop
20: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
ifeq 33
21: aload 1
iload 2
iload 5
iload 4
aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
aload 0
getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
22: invokestatic sun.security.ssl.CipherBox.removePadding:([BIIIILsun/security/ssl/ProtocolVersion;)I
istore 5
23: aload 0
getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
getstatic sun.security.ssl.ProtocolVersion.TLS11:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
if_icmplt 33
24: iload 5
aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
if_icmpge 29
25: 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
26: 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;
27: ldc "than <"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
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;
28: invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
athrow
29: StackMap locals:
StackMap stack:
aload 1
iload 2
aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
iadd
30: aload 1
iload 2
iload 5
aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
isub
31: invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
32: iload 5
aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
isub
istore 5
33: StackMap locals:
StackMap stack:
iload 5
34: ireturn
end local 5 35: StackMap locals: sun.security.ssl.CipherBox byte[] int int int
StackMap stack: javax.crypto.ShortBufferException
astore 5
start local 5 36: 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 37 0 this Lsun/security/ssl/CipherBox;
0 37 1 buf [B
0 37 2 offset I
0 37 3 len I
0 37 4 tagLen I
3 35 5 newLen I
9 18 6 hd Lsun/misc/HexDumpEncoder;
36 37 5 e Ljavax/crypto/ShortBufferException;
Exception table:
from to target type
8 18 19 Class java.io.IOException
2 34 35 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=6, locals=10, 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/Buffer;
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.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 7: iload 6
iload 3
if_icmpeq 11
8: 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
9: 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;
10: invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
athrow
11: StackMap locals: int java.nio.ByteBuffer int
StackMap stack:
getstatic sun.security.ssl.CipherBox.debug:Lsun/security/ssl/Debug;
ifnull 23
ldc "plaintext"
invokestatic sun.security.ssl.Debug.isOn:(Ljava/lang/String;)Z
ifeq 23
12: new sun.misc.HexDumpEncoder
dup
invokespecial sun.misc.HexDumpEncoder.<init>:()V
astore 7
start local 7 13: getstatic java.lang.System.out:Ljava/io/PrintStream;
14: new java.lang.StringBuilder
dup
ldc "Padded plaintext after DECRYPTION: len = "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
15: iload 6
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
16: invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
17: invokevirtual java.io.PrintStream.println:(Ljava/lang/String;)V
18: aload 7
19: aload 1
invokevirtual java.nio.ByteBuffer.duplicate:()Ljava/nio/ByteBuffer;
iload 4
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
checkcast java.nio.ByteBuffer
getstatic java.lang.System.out:Ljava/io/PrintStream;
20: invokevirtual sun.misc.HexDumpEncoder.encodeBuffer:(Ljava/nio/ByteBuffer;Ljava/io/OutputStream;)V
end local 7 21: goto 23
StackMap locals:
StackMap stack: java.io.IOException
22: pop
23: StackMap locals:
StackMap stack:
aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
ifeq 51
24: aload 1
iload 4
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
25: aload 1
iload 2
aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
aload 0
getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
26: invokestatic sun.security.ssl.CipherBox.removePadding:(Ljava/nio/ByteBuffer;IILsun/security/ssl/ProtocolVersion;)I
istore 6
27: aload 0
getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
getstatic sun.security.ssl.ProtocolVersion.TLS11:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
if_icmplt 51
28: iload 6
aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
if_icmpge 33
29: 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
30: 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;
31: ldc "than <"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
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;
32: invokespecial javax.crypto.BadPaddingException.<init>:(Ljava/lang/String;)V
athrow
33: StackMap locals:
StackMap stack:
aconst_null
astore 7
start local 7 34: aload 1
invokevirtual java.nio.ByteBuffer.limit:()I
istore 8
start local 8 35: aload 1
invokevirtual java.nio.ByteBuffer.hasArray:()Z
ifeq 43
36: aload 1
invokevirtual java.nio.ByteBuffer.arrayOffset:()I
istore 9
start local 9 37: aload 1
invokevirtual java.nio.ByteBuffer.array:()[B
astore 7
38: aload 7
iload 9
iload 4
iadd
aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
iadd
39: aload 7
iload 9
iload 4
iadd
iload 8
iload 4
isub
aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
isub
40: invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
41: aload 1
iload 8
aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
isub
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
end local 9 42: goto 49
43: StackMap locals: byte[] int
StackMap stack:
iload 8
iload 4
isub
aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
isub
newarray 8
astore 7
44: aload 1
iload 4
aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
iadd
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
45: aload 1
aload 7
invokevirtual java.nio.ByteBuffer.get:([B)Ljava/nio/ByteBuffer;
pop
46: aload 1
iload 4
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
47: aload 1
aload 7
invokevirtual java.nio.ByteBuffer.put:([B)Ljava/nio/ByteBuffer;
pop
48: aload 1
iload 8
aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
isub
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
pop
49: StackMap locals:
StackMap stack:
aload 1
invokevirtual java.nio.ByteBuffer.limit:()I
istore 8
50: aload 1
iload 8
invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
pop
end local 8 end local 7 51: StackMap locals:
StackMap stack:
iload 6
52: ireturn
end local 6 end local 5 end local 4 53: StackMap locals: sun.security.ssl.CipherBox java.nio.ByteBuffer int int
StackMap stack: javax.crypto.ShortBufferException
astore 4
start local 4 54: new java.lang.RuntimeException
dup
aload 4
invokevirtual javax.crypto.ShortBufferException.toString:()Ljava/lang/String;
invokespecial java.lang.RuntimeException.<init>:(Ljava/lang/String;)V
astore 5
start local 5 55: aload 5
aload 4
invokevirtual java.lang.RuntimeException.initCause:(Ljava/lang/Throwable;)Ljava/lang/Throwable;
pop
56: aload 5
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 57 0 this Lsun/security/ssl/CipherBox;
0 57 1 bb Ljava/nio/ByteBuffer;
0 57 2 tagLen I
1 57 3 len I
5 53 4 pos I
6 53 5 dup Ljava/nio/ByteBuffer;
7 53 6 newLen I
13 21 7 hd Lsun/misc/HexDumpEncoder;
34 51 7 buf [B
35 51 8 limit I
37 42 9 arrayOffset I
54 57 4 e Ljavax/crypto/ShortBufferException;
55 57 5 exc Ljava/lang/RuntimeException;
Exception table:
from to target type
12 21 22 Class java.io.IOException
4 52 53 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/Buffer;
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/Buffer;
pop
14: aload 0
iload 3
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
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/Buffer;
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/Buffer;
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
getfield sun.security.ssl.ProtocolVersion.v:I
getstatic sun.security.ssl.ProtocolVersion.TLS10:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
if_icmplt 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/Buffer;
checkcast java.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
getfield sun.security.ssl.ProtocolVersion.v:I
getstatic sun.security.ssl.ProtocolVersion.TLS10:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
if_icmplt 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/Buffer;
pop
20: aload 0
iload 5
iload 8
iadd
invokevirtual java.nio.ByteBuffer.limit:(I)Ljava/nio/Buffer;
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.security.GeneralSecurityException
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.security.GeneralSecurityException
boolean isCBCMode();
descriptor: ()Z
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield sun.security.ssl.CipherBox.isCBCMode:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 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;
boolean sanityCheck(int, int);
descriptor: (II)Z
flags: (0x0000)
Code:
stack=2, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield 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:
iload 2
aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
irem
ifne 12
4: iload 1
iconst_1
iadd
istore 3
start local 3 5: iload 3
aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
if_icmplt 6
iload 3
goto 7
StackMap locals: int
StackMap stack:
6: aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
StackMap locals:
StackMap stack: int
7: istore 3
8: aload 0
getfield sun.security.ssl.CipherBox.protocolVersion:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
getstatic sun.security.ssl.ProtocolVersion.TLS11:Lsun/security/ssl/ProtocolVersion;
getfield sun.security.ssl.ProtocolVersion.v:I
if_icmplt 10
9: iload 3
aload 0
getfield sun.security.ssl.CipherBox.blockSize:I
iadd
istore 3
10: StackMap locals:
StackMap stack:
iload 2
iload 3
if_icmplt 11
iconst_1
ireturn
StackMap locals:
StackMap stack:
11: iconst_0
ireturn
end local 3 12: StackMap locals:
StackMap stack:
iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lsun/security/ssl/CipherBox;
0 13 1 tagLen I
0 13 2 fragmentLen I
5 12 3 minimal I
MethodParameters:
Name Flags
tagLen
fragmentLen
}
SourceFile: "CipherBox.java"
InnerClasses:
final BulkCipher = sun.security.ssl.CipherSuite$BulkCipher of sun.security.ssl.CipherSuite