public class org.bouncycastle.crypto.modes.CCMBlockCipher implements org.bouncycastle.crypto.modes.AEADBlockCipher
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.bouncycastle.crypto.modes.CCMBlockCipher
super_class: java.lang.Object
{
private org.bouncycastle.crypto.BlockCipher cipher;
descriptor: Lorg/bouncycastle/crypto/BlockCipher;
flags: (0x0002) ACC_PRIVATE
private int blockSize;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private boolean forEncryption;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private byte[] nonce;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private byte[] associatedText;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private int macSize;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private org.bouncycastle.crypto.CipherParameters keyParam;
descriptor: Lorg/bouncycastle/crypto/CipherParameters;
flags: (0x0002) ACC_PRIVATE
private byte[] macBlock;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private java.io.ByteArrayOutputStream data;
descriptor: Ljava/io/ByteArrayOutputStream;
flags: (0x0002) ACC_PRIVATE
public void <init>(org.bouncycastle.crypto.BlockCipher);
descriptor: (Lorg/bouncycastle/crypto/BlockCipher;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
new java.io.ByteArrayOutputStream
dup
invokespecial java.io.ByteArrayOutputStream.<init>:()V
putfield org.bouncycastle.crypto.modes.CCMBlockCipher.data:Ljava/io/ByteArrayOutputStream;
2: aload 0
aload 1
putfield org.bouncycastle.crypto.modes.CCMBlockCipher.cipher:Lorg/bouncycastle/crypto/BlockCipher;
3: aload 0
aload 1
invokeinterface org.bouncycastle.crypto.BlockCipher.getBlockSize:()I
putfield org.bouncycastle.crypto.modes.CCMBlockCipher.blockSize:I
4: aload 0
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.blockSize:I
newarray 8
putfield org.bouncycastle.crypto.modes.CCMBlockCipher.macBlock:[B
5: aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.blockSize:I
bipush 16
if_icmpeq 7
6: new java.lang.IllegalArgumentException
dup
ldc "cipher required with a block size of 16."
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals: org.bouncycastle.crypto.modes.CCMBlockCipher org.bouncycastle.crypto.BlockCipher
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/bouncycastle/crypto/modes/CCMBlockCipher;
0 8 1 c Lorg/bouncycastle/crypto/BlockCipher;
MethodParameters:
Name Flags
c
public org.bouncycastle.crypto.BlockCipher getUnderlyingCipher();
descriptor: ()Lorg/bouncycastle/crypto/BlockCipher;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.cipher:Lorg/bouncycastle/crypto/BlockCipher;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/bouncycastle/crypto/modes/CCMBlockCipher;
public void init(boolean, org.bouncycastle.crypto.CipherParameters);
descriptor: (ZLorg/bouncycastle/crypto/CipherParameters;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
iload 1
putfield org.bouncycastle.crypto.modes.CCMBlockCipher.forEncryption:Z
1: aload 2
instanceof org.bouncycastle.crypto.params.AEADParameters
ifeq 8
2: aload 2
checkcast org.bouncycastle.crypto.params.AEADParameters
astore 3
start local 3 3: aload 0
aload 3
invokevirtual org.bouncycastle.crypto.params.AEADParameters.getNonce:()[B
putfield org.bouncycastle.crypto.modes.CCMBlockCipher.nonce:[B
4: aload 0
aload 3
invokevirtual org.bouncycastle.crypto.params.AEADParameters.getAssociatedText:()[B
putfield org.bouncycastle.crypto.modes.CCMBlockCipher.associatedText:[B
5: aload 0
aload 3
invokevirtual org.bouncycastle.crypto.params.AEADParameters.getMacSize:()I
bipush 8
idiv
putfield org.bouncycastle.crypto.modes.CCMBlockCipher.macSize:I
6: aload 0
aload 3
invokevirtual org.bouncycastle.crypto.params.AEADParameters.getKey:()Lorg/bouncycastle/crypto/params/KeyParameter;
putfield org.bouncycastle.crypto.modes.CCMBlockCipher.keyParam:Lorg/bouncycastle/crypto/CipherParameters;
end local 3 7: goto 16
8: StackMap locals:
StackMap stack:
aload 2
instanceof org.bouncycastle.crypto.params.ParametersWithIV
ifeq 15
9: aload 2
checkcast org.bouncycastle.crypto.params.ParametersWithIV
astore 3
start local 3 10: aload 0
aload 3
invokevirtual org.bouncycastle.crypto.params.ParametersWithIV.getIV:()[B
putfield org.bouncycastle.crypto.modes.CCMBlockCipher.nonce:[B
11: aload 0
aconst_null
putfield org.bouncycastle.crypto.modes.CCMBlockCipher.associatedText:[B
12: aload 0
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.macBlock:[B
arraylength
iconst_2
idiv
putfield org.bouncycastle.crypto.modes.CCMBlockCipher.macSize:I
13: aload 0
aload 3
invokevirtual org.bouncycastle.crypto.params.ParametersWithIV.getParameters:()Lorg/bouncycastle/crypto/CipherParameters;
putfield org.bouncycastle.crypto.modes.CCMBlockCipher.keyParam:Lorg/bouncycastle/crypto/CipherParameters;
end local 3 14: goto 16
15: StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
ldc "invalid parameters passed to CCM"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
16: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 17 0 this Lorg/bouncycastle/crypto/modes/CCMBlockCipher;
0 17 1 forEncryption Z
0 17 2 params Lorg/bouncycastle/crypto/CipherParameters;
3 7 3 param Lorg/bouncycastle/crypto/params/AEADParameters;
10 14 3 param Lorg/bouncycastle/crypto/params/ParametersWithIV;
Exceptions:
throws java.lang.IllegalArgumentException
MethodParameters:
Name Flags
forEncryption
params
public java.lang.String getAlgorithmName();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: new java.lang.StringBuilder
dup
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.cipher:Lorg/bouncycastle/crypto/BlockCipher;
invokeinterface org.bouncycastle.crypto.BlockCipher.getAlgorithmName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
ldc "/CCM"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/bouncycastle/crypto/modes/CCMBlockCipher;
public int processByte(byte, byte[], int);
descriptor: (B[BI)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.data:Ljava/io/ByteArrayOutputStream;
iload 1
invokevirtual java.io.ByteArrayOutputStream.write:(I)V
1: iconst_0
ireturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lorg/bouncycastle/crypto/modes/CCMBlockCipher;
0 2 1 in B
0 2 2 out [B
0 2 3 outOff I
Exceptions:
throws org.bouncycastle.crypto.DataLengthException, java.lang.IllegalStateException
MethodParameters:
Name Flags
in
out
outOff
public int processBytes(byte[], int, int, byte[], int);
descriptor: ([BII[BI)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, 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 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.data:Ljava/io/ByteArrayOutputStream;
aload 1
iload 2
iload 3
invokevirtual java.io.ByteArrayOutputStream.write:([BII)V
1: iconst_0
ireturn
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 2 0 this Lorg/bouncycastle/crypto/modes/CCMBlockCipher;
0 2 1 in [B
0 2 2 inOff I
0 2 3 inLen I
0 2 4 out [B
0 2 5 outOff I
Exceptions:
throws org.bouncycastle.crypto.DataLengthException, java.lang.IllegalStateException
MethodParameters:
Name Flags
in
inOff
inLen
out
outOff
public int doFinal(byte[], int);
descriptor: ([BI)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.data:Ljava/io/ByteArrayOutputStream;
invokevirtual java.io.ByteArrayOutputStream.toByteArray:()[B
astore 3
start local 3 1: aload 0
aload 3
iconst_0
aload 3
arraylength
invokevirtual org.bouncycastle.crypto.modes.CCMBlockCipher.processPacket:([BII)[B
astore 4
start local 4 2: aload 4
iconst_0
aload 1
iload 2
aload 4
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
3: aload 0
invokevirtual org.bouncycastle.crypto.modes.CCMBlockCipher.reset:()V
4: aload 4
arraylength
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/bouncycastle/crypto/modes/CCMBlockCipher;
0 5 1 out [B
0 5 2 outOff I
1 5 3 text [B
2 5 4 enc [B
Exceptions:
throws java.lang.IllegalStateException, org.bouncycastle.crypto.InvalidCipherTextException
MethodParameters:
Name Flags
out
outOff
public void reset();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.cipher:Lorg/bouncycastle/crypto/BlockCipher;
invokeinterface org.bouncycastle.crypto.BlockCipher.reset:()V
1: aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.data:Ljava/io/ByteArrayOutputStream;
invokevirtual java.io.ByteArrayOutputStream.reset:()V
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/bouncycastle/crypto/modes/CCMBlockCipher;
public byte[] getMac();
descriptor: ()[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=2, args_size=1
start local 0 0: aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.macSize:I
newarray 8
astore 1
start local 1 1: aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.macBlock:[B
iconst_0
aload 1
iconst_0
aload 1
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
2: aload 1
areturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/bouncycastle/crypto/modes/CCMBlockCipher;
1 3 1 mac [B
public int getUpdateOutputSize(int);
descriptor: (I)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=2, args_size=2
start local 0 start local 1 0: iconst_0
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/bouncycastle/crypto/modes/CCMBlockCipher;
0 1 1 len I
MethodParameters:
Name Flags
len
public int getOutputSize(int);
descriptor: (I)I
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.forEncryption:Z
ifeq 2
1: aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.data:Ljava/io/ByteArrayOutputStream;
invokevirtual java.io.ByteArrayOutputStream.size:()I
iload 1
iadd
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.macSize:I
iadd
ireturn
2: StackMap locals:
StackMap stack:
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.data:Ljava/io/ByteArrayOutputStream;
invokevirtual java.io.ByteArrayOutputStream.size:()I
iload 1
iadd
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.macSize:I
isub
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lorg/bouncycastle/crypto/modes/CCMBlockCipher;
0 3 1 len I
MethodParameters:
Name Flags
len
public byte[] processPacket(byte[], int, int);
descriptor: ([BII)[B
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=11, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.keyParam:Lorg/bouncycastle/crypto/CipherParameters;
ifnonnull 2
1: new java.lang.IllegalStateException
dup
ldc "CCM cipher unitialized."
invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
new org.bouncycastle.crypto.modes.SICBlockCipher
dup
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.cipher:Lorg/bouncycastle/crypto/BlockCipher;
invokespecial org.bouncycastle.crypto.modes.SICBlockCipher.<init>:(Lorg/bouncycastle/crypto/BlockCipher;)V
astore 4
start local 4 3: aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.blockSize:I
newarray 8
astore 5
start local 5 4: aload 5
iconst_0
bipush 15
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.nonce:[B
arraylength
isub
iconst_1
isub
bipush 7
iand
i2b
bastore
5: aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.nonce:[B
iconst_0
aload 5
iconst_1
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.nonce:[B
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
6: aload 4
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.forEncryption:Z
new org.bouncycastle.crypto.params.ParametersWithIV
dup
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.keyParam:Lorg/bouncycastle/crypto/CipherParameters;
aload 5
invokespecial org.bouncycastle.crypto.params.ParametersWithIV.<init>:(Lorg/bouncycastle/crypto/CipherParameters;[B)V
invokeinterface org.bouncycastle.crypto.BlockCipher.init:(ZLorg/bouncycastle/crypto/CipherParameters;)V
7: aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.forEncryption:Z
ifeq 25
8: iload 2
istore 7
start local 7 9: iconst_0
istore 8
start local 8 10: iload 3
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.macSize:I
iadd
newarray 8
astore 6
start local 6 11: aload 0
aload 1
iload 2
iload 3
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.macBlock:[B
invokevirtual org.bouncycastle.crypto.modes.CCMBlockCipher.calculateMac:([BII[B)I
pop
12: aload 4
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.macBlock:[B
iconst_0
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.macBlock:[B
iconst_0
invokeinterface org.bouncycastle.crypto.BlockCipher.processBlock:([BI[BI)I
pop
13: goto 17
14: StackMap locals: org.bouncycastle.crypto.modes.CCMBlockCipher byte[] int int org.bouncycastle.crypto.BlockCipher byte[] byte[] int int
StackMap stack:
aload 4
aload 1
iload 7
aload 6
iload 8
invokeinterface org.bouncycastle.crypto.BlockCipher.processBlock:([BI[BI)I
pop
15: iload 8
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.blockSize:I
iadd
istore 8
16: iload 7
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.blockSize:I
iadd
istore 7
17: StackMap locals:
StackMap stack:
iload 7
iload 3
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.blockSize:I
isub
if_icmplt 14
18: aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.blockSize:I
newarray 8
astore 9
start local 9 19: aload 1
iload 7
aload 9
iconst_0
iload 3
iload 7
isub
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
20: aload 4
aload 9
iconst_0
aload 9
iconst_0
invokeinterface org.bouncycastle.crypto.BlockCipher.processBlock:([BI[BI)I
pop
21: aload 9
iconst_0
aload 6
iload 8
iload 3
iload 7
isub
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
22: iload 8
iload 3
iload 7
isub
iadd
istore 8
23: aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.macBlock:[B
iconst_0
aload 6
iload 8
aload 6
arraylength
iload 8
isub
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
end local 9 end local 8 end local 7 24: goto 48
end local 6 25: StackMap locals:
StackMap stack:
iload 2
istore 7
start local 7 26: iconst_0
istore 8
start local 8 27: iload 3
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.macSize:I
isub
newarray 8
astore 6
start local 6 28: aload 1
iload 2
iload 3
iadd
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.macSize:I
isub
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.macBlock:[B
iconst_0
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.macSize:I
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
29: aload 4
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.macBlock:[B
iconst_0
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.macBlock:[B
iconst_0
invokeinterface org.bouncycastle.crypto.BlockCipher.processBlock:([BI[BI)I
pop
30: aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.macSize:I
istore 9
start local 9 31: goto 34
32: StackMap locals: org.bouncycastle.crypto.modes.CCMBlockCipher byte[] int int org.bouncycastle.crypto.BlockCipher byte[] byte[] int int int
StackMap stack:
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.macBlock:[B
iload 9
iconst_0
bastore
33: iinc 9 1
StackMap locals:
StackMap stack:
34: iload 9
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.macBlock:[B
arraylength
if_icmpne 32
end local 9 35: goto 39
36: StackMap locals:
StackMap stack:
aload 4
aload 1
iload 7
aload 6
iload 8
invokeinterface org.bouncycastle.crypto.BlockCipher.processBlock:([BI[BI)I
pop
37: iload 8
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.blockSize:I
iadd
istore 8
38: iload 7
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.blockSize:I
iadd
istore 7
39: StackMap locals:
StackMap stack:
iload 8
aload 6
arraylength
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.blockSize:I
isub
if_icmplt 36
40: aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.blockSize:I
newarray 8
astore 9
start local 9 41: aload 1
iload 7
aload 9
iconst_0
aload 6
arraylength
iload 8
isub
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
42: aload 4
aload 9
iconst_0
aload 9
iconst_0
invokeinterface org.bouncycastle.crypto.BlockCipher.processBlock:([BI[BI)I
pop
43: aload 9
iconst_0
aload 6
iload 8
aload 6
arraylength
iload 8
isub
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
44: aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.blockSize:I
newarray 8
astore 10
start local 10 45: aload 0
aload 6
iconst_0
aload 6
arraylength
aload 10
invokevirtual org.bouncycastle.crypto.modes.CCMBlockCipher.calculateMac:([BII[B)I
pop
46: aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.macBlock:[B
aload 10
invokestatic org.bouncycastle.util.Arrays.constantTimeAreEqual:([B[B)Z
ifne 48
47: new org.bouncycastle.crypto.InvalidCipherTextException
dup
ldc "mac check in CCM failed"
invokespecial org.bouncycastle.crypto.InvalidCipherTextException.<init>:(Ljava/lang/String;)V
athrow
end local 10 end local 9 end local 8 end local 7 48: StackMap locals:
StackMap stack:
aload 6
areturn
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 49 0 this Lorg/bouncycastle/crypto/modes/CCMBlockCipher;
0 49 1 in [B
0 49 2 inOff I
0 49 3 inLen I
3 49 4 ctrCipher Lorg/bouncycastle/crypto/BlockCipher;
4 49 5 iv [B
11 25 6 out [B
28 49 6 out [B
9 24 7 index I
10 24 8 outOff I
19 24 9 block [B
26 48 7 index I
27 48 8 outOff I
31 35 9 i I
41 48 9 block [B
45 48 10 calculatedMacBlock [B
Exceptions:
throws java.lang.IllegalStateException, org.bouncycastle.crypto.InvalidCipherTextException
MethodParameters:
Name Flags
in
inOff
inLen
private int calculateMac(byte[], int, int, byte[]);
descriptor: ([BII[B)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=11, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: new org.bouncycastle.crypto.macs.CBCBlockCipherMac
dup
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.cipher:Lorg/bouncycastle/crypto/BlockCipher;
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.macSize:I
bipush 8
imul
invokespecial org.bouncycastle.crypto.macs.CBCBlockCipherMac.<init>:(Lorg/bouncycastle/crypto/BlockCipher;I)V
astore 5
start local 5 1: aload 5
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.keyParam:Lorg/bouncycastle/crypto/CipherParameters;
invokeinterface org.bouncycastle.crypto.Mac.init:(Lorg/bouncycastle/crypto/CipherParameters;)V
2: bipush 16
newarray 8
astore 6
start local 6 3: aload 0
invokevirtual org.bouncycastle.crypto.modes.CCMBlockCipher.hasAssociatedText:()Z
ifeq 5
4: aload 6
iconst_0
dup2
baload
bipush 64
ior
i2b
bastore
5: StackMap locals: org.bouncycastle.crypto.Mac byte[]
StackMap stack:
aload 6
iconst_0
dup2
baload
aload 5
invokeinterface org.bouncycastle.crypto.Mac.getMacSize:()I
iconst_2
isub
iconst_2
idiv
bipush 7
iand
iconst_3
ishl
ior
i2b
bastore
6: aload 6
iconst_0
dup2
baload
bipush 15
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.nonce:[B
arraylength
isub
iconst_1
isub
bipush 7
iand
ior
i2b
bastore
7: aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.nonce:[B
iconst_0
aload 6
iconst_1
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.nonce:[B
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
8: iload 3
istore 7
start local 7 9: iconst_1
istore 8
start local 8 10: goto 14
11: StackMap locals: int int
StackMap stack:
aload 6
aload 6
arraylength
iload 8
isub
iload 7
sipush 255
iand
i2b
bastore
12: iload 7
bipush 8
iushr
istore 7
13: iinc 8 1
14: StackMap locals:
StackMap stack:
iload 7
ifgt 11
15: aload 5
aload 6
iconst_0
aload 6
arraylength
invokeinterface org.bouncycastle.crypto.Mac.update:([BII)V
16: aload 0
invokevirtual org.bouncycastle.crypto.modes.CCMBlockCipher.hasAssociatedText:()Z
ifeq 37
17: aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.associatedText:[B
arraylength
ldc 65280
if_icmpge 22
18: aload 5
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.associatedText:[B
arraylength
bipush 8
ishr
i2b
invokeinterface org.bouncycastle.crypto.Mac.update:(B)V
19: aload 5
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.associatedText:[B
arraylength
i2b
invokeinterface org.bouncycastle.crypto.Mac.update:(B)V
20: iconst_2
istore 9
start local 9 21: goto 29
end local 9 22: StackMap locals:
StackMap stack:
aload 5
iconst_m1
invokeinterface org.bouncycastle.crypto.Mac.update:(B)V
23: aload 5
bipush -2
invokeinterface org.bouncycastle.crypto.Mac.update:(B)V
24: aload 5
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.associatedText:[B
arraylength
bipush 24
ishr
i2b
invokeinterface org.bouncycastle.crypto.Mac.update:(B)V
25: aload 5
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.associatedText:[B
arraylength
bipush 16
ishr
i2b
invokeinterface org.bouncycastle.crypto.Mac.update:(B)V
26: aload 5
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.associatedText:[B
arraylength
bipush 8
ishr
i2b
invokeinterface org.bouncycastle.crypto.Mac.update:(B)V
27: aload 5
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.associatedText:[B
arraylength
i2b
invokeinterface org.bouncycastle.crypto.Mac.update:(B)V
28: bipush 6
istore 9
start local 9 29: StackMap locals: int
StackMap stack:
aload 5
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.associatedText:[B
iconst_0
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.associatedText:[B
arraylength
invokeinterface org.bouncycastle.crypto.Mac.update:([BII)V
30: iload 9
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.associatedText:[B
arraylength
iadd
bipush 16
irem
istore 9
31: iload 9
ifeq 37
32: iconst_0
istore 10
start local 10 33: goto 36
34: StackMap locals: int
StackMap stack:
aload 5
iconst_0
invokeinterface org.bouncycastle.crypto.Mac.update:(B)V
35: iinc 10 1
StackMap locals:
StackMap stack:
36: iload 10
bipush 16
iload 9
isub
if_icmpne 34
end local 10 end local 9 37: StackMap locals:
StackMap stack:
aload 5
aload 1
iload 2
iload 3
invokeinterface org.bouncycastle.crypto.Mac.update:([BII)V
38: aload 5
aload 4
iconst_0
invokeinterface org.bouncycastle.crypto.Mac.doFinal:([BI)I
ireturn
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 39 0 this Lorg/bouncycastle/crypto/modes/CCMBlockCipher;
0 39 1 data [B
0 39 2 dataOff I
0 39 3 dataLen I
0 39 4 macBlock [B
1 39 5 cMac Lorg/bouncycastle/crypto/Mac;
3 39 6 b0 [B
9 39 7 q I
10 39 8 count I
21 22 9 extra I
29 37 9 extra I
33 37 10 i I
MethodParameters:
Name Flags
data
dataOff
dataLen
macBlock
private boolean hasAssociatedText();
descriptor: ()Z
flags: (0x0002) ACC_PRIVATE
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.associatedText:[B
ifnull 1
aload 0
getfield org.bouncycastle.crypto.modes.CCMBlockCipher.associatedText:[B
arraylength
ifeq 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 Lorg/bouncycastle/crypto/modes/CCMBlockCipher;
}
SourceFile: "CCMBlockCipher.java"