Package org.bouncycastle.crypto.engines
Class SerpentEngineBase
- java.lang.Object
 - 
- org.bouncycastle.crypto.engines.SerpentEngineBase
 
 
- 
- All Implemented Interfaces:
 BlockCipher
- Direct Known Subclasses:
 SerpentEngine,TnepresEngine
public abstract class SerpentEngineBase extends java.lang.Object implements BlockCipher
 
- 
- 
Field Summary
Fields Modifier and Type Field Description protected static intBLOCK_SIZEprotected booleanencryptingprotected int[]wKeyprotected intX0protected intX1protected intX2protected intX3 
- 
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract voiddecryptBlock(byte[] input, int inOff, byte[] output, int outOff)protected abstract voidencryptBlock(byte[] input, int inOff, byte[] output, int outOff)java.lang.StringgetAlgorithmName()Return the name of the algorithm the cipher implements.intgetBlockSize()Return the block size for this cipher (in bytes).protected voidib0(int a, int b, int c, int d)InvSO - {13, 3,11, 0,10, 6, 5,12, 1,14, 4, 7,15, 9, 8, 2 } - 15 terms.protected voidib1(int a, int b, int c, int d)InvS1 - { 5, 8, 2,14,15, 6,12, 3,11, 4, 7, 9, 1,13,10, 0 } - 14 steps.protected voidib2(int a, int b, int c, int d)InvS2 - {12, 9,15, 4,11,14, 1, 2, 0, 3, 6,13, 5, 8,10, 7 } - 16 steps.protected voidib3(int a, int b, int c, int d)InvS3 - { 0, 9,10, 7,11,14, 6,13, 3, 5,12, 2, 4, 8,15, 1 } - 15 termsprotected voidib4(int a, int b, int c, int d)InvS4 - { 5, 0, 8, 3,10, 9, 7,14, 2,12,11, 6, 4,15,13, 1 } - 15 terms.protected voidib5(int a, int b, int c, int d)InvS5 - { 8,15, 2, 9, 4, 1,13,14,11, 6, 5, 3, 7,12,10, 0 } - 16 terms.protected voidib6(int a, int b, int c, int d)InvS6 - {15,10, 1,13, 5, 3, 6, 0, 4, 9,14, 7, 2,12, 8,11 } - 15 terms.protected voidib7(int a, int b, int c, int d)InvS7 - { 3, 0, 6,13, 9,14,15, 8, 5,12,11, 7,10, 1, 4, 2 } - 17 terms.voidinit(boolean encrypting, CipherParameters params)initialise a Serpent cipher.protected voidinverseLT()Apply the inverse of the linear transformation to the register set.protected voidLT()Apply the linear transformation to the register set.protected abstract int[]makeWorkingKey(byte[] key)intprocessBlock(byte[] in, int inOff, byte[] out, int outOff)Process one block of input from the array in and write it to the out array.voidreset()Reset the cipher.protected static introtateLeft(int x, int bits)protected static introtateRight(int x, int bits)protected voidsb0(int a, int b, int c, int d)S0 - { 3, 8,15, 1,10, 6, 5,11,14,13, 4, 2, 7, 0, 9,12 } - 15 terms.protected voidsb1(int a, int b, int c, int d)S1 - {15,12, 2, 7, 9, 0, 5,10, 1,11,14, 8, 6,13, 3, 4 } - 14 terms.protected voidsb2(int a, int b, int c, int d)S2 - { 8, 6, 7, 9, 3,12,10,15,13, 1,14, 4, 0,11, 5, 2 } - 16 terms.protected voidsb3(int a, int b, int c, int d)S3 - { 0,15,11, 8,12, 9, 6, 3,13, 1, 2, 4,10, 7, 5,14 } - 16 terms.protected voidsb4(int a, int b, int c, int d)S4 - { 1,15, 8, 3,12, 0,11, 6, 2, 5, 4,10, 9,14, 7,13 } - 15 terms.protected voidsb5(int a, int b, int c, int d)S5 - {15, 5, 2,11, 4,10, 9,12, 0, 3,14, 8,13, 6, 7, 1 } - 16 terms.protected voidsb6(int a, int b, int c, int d)S6 - { 7, 2,12, 5, 8, 4, 6,11,14, 9, 1,15,13, 3,10, 0 } - 15 terms.protected voidsb7(int a, int b, int c, int d)S7 - { 1,13,15, 0,14, 8, 2,11, 7, 4,12,10, 9, 3, 5, 6 } - 16 terms. 
 - 
 
- 
- 
Field Detail
- 
BLOCK_SIZE
protected static final int BLOCK_SIZE
- See Also:
 - Constant Field Values
 
 
- 
encrypting
protected boolean encrypting
 
- 
wKey
protected int[] wKey
 
- 
X0
protected int X0
 
- 
X1
protected int X1
 
- 
X2
protected int X2
 
- 
X3
protected int X3
 
 - 
 
- 
Method Detail
- 
init
public void init(boolean encrypting, CipherParameters params)initialise a Serpent cipher.- Specified by:
 initin interfaceBlockCipher- Parameters:
 encrypting- whether or not we are for encryption.params- the parameters required to set up the cipher.- Throws:
 java.lang.IllegalArgumentException- if the params argument is inappropriate.
 
- 
getAlgorithmName
public java.lang.String getAlgorithmName()
Description copied from interface:BlockCipherReturn the name of the algorithm the cipher implements.- Specified by:
 getAlgorithmNamein interfaceBlockCipher- Returns:
 - the name of the algorithm the cipher implements.
 
 
- 
getBlockSize
public int getBlockSize()
Description copied from interface:BlockCipherReturn the block size for this cipher (in bytes).- Specified by:
 getBlockSizein interfaceBlockCipher- Returns:
 - the block size for this cipher in bytes.
 
 
- 
processBlock
public final int processBlock(byte[] in, int inOff, byte[] out, int outOff)Process one block of input from the array in and write it to the out array.- Specified by:
 processBlockin interfaceBlockCipher- Parameters:
 in- the array containing the input data.inOff- offset into the in array the data starts at.out- the array the output data will be copied into.outOff- the offset into the out array the output will start at.- Returns:
 - the number of bytes processed and produced.
 - Throws:
 DataLengthException- if there isn't enough data in in, or space in out.java.lang.IllegalStateException- if the cipher isn't initialised.
 
- 
reset
public void reset()
Description copied from interface:BlockCipherReset the cipher. After resetting the cipher is in the same state as it was after the last init (if there was one).- Specified by:
 resetin interfaceBlockCipher
 
- 
rotateLeft
protected static int rotateLeft(int x, int bits) 
- 
rotateRight
protected static int rotateRight(int x, int bits) 
- 
sb0
protected final void sb0(int a, int b, int c, int d)S0 - { 3, 8,15, 1,10, 6, 5,11,14,13, 4, 2, 7, 0, 9,12 } - 15 terms. 
- 
ib0
protected final void ib0(int a, int b, int c, int d)InvSO - {13, 3,11, 0,10, 6, 5,12, 1,14, 4, 7,15, 9, 8, 2 } - 15 terms. 
- 
sb1
protected final void sb1(int a, int b, int c, int d)S1 - {15,12, 2, 7, 9, 0, 5,10, 1,11,14, 8, 6,13, 3, 4 } - 14 terms. 
- 
ib1
protected final void ib1(int a, int b, int c, int d)InvS1 - { 5, 8, 2,14,15, 6,12, 3,11, 4, 7, 9, 1,13,10, 0 } - 14 steps. 
- 
sb2
protected final void sb2(int a, int b, int c, int d)S2 - { 8, 6, 7, 9, 3,12,10,15,13, 1,14, 4, 0,11, 5, 2 } - 16 terms. 
- 
ib2
protected final void ib2(int a, int b, int c, int d)InvS2 - {12, 9,15, 4,11,14, 1, 2, 0, 3, 6,13, 5, 8,10, 7 } - 16 steps. 
- 
sb3
protected final void sb3(int a, int b, int c, int d)S3 - { 0,15,11, 8,12, 9, 6, 3,13, 1, 2, 4,10, 7, 5,14 } - 16 terms. 
- 
ib3
protected final void ib3(int a, int b, int c, int d)InvS3 - { 0, 9,10, 7,11,14, 6,13, 3, 5,12, 2, 4, 8,15, 1 } - 15 terms 
- 
sb4
protected final void sb4(int a, int b, int c, int d)S4 - { 1,15, 8, 3,12, 0,11, 6, 2, 5, 4,10, 9,14, 7,13 } - 15 terms. 
- 
ib4
protected final void ib4(int a, int b, int c, int d)InvS4 - { 5, 0, 8, 3,10, 9, 7,14, 2,12,11, 6, 4,15,13, 1 } - 15 terms. 
- 
sb5
protected final void sb5(int a, int b, int c, int d)S5 - {15, 5, 2,11, 4,10, 9,12, 0, 3,14, 8,13, 6, 7, 1 } - 16 terms. 
- 
ib5
protected final void ib5(int a, int b, int c, int d)InvS5 - { 8,15, 2, 9, 4, 1,13,14,11, 6, 5, 3, 7,12,10, 0 } - 16 terms. 
- 
sb6
protected final void sb6(int a, int b, int c, int d)S6 - { 7, 2,12, 5, 8, 4, 6,11,14, 9, 1,15,13, 3,10, 0 } - 15 terms. 
- 
ib6
protected final void ib6(int a, int b, int c, int d)InvS6 - {15,10, 1,13, 5, 3, 6, 0, 4, 9,14, 7, 2,12, 8,11 } - 15 terms. 
- 
sb7
protected final void sb7(int a, int b, int c, int d)S7 - { 1,13,15, 0,14, 8, 2,11, 7, 4,12,10, 9, 3, 5, 6 } - 16 terms. 
- 
ib7
protected final void ib7(int a, int b, int c, int d)InvS7 - { 3, 0, 6,13, 9,14,15, 8, 5,12,11, 7,10, 1, 4, 2 } - 17 terms. 
- 
LT
protected final void LT()
Apply the linear transformation to the register set. 
- 
inverseLT
protected final void inverseLT()
Apply the inverse of the linear transformation to the register set. 
- 
makeWorkingKey
protected abstract int[] makeWorkingKey(byte[] key)
 
- 
encryptBlock
protected abstract void encryptBlock(byte[] input, int inOff, byte[] output, int outOff) 
- 
decryptBlock
protected abstract void decryptBlock(byte[] input, int inOff, byte[] output, int outOff) 
 - 
 
 -