final class com.sun.crypto.provider.CipherTextStealing extends com.sun.crypto.provider.CipherBlockChaining
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.sun.crypto.provider.CipherTextStealing
super_class: com.sun.crypto.provider.CipherBlockChaining
{
void <init>(com.sun.crypto.provider.SymmetricCipher);
descriptor: (Lcom/sun/crypto/provider/SymmetricCipher;)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 // com.sun.crypto.provider.CipherTextStealing this
start local 1 // com.sun.crypto.provider.SymmetricCipher embeddedCipher
0: .line 56
aload 0 /* this */
aload 1 /* embeddedCipher */
invokespecial com.sun.crypto.provider.CipherBlockChaining.<init>:(Lcom/sun/crypto/provider/SymmetricCipher;)V
1: .line 57
return
end local 1 // com.sun.crypto.provider.SymmetricCipher embeddedCipher
end local 0 // com.sun.crypto.provider.CipherTextStealing this
LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/sun/crypto/provider/CipherTextStealing;
0 2 1 embeddedCipher Lcom/sun/crypto/provider/SymmetricCipher;
MethodParameters:
Name Flags
embeddedCipher
java.lang.String getFeedback();
descriptor: ()Ljava/lang/String;
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 // com.sun.crypto.provider.CipherTextStealing this
0: .line 65
ldc "CTS"
areturn
end local 0 // com.sun.crypto.provider.CipherTextStealing this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/sun/crypto/provider/CipherTextStealing;
int encryptFinal(byte[], int, int, byte[], int);
descriptor: ([BII[BI)I
flags: (0x0000)
Code:
stack=6, locals=11, args_size=6
start local 0 // com.sun.crypto.provider.CipherTextStealing this
start local 1 // byte[] plain
start local 2 // int plainOffset
start local 3 // int plainLen
start local 4 // byte[] cipher
start local 5 // int cipherOffset
0: .line 92
iload 3 /* plainLen */
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
if_icmpge 2
1: .line 93
new javax.crypto.IllegalBlockSizeException
dup
ldc "input is too short!"
invokespecial javax.crypto.IllegalBlockSizeException.<init>:(Ljava/lang/String;)V
athrow
2: .line 94
StackMap locals:
StackMap stack:
iload 3 /* plainLen */
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
if_icmpne 5
3: .line 95
aload 0 /* this */
aload 1 /* plain */
iload 2 /* plainOffset */
iload 3 /* plainLen */
aload 4 /* cipher */
iload 5 /* cipherOffset */
invokevirtual com.sun.crypto.provider.CipherTextStealing.encrypt:([BII[BI)I
pop
4: .line 96
goto 45
5: .line 98
StackMap locals:
StackMap stack:
iload 3 /* plainLen */
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
irem
istore 6 /* nLeft */
start local 6 // int nLeft
6: .line 99
iload 6 /* nLeft */
ifne 19
7: .line 100
aload 0 /* this */
aload 1 /* plain */
iload 2 /* plainOffset */
iload 3 /* plainLen */
aload 4 /* cipher */
iload 5 /* cipherOffset */
invokevirtual com.sun.crypto.provider.CipherTextStealing.encrypt:([BII[BI)I
pop
8: .line 102
iload 5 /* cipherOffset */
iload 3 /* plainLen */
iadd
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
isub
istore 7 /* lastBlkIndex */
start local 7 // int lastBlkIndex
9: .line 103
iload 7 /* lastBlkIndex */
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
isub
istore 8 /* nextToLastBlkIndex */
start local 8 // int nextToLastBlkIndex
10: .line 104
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
newarray 8
astore 9 /* tmp */
start local 9 // byte[] tmp
11: .line 105
aload 4 /* cipher */
iload 7 /* lastBlkIndex */
aload 9 /* tmp */
iconst_0
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
12: .line 106
aload 4 /* cipher */
iload 8 /* nextToLastBlkIndex */
13: .line 107
aload 4 /* cipher */
iload 7 /* lastBlkIndex */
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
14: .line 106
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
15: .line 108
aload 9 /* tmp */
iconst_0
aload 4 /* cipher */
iload 8 /* nextToLastBlkIndex */
16: .line 109
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
17: .line 108
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
end local 9 // byte[] tmp
end local 8 // int nextToLastBlkIndex
end local 7 // int lastBlkIndex
18: .line 110
goto 45
19: .line 111
StackMap locals: int
StackMap stack:
iload 3 /* plainLen */
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
iload 6 /* nLeft */
iadd
isub
istore 7 /* newPlainLen */
start local 7 // int newPlainLen
20: .line 112
iload 7 /* newPlainLen */
ifle 26
21: .line 113
aload 0 /* this */
aload 1 /* plain */
iload 2 /* plainOffset */
iload 7 /* newPlainLen */
aload 4 /* cipher */
22: .line 114
iload 5 /* cipherOffset */
23: .line 113
invokevirtual com.sun.crypto.provider.CipherTextStealing.encrypt:([BII[BI)I
pop
24: .line 115
iload 2 /* plainOffset */
iload 7 /* newPlainLen */
iadd
istore 2 /* plainOffset */
25: .line 116
iload 5 /* cipherOffset */
iload 7 /* newPlainLen */
iadd
istore 5 /* cipherOffset */
26: .line 121
StackMap locals: int
StackMap stack:
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
newarray 8
astore 8 /* tmp */
start local 8 // byte[] tmp
27: .line 123
iconst_0
istore 9 /* i */
start local 9 // int i
28: goto 31
29: .line 124
StackMap locals: byte[] int
StackMap stack:
aload 8 /* tmp */
iload 9 /* i */
aload 1 /* plain */
iload 2 /* plainOffset */
iload 9 /* i */
iadd
baload
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.r:[B
iload 9 /* i */
baload
ixor
i2b
bastore
30: .line 123
iinc 9 /* i */ 1
StackMap locals:
StackMap stack:
31: iload 9 /* i */
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
if_icmplt 29
end local 9 // int i
32: .line 126
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
newarray 8
astore 9 /* tmp2 */
start local 9 // byte[] tmp2
33: .line 127
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.embeddedCipher:Lcom/sun/crypto/provider/SymmetricCipher;
aload 8 /* tmp */
iconst_0
aload 9 /* tmp2 */
iconst_0
invokevirtual com.sun.crypto.provider.SymmetricCipher.encryptBlock:([BI[BI)V
34: .line 128
aload 9 /* tmp2 */
iconst_0
aload 4 /* cipher */
35: .line 129
iload 5 /* cipherOffset */
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
iadd
iload 6 /* nLeft */
36: .line 128
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
37: .line 131
iconst_0
istore 10 /* i */
start local 10 // int i
38: goto 43
39: .line 132
StackMap locals: com.sun.crypto.provider.CipherTextStealing byte[] int int byte[] int int int byte[] byte[] int
StackMap stack:
aload 9 /* tmp2 */
iload 10 /* i */
40: .line 133
aload 1 /* plain */
iload 2 /* plainOffset */
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
iadd
iload 10 /* i */
iadd
baload
aload 9 /* tmp2 */
iload 10 /* i */
baload
ixor
i2b
41: .line 132
bastore
42: .line 131
iinc 10 /* i */ 1
StackMap locals:
StackMap stack:
43: iload 10 /* i */
iload 6 /* nLeft */
if_icmplt 39
end local 10 // int i
44: .line 135
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.embeddedCipher:Lcom/sun/crypto/provider/SymmetricCipher;
aload 9 /* tmp2 */
iconst_0
aload 4 /* cipher */
iload 5 /* cipherOffset */
invokevirtual com.sun.crypto.provider.SymmetricCipher.encryptBlock:([BI[BI)V
end local 9 // byte[] tmp2
end local 8 // byte[] tmp
end local 7 // int newPlainLen
end local 6 // int nLeft
45: .line 138
StackMap locals: com.sun.crypto.provider.CipherTextStealing byte[] int int byte[] int
StackMap stack:
iload 3 /* plainLen */
ireturn
end local 5 // int cipherOffset
end local 4 // byte[] cipher
end local 3 // int plainLen
end local 2 // int plainOffset
end local 1 // byte[] plain
end local 0 // com.sun.crypto.provider.CipherTextStealing this
LocalVariableTable:
Start End Slot Name Signature
0 46 0 this Lcom/sun/crypto/provider/CipherTextStealing;
0 46 1 plain [B
0 46 2 plainOffset I
0 46 3 plainLen I
0 46 4 cipher [B
0 46 5 cipherOffset I
6 45 6 nLeft I
9 18 7 lastBlkIndex I
10 18 8 nextToLastBlkIndex I
11 18 9 tmp [B
20 45 7 newPlainLen I
27 45 8 tmp [B
28 32 9 i I
33 45 9 tmp2 [B
38 44 10 i I
Exceptions:
throws javax.crypto.IllegalBlockSizeException
MethodParameters:
Name Flags
plain
plainOffset
plainLen
cipher
cipherOffset
int decryptFinal(byte[], int, int, byte[], int);
descriptor: ([BII[BI)I
flags: (0x0000)
Code:
stack=7, locals=11, args_size=6
start local 0 // com.sun.crypto.provider.CipherTextStealing this
start local 1 // byte[] cipher
start local 2 // int cipherOffset
start local 3 // int cipherLen
start local 4 // byte[] plain
start local 5 // int plainOffset
0: .line 168
iload 3 /* cipherLen */
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
if_icmpge 2
1: .line 169
new javax.crypto.IllegalBlockSizeException
dup
ldc "input is too short!"
invokespecial javax.crypto.IllegalBlockSizeException.<init>:(Ljava/lang/String;)V
athrow
2: .line 170
StackMap locals:
StackMap stack:
iload 3 /* cipherLen */
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
if_icmpne 5
3: .line 171
aload 0 /* this */
aload 1 /* cipher */
iload 2 /* cipherOffset */
iload 3 /* cipherLen */
aload 4 /* plain */
iload 5 /* plainOffset */
invokevirtual com.sun.crypto.provider.CipherTextStealing.decrypt:([BII[BI)I
pop
4: .line 172
goto 46
5: .line 174
StackMap locals:
StackMap stack:
iload 3 /* cipherLen */
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
irem
istore 6 /* nLeft */
start local 6 // int nLeft
6: .line 175
iload 6 /* nLeft */
ifne 19
7: .line 177
iload 2 /* cipherOffset */
iload 3 /* cipherLen */
iadd
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
isub
istore 7 /* lastBlkIndex */
start local 7 // int lastBlkIndex
8: .line 179
iload 2 /* cipherOffset */
iload 3 /* cipherLen */
iadd
iconst_2
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
imul
isub
9: .line 178
istore 8 /* nextToLastBlkIndex */
start local 8 // int nextToLastBlkIndex
10: .line 180
iconst_2
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
imul
newarray 8
astore 9 /* tmp */
start local 9 // byte[] tmp
11: .line 181
aload 1 /* cipher */
iload 7 /* lastBlkIndex */
aload 9 /* tmp */
iconst_0
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
12: .line 182
aload 1 /* cipher */
iload 8 /* nextToLastBlkIndex */
13: .line 183
aload 9 /* tmp */
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
14: .line 182
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
15: .line 184
iload 3 /* cipherLen */
iconst_2
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
imul
isub
istore 10 /* cipherLen2 */
start local 10 // int cipherLen2
16: .line 185
aload 0 /* this */
aload 1 /* cipher */
iload 2 /* cipherOffset */
iload 10 /* cipherLen2 */
aload 4 /* plain */
iload 5 /* plainOffset */
invokevirtual com.sun.crypto.provider.CipherTextStealing.decrypt:([BII[BI)I
pop
17: .line 186
aload 0 /* this */
aload 9 /* tmp */
iconst_0
iconst_2
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
imul
aload 4 /* plain */
iload 5 /* plainOffset */
iload 10 /* cipherLen2 */
iadd
invokevirtual com.sun.crypto.provider.CipherTextStealing.decrypt:([BII[BI)I
pop
end local 10 // int cipherLen2
end local 9 // byte[] tmp
end local 8 // int nextToLastBlkIndex
end local 7 // int lastBlkIndex
18: .line 187
goto 46
19: .line 188
StackMap locals: int
StackMap stack:
iload 3 /* cipherLen */
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
iload 6 /* nLeft */
iadd
isub
istore 7 /* newCipherLen */
start local 7 // int newCipherLen
20: .line 189
iload 7 /* newCipherLen */
ifle 26
21: .line 190
aload 0 /* this */
aload 1 /* cipher */
iload 2 /* cipherOffset */
iload 7 /* newCipherLen */
aload 4 /* plain */
22: .line 191
iload 5 /* plainOffset */
23: .line 190
invokevirtual com.sun.crypto.provider.CipherTextStealing.decrypt:([BII[BI)I
pop
24: .line 192
iload 2 /* cipherOffset */
iload 7 /* newCipherLen */
iadd
istore 2 /* cipherOffset */
25: .line 193
iload 5 /* plainOffset */
iload 7 /* newCipherLen */
iadd
istore 5 /* plainOffset */
26: .line 199
StackMap locals: int
StackMap stack:
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
newarray 8
astore 8 /* tmp */
start local 8 // byte[] tmp
27: .line 200
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.embeddedCipher:Lcom/sun/crypto/provider/SymmetricCipher;
aload 1 /* cipher */
iload 2 /* cipherOffset */
aload 8 /* tmp */
iconst_0
invokevirtual com.sun.crypto.provider.SymmetricCipher.decryptBlock:([BI[BI)V
28: .line 201
iconst_0
istore 9 /* i */
start local 9 // int i
29: goto 34
30: .line 202
StackMap locals: byte[] int
StackMap stack:
aload 4 /* plain */
iload 5 /* plainOffset */
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
iadd
iload 9 /* i */
iadd
31: .line 203
aload 1 /* cipher */
iload 2 /* cipherOffset */
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
iadd
iload 9 /* i */
iadd
baload
aload 8 /* tmp */
iload 9 /* i */
baload
ixor
i2b
32: .line 202
bastore
33: .line 201
iinc 9 /* i */ 1
StackMap locals:
StackMap stack:
34: iload 9 /* i */
iload 6 /* nLeft */
if_icmplt 30
end local 9 // int i
35: .line 207
aload 1 /* cipher */
iload 2 /* cipherOffset */
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
iadd
aload 8 /* tmp */
iconst_0
36: .line 208
iload 6 /* nLeft */
37: .line 207
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
38: .line 209
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.embeddedCipher:Lcom/sun/crypto/provider/SymmetricCipher;
aload 8 /* tmp */
iconst_0
aload 4 /* plain */
iload 5 /* plainOffset */
invokevirtual com.sun.crypto.provider.SymmetricCipher.decryptBlock:([BI[BI)V
39: .line 211
iconst_0
istore 9 /* i */
start local 9 // int i
40: goto 45
41: .line 212
StackMap locals:
StackMap stack:
aload 4 /* plain */
iload 5 /* plainOffset */
iload 9 /* i */
iadd
42: .line 213
aload 4 /* plain */
iload 5 /* plainOffset */
iload 9 /* i */
iadd
baload
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.r:[B
iload 9 /* i */
baload
ixor
i2b
43: .line 212
bastore
44: .line 211
iinc 9 /* i */ 1
StackMap locals:
StackMap stack:
45: iload 9 /* i */
aload 0 /* this */
getfield com.sun.crypto.provider.CipherTextStealing.blockSize:I
if_icmplt 41
end local 9 // int i
end local 8 // byte[] tmp
end local 7 // int newCipherLen
end local 6 // int nLeft
46: .line 217
StackMap locals: com.sun.crypto.provider.CipherTextStealing byte[] int int byte[] int
StackMap stack:
iload 3 /* cipherLen */
ireturn
end local 5 // int plainOffset
end local 4 // byte[] plain
end local 3 // int cipherLen
end local 2 // int cipherOffset
end local 1 // byte[] cipher
end local 0 // com.sun.crypto.provider.CipherTextStealing this
LocalVariableTable:
Start End Slot Name Signature
0 47 0 this Lcom/sun/crypto/provider/CipherTextStealing;
0 47 1 cipher [B
0 47 2 cipherOffset I
0 47 3 cipherLen I
0 47 4 plain [B
0 47 5 plainOffset I
6 46 6 nLeft I
8 18 7 lastBlkIndex I
10 18 8 nextToLastBlkIndex I
11 18 9 tmp [B
16 18 10 cipherLen2 I
20 46 7 newCipherLen I
27 46 8 tmp [B
29 35 9 i I
40 46 9 i I
Exceptions:
throws javax.crypto.IllegalBlockSizeException
MethodParameters:
Name Flags
cipher
cipherOffset
cipherLen
plain
plainOffset
}
SourceFile: "CipherTextStealing.java"