public class org.bouncycastle.crypto.engines.Grain128Engine implements org.bouncycastle.crypto.StreamCipher
minor version: 0
major version: 59
flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
this_class: org.bouncycastle.crypto.engines.Grain128Engine
super_class: java.lang.Object
{
private static final int STATE_SIZE;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 4
private byte[] workingKey;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private byte[] workingIV;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private byte[] out;
descriptor: [B
flags: (0x0002) ACC_PRIVATE
private int[] lfsr;
descriptor: [I
flags: (0x0002) ACC_PRIVATE
private int[] nfsr;
descriptor: [I
flags: (0x0002) ACC_PRIVATE
private int output;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int index;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private boolean initialised;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
public void <init>();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
iconst_4
putfield org.bouncycastle.crypto.engines.Grain128Engine.index:I
2: aload 0
iconst_0
putfield org.bouncycastle.crypto.engines.Grain128Engine.initialised:Z
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/bouncycastle/crypto/engines/Grain128Engine;
public java.lang.String getAlgorithmName();
descriptor: ()Ljava/lang/String;
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: ldc "Grain-128"
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lorg/bouncycastle/crypto/engines/Grain128Engine;
public void init(boolean, org.bouncycastle.crypto.CipherParameters);
descriptor: (ZLorg/bouncycastle/crypto/CipherParameters;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 2
instanceof org.bouncycastle.crypto.params.ParametersWithIV
ifne 4
1: new java.lang.IllegalArgumentException
dup
2: ldc "Grain-128 Init parameters must include an IV"
3: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
aload 2
checkcast org.bouncycastle.crypto.params.ParametersWithIV
astore 3
start local 3 5: aload 3
invokevirtual org.bouncycastle.crypto.params.ParametersWithIV.getIV:()[B
astore 4
start local 4 6: aload 4
ifnull 7
aload 4
arraylength
bipush 12
if_icmpeq 10
7: StackMap locals: org.bouncycastle.crypto.params.ParametersWithIV byte[]
StackMap stack:
new java.lang.IllegalArgumentException
dup
8: ldc "Grain-128 requires exactly 12 bytes of IV"
9: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
10: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.bouncycastle.crypto.params.ParametersWithIV.getParameters:()Lorg/bouncycastle/crypto/CipherParameters;
instanceof org.bouncycastle.crypto.params.KeyParameter
ifne 14
11: new java.lang.IllegalArgumentException
dup
12: ldc "Grain-128 Init parameters must include a key"
13: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
14: StackMap locals:
StackMap stack:
aload 3
invokevirtual org.bouncycastle.crypto.params.ParametersWithIV.getParameters:()Lorg/bouncycastle/crypto/CipherParameters;
checkcast org.bouncycastle.crypto.params.KeyParameter
astore 5
start local 5 15: aload 0
aload 5
invokevirtual org.bouncycastle.crypto.params.KeyParameter.getKey:()[B
arraylength
newarray 8
putfield org.bouncycastle.crypto.engines.Grain128Engine.workingIV:[B
16: aload 0
aload 5
invokevirtual org.bouncycastle.crypto.params.KeyParameter.getKey:()[B
arraylength
newarray 8
putfield org.bouncycastle.crypto.engines.Grain128Engine.workingKey:[B
17: aload 0
iconst_4
newarray 10
putfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
18: aload 0
iconst_4
newarray 10
putfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
19: aload 0
iconst_4
newarray 8
putfield org.bouncycastle.crypto.engines.Grain128Engine.out:[B
20: aload 4
iconst_0
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.workingIV:[B
iconst_0
aload 4
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
21: aload 5
invokevirtual org.bouncycastle.crypto.params.KeyParameter.getKey:()[B
iconst_0
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.workingKey:[B
iconst_0
aload 5
invokevirtual org.bouncycastle.crypto.params.KeyParameter.getKey:()[B
arraylength
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
22: aload 0
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.workingKey:[B
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.workingIV:[B
invokevirtual org.bouncycastle.crypto.engines.Grain128Engine.setKey:([B[B)V
23: aload 0
invokevirtual org.bouncycastle.crypto.engines.Grain128Engine.initGrain:()V
24: return
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 25 0 this Lorg/bouncycastle/crypto/engines/Grain128Engine;
0 25 1 forEncryption Z
0 25 2 params Lorg/bouncycastle/crypto/CipherParameters;
5 25 3 ivParams Lorg/bouncycastle/crypto/params/ParametersWithIV;
6 25 4 iv [B
15 25 5 key Lorg/bouncycastle/crypto/params/KeyParameter;
Exceptions:
throws java.lang.IllegalArgumentException
MethodParameters:
Name Flags
forEncryption
params
private void initGrain();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=2, args_size=1
start local 0 0: iconst_0
istore 1
start local 1 1: goto 6
2: StackMap locals: int
StackMap stack:
aload 0
aload 0
invokevirtual org.bouncycastle.crypto.engines.Grain128Engine.getOutput:()I
putfield org.bouncycastle.crypto.engines.Grain128Engine.output:I
3: aload 0
aload 0
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
aload 0
invokevirtual org.bouncycastle.crypto.engines.Grain128Engine.getOutputNFSR:()I
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_0
iaload
ixor
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.output:I
ixor
invokevirtual org.bouncycastle.crypto.engines.Grain128Engine.shift:([II)[I
putfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
4: aload 0
aload 0
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
aload 0
invokevirtual org.bouncycastle.crypto.engines.Grain128Engine.getOutputLFSR:()I
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.output:I
ixor
invokevirtual org.bouncycastle.crypto.engines.Grain128Engine.shift:([II)[I
putfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
5: iinc 1 1
StackMap locals:
StackMap stack:
6: iload 1
bipush 8
if_icmplt 2
end local 1 7: aload 0
iconst_1
putfield org.bouncycastle.crypto.engines.Grain128Engine.initialised:Z
8: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lorg/bouncycastle/crypto/engines/Grain128Engine;
1 7 1 i I
private int getOutputNFSR();
descriptor: ()I
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=20, args_size=1
start local 0 0: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_0
iaload
istore 1
start local 1 1: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_0
iaload
iconst_3
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_1
iaload
bipush 29
ishl
ior
istore 2
start local 2 2: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_0
iaload
bipush 11
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_1
iaload
bipush 21
ishl
ior
istore 3
start local 3 3: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_0
iaload
bipush 13
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_1
iaload
bipush 19
ishl
ior
istore 4
start local 4 4: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_0
iaload
bipush 17
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_1
iaload
bipush 15
ishl
ior
istore 5
start local 5 5: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_0
iaload
bipush 18
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_1
iaload
bipush 14
ishl
ior
istore 6
start local 6 6: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_0
iaload
bipush 26
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_1
iaload
bipush 6
ishl
ior
istore 7
start local 7 7: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_0
iaload
bipush 27
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_1
iaload
iconst_5
ishl
ior
istore 8
start local 8 8: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_1
iaload
bipush 8
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_2
iaload
bipush 24
ishl
ior
istore 9
start local 9 9: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_1
iaload
bipush 16
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_2
iaload
bipush 16
ishl
ior
istore 10
start local 10 10: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_1
iaload
bipush 24
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_2
iaload
bipush 8
ishl
ior
istore 11
start local 11 11: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_1
iaload
bipush 27
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_2
iaload
iconst_5
ishl
ior
istore 12
start local 12 12: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_1
iaload
bipush 29
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_2
iaload
iconst_3
ishl
ior
istore 13
start local 13 13: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_2
iaload
iconst_1
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_3
iaload
bipush 31
ishl
ior
istore 14
start local 14 14: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_2
iaload
iconst_3
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_3
iaload
bipush 29
ishl
ior
istore 15
start local 15 15: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_2
iaload
iconst_4
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_3
iaload
bipush 28
ishl
ior
istore 16
start local 16 16: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_2
iaload
bipush 20
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_3
iaload
bipush 12
ishl
ior
istore 17
start local 17 17: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_2
iaload
bipush 27
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_3
iaload
iconst_5
ishl
ior
istore 18
start local 18 18: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_3
iaload
istore 19
start local 19 19: iload 1
iload 7
ixor
iload 11
ixor
iload 18
ixor
iload 19
ixor
iload 2
iload 15
iand
ixor
iload 3
iload 4
iand
ixor
iload 5
iload 6
iand
ixor
20: iload 8
iload 12
iand
21: ixor
22: iload 9
iload 10
iand
23: ixor
24: iload 13
iload 14
iand
25: ixor
26: iload 16
iload 17
iand
27: ixor
ireturn
end local 19 end local 18 end local 17 end local 16 end local 15 end local 14 end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 28 0 this Lorg/bouncycastle/crypto/engines/Grain128Engine;
1 28 1 b0 I
2 28 2 b3 I
3 28 3 b11 I
4 28 4 b13 I
5 28 5 b17 I
6 28 6 b18 I
7 28 7 b26 I
8 28 8 b27 I
9 28 9 b40 I
10 28 10 b48 I
11 28 11 b56 I
12 28 12 b59 I
13 28 13 b61 I
14 28 14 b65 I
15 28 15 b67 I
16 28 16 b68 I
17 28 17 b84 I
18 28 18 b91 I
19 28 19 b96 I
private int getOutputLFSR();
descriptor: ()I
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=7, args_size=1
start local 0 0: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_0
iaload
istore 1
start local 1 1: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_0
iaload
bipush 7
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_1
iaload
bipush 25
ishl
ior
istore 2
start local 2 2: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_1
iaload
bipush 6
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_2
iaload
bipush 26
ishl
ior
istore 3
start local 3 3: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_2
iaload
bipush 6
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_3
iaload
bipush 26
ishl
ior
istore 4
start local 4 4: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_2
iaload
bipush 17
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_3
iaload
bipush 15
ishl
ior
istore 5
start local 5 5: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_3
iaload
istore 6
start local 6 6: iload 1
iload 2
ixor
iload 3
ixor
iload 4
ixor
iload 5
ixor
iload 6
ixor
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 7 0 this Lorg/bouncycastle/crypto/engines/Grain128Engine;
1 7 1 s0 I
2 7 2 s7 I
3 7 3 s38 I
4 7 4 s70 I
5 7 5 s81 I
6 7 6 s96 I
private int getOutput();
descriptor: ()I
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=18, args_size=1
start local 0 0: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_0
iaload
iconst_2
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_1
iaload
bipush 30
ishl
ior
istore 1
start local 1 1: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_0
iaload
bipush 12
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_1
iaload
bipush 20
ishl
ior
istore 2
start local 2 2: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_0
iaload
bipush 15
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_1
iaload
bipush 17
ishl
ior
istore 3
start local 3 3: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_1
iaload
iconst_4
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_2
iaload
bipush 28
ishl
ior
istore 4
start local 4 4: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_1
iaload
bipush 13
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_2
iaload
bipush 19
ishl
ior
istore 5
start local 5 5: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_2
iaload
istore 6
start local 6 6: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_2
iaload
bipush 9
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_3
iaload
bipush 23
ishl
ior
istore 7
start local 7 7: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_2
iaload
bipush 25
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_3
iaload
bipush 7
ishl
ior
istore 8
start local 8 8: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_2
iaload
bipush 31
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iconst_3
iaload
iconst_1
ishl
ior
istore 9
start local 9 9: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_0
iaload
bipush 8
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_1
iaload
bipush 24
ishl
ior
istore 10
start local 10 10: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_0
iaload
bipush 13
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_1
iaload
bipush 19
ishl
ior
istore 11
start local 11 11: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_0
iaload
bipush 20
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_1
iaload
bipush 12
ishl
ior
istore 12
start local 12 12: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_1
iaload
bipush 10
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_2
iaload
bipush 22
ishl
ior
istore 13
start local 13 13: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_1
iaload
bipush 28
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_2
iaload
iconst_4
ishl
ior
istore 14
start local 14 14: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_2
iaload
bipush 15
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_3
iaload
bipush 17
ishl
ior
istore 15
start local 15 15: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_2
iaload
bipush 29
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_3
iaload
iconst_3
ishl
ior
istore 16
start local 16 16: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_2
iaload
bipush 31
iushr
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_3
iaload
iconst_1
ishl
ior
istore 17
start local 17 17: iload 2
iload 10
iand
iload 11
iload 12
iand
ixor
iload 9
iload 13
iand
ixor
iload 14
iload 15
iand
ixor
iload 2
iload 9
iand
iload 17
iand
ixor
iload 16
ixor
18: iload 1
19: ixor
20: iload 3
21: ixor
22: iload 4
23: ixor
24: iload 5
25: ixor
26: iload 6
27: ixor
28: iload 7
29: ixor
30: iload 8
31: ixor
ireturn
end local 17 end local 16 end local 15 end local 14 end local 13 end local 12 end local 11 end local 10 end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 32 0 this Lorg/bouncycastle/crypto/engines/Grain128Engine;
1 32 1 b2 I
2 32 2 b12 I
3 32 3 b15 I
4 32 4 b36 I
5 32 5 b45 I
6 32 6 b64 I
7 32 7 b73 I
8 32 8 b89 I
9 32 9 b95 I
10 32 10 s8 I
11 32 11 s13 I
12 32 12 s20 I
13 32 13 s42 I
14 32 14 s60 I
15 32 15 s79 I
16 32 16 s93 I
17 32 17 s95 I
private int[] shift(int[], int);
descriptor: ([II)[I
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
iconst_0
aload 1
iconst_1
iaload
iastore
1: aload 1
iconst_1
aload 1
iconst_2
iaload
iastore
2: aload 1
iconst_2
aload 1
iconst_3
iaload
iastore
3: aload 1
iconst_3
iload 2
iastore
4: aload 1
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/bouncycastle/crypto/engines/Grain128Engine;
0 5 1 array [I
0 5 2 val I
MethodParameters:
Name Flags
array
val
private void setKey(byte[], byte[]);
descriptor: ([B[B)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 2
bipush 12
iconst_m1
bastore
1: aload 2
bipush 13
iconst_m1
bastore
2: aload 2
bipush 14
iconst_m1
bastore
3: aload 2
bipush 15
iconst_m1
bastore
4: aload 0
aload 1
putfield org.bouncycastle.crypto.engines.Grain128Engine.workingKey:[B
5: aload 0
aload 2
putfield org.bouncycastle.crypto.engines.Grain128Engine.workingIV:[B
6: iconst_0
istore 3
start local 3 7: iconst_0
istore 4
start local 4 8: goto 19
9: StackMap locals: int int
StackMap stack:
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
iload 4
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.workingKey:[B
iload 3
iconst_3
iadd
baload
bipush 24
ishl
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.workingKey:[B
iload 3
iconst_2
iadd
baload
bipush 16
ishl
10: ldc 16711680
iand
ior
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.workingKey:[B
iload 3
iconst_1
iadd
baload
bipush 8
ishl
ldc 65280
iand
ior
11: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.workingKey:[B
iload 3
baload
sipush 255
iand
ior
12: iastore
13: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iload 4
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.workingIV:[B
iload 3
iconst_3
iadd
baload
bipush 24
ishl
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.workingIV:[B
iload 3
iconst_2
iadd
baload
bipush 16
ishl
14: ldc 16711680
iand
ior
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.workingIV:[B
iload 3
iconst_1
iadd
baload
bipush 8
ishl
ldc 65280
iand
ior
15: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.workingIV:[B
iload 3
baload
sipush 255
iand
ior
16: iastore
17: iinc 3 4
18: iinc 4 1
StackMap locals:
StackMap stack:
19: iload 4
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
arraylength
if_icmplt 9
end local 4 20: return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lorg/bouncycastle/crypto/engines/Grain128Engine;
0 21 1 keyBytes [B
0 21 2 ivBytes [B
7 21 3 j I
8 20 4 i I
MethodParameters:
Name Flags
keyBytes
ivBytes
public void processBytes(byte[], int, int, byte[], int);
descriptor: ([BII[BI)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=7, 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.engines.Grain128Engine.initialised:Z
ifne 4
1: new java.lang.IllegalStateException
dup
new java.lang.StringBuilder
dup
aload 0
invokevirtual org.bouncycastle.crypto.engines.Grain128Engine.getAlgorithmName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
2: ldc " not initialised"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
3: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
iload 2
iload 3
iadd
aload 1
arraylength
if_icmple 6
5: new org.bouncycastle.crypto.DataLengthException
dup
ldc "input buffer too short"
invokespecial org.bouncycastle.crypto.DataLengthException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals:
StackMap stack:
iload 5
iload 3
iadd
aload 4
arraylength
if_icmple 8
7: new org.bouncycastle.crypto.DataLengthException
dup
ldc "output buffer too short"
invokespecial org.bouncycastle.crypto.DataLengthException.<init>:(Ljava/lang/String;)V
athrow
8: StackMap locals:
StackMap stack:
iconst_0
istore 6
start local 6 9: goto 12
10: StackMap locals: int
StackMap stack:
aload 4
iload 5
iload 6
iadd
aload 1
iload 2
iload 6
iadd
baload
aload 0
invokevirtual org.bouncycastle.crypto.engines.Grain128Engine.getKeyStream:()B
ixor
i2b
bastore
11: iinc 6 1
StackMap locals:
StackMap stack:
12: iload 6
iload 3
if_icmplt 10
end local 6 13: return
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 14 0 this Lorg/bouncycastle/crypto/engines/Grain128Engine;
0 14 1 in [B
0 14 2 inOff I
0 14 3 len I
0 14 4 out [B
0 14 5 outOff I
9 13 6 i I
Exceptions:
throws org.bouncycastle.crypto.DataLengthException
MethodParameters:
Name Flags
in
inOff
len
out
outOff
public void reset();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
iconst_4
putfield org.bouncycastle.crypto.engines.Grain128Engine.index:I
1: aload 0
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.workingKey:[B
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.workingIV:[B
invokevirtual org.bouncycastle.crypto.engines.Grain128Engine.setKey:([B[B)V
2: aload 0
invokevirtual org.bouncycastle.crypto.engines.Grain128Engine.initGrain:()V
3: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/bouncycastle/crypto/engines/Grain128Engine;
private void oneRound();
descriptor: ()V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=1, args_size=1
start local 0 0: aload 0
aload 0
invokevirtual org.bouncycastle.crypto.engines.Grain128Engine.getOutput:()I
putfield org.bouncycastle.crypto.engines.Grain128Engine.output:I
1: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.out:[B
iconst_0
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.output:I
i2b
bastore
2: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.out:[B
iconst_1
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.output:I
bipush 8
ishr
i2b
bastore
3: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.out:[B
iconst_2
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.output:I
bipush 16
ishr
i2b
bastore
4: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.out:[B
iconst_3
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.output:I
bipush 24
ishr
i2b
bastore
5: aload 0
aload 0
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
aload 0
invokevirtual org.bouncycastle.crypto.engines.Grain128Engine.getOutputNFSR:()I
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
iconst_0
iaload
ixor
invokevirtual org.bouncycastle.crypto.engines.Grain128Engine.shift:([II)[I
putfield org.bouncycastle.crypto.engines.Grain128Engine.nfsr:[I
6: aload 0
aload 0
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
aload 0
invokevirtual org.bouncycastle.crypto.engines.Grain128Engine.getOutputLFSR:()I
invokevirtual org.bouncycastle.crypto.engines.Grain128Engine.shift:([II)[I
putfield org.bouncycastle.crypto.engines.Grain128Engine.lfsr:[I
7: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lorg/bouncycastle/crypto/engines/Grain128Engine;
public byte returnByte(byte);
descriptor: (B)B
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=2, args_size=2
start local 0 start local 1 0: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.initialised:Z
ifne 4
1: new java.lang.IllegalStateException
dup
new java.lang.StringBuilder
dup
aload 0
invokevirtual org.bouncycastle.crypto.engines.Grain128Engine.getAlgorithmName:()Ljava/lang/String;
invokestatic java.lang.String.valueOf:(Ljava/lang/Object;)Ljava/lang/String;
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
2: ldc " not initialised"
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
3: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
4: StackMap locals:
StackMap stack:
iload 1
aload 0
invokevirtual org.bouncycastle.crypto.engines.Grain128Engine.getKeyStream:()B
ixor
i2b
ireturn
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lorg/bouncycastle/crypto/engines/Grain128Engine;
0 5 1 in B
MethodParameters:
Name Flags
in
private byte getKeyStream();
descriptor: ()B
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=1, args_size=1
start local 0 0: aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.index:I
iconst_3
if_icmple 3
1: aload 0
invokevirtual org.bouncycastle.crypto.engines.Grain128Engine.oneRound:()V
2: aload 0
iconst_0
putfield org.bouncycastle.crypto.engines.Grain128Engine.index:I
3: StackMap locals:
StackMap stack:
aload 0
getfield org.bouncycastle.crypto.engines.Grain128Engine.out:[B
aload 0
dup
getfield org.bouncycastle.crypto.engines.Grain128Engine.index:I
dup_x1
iconst_1
iadd
putfield org.bouncycastle.crypto.engines.Grain128Engine.index:I
baload
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lorg/bouncycastle/crypto/engines/Grain128Engine;
}
SourceFile: "Grain128Engine.java"