org.bouncycastle.crypto.macs
Class GOST28147Mac

java.lang.Object
  extended by org.bouncycastle.crypto.macs.GOST28147Mac
All Implemented Interfaces:
Mac

public class GOST28147Mac
extends java.lang.Object
implements Mac

implementation of GOST 28147-89 MAC


Field Summary
private  int blockSize
           
private  byte[] buf
           
private  int bufOff
           
private  boolean firstStep
           
private  byte[] mac
           
private  int macSize
           
private  byte[] S
           
private  int[] workingKey
           
 
Constructor Summary
GOST28147Mac()
           
 
Method Summary
private  int bytesToint(byte[] in, int inOff)
           
private  byte[] CM5func(byte[] buf, int bufOff, byte[] mac)
           
 int doFinal(byte[] out, int outOff)
          Compute the final statge of the MAC writing the output to the out parameter.
private  int[] generateWorkingKey(byte[] userKey)
           
 java.lang.String getAlgorithmName()
          Return the name of the algorithm the MAC implements.
 int getMacSize()
          Return the block size for this MAC (in bytes).
private  int gost28147_mainStep(int n1, int key)
           
private  void gost28147MacFunc(int[] workingKey, byte[] in, int inOff, byte[] out, int outOff)
           
 void init(CipherParameters params)
          Initialise the MAC.
private  void intTobytes(int num, byte[] out, int outOff)
           
 void reset()
          Reset the MAC.
 void update(byte in)
          add a single byte to the mac for processing.
 void update(byte[] in, int inOff, int len)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

blockSize

private int blockSize

macSize

private int macSize

bufOff

private int bufOff

buf

private byte[] buf

mac

private byte[] mac

firstStep

private boolean firstStep

workingKey

private int[] workingKey

S

private byte[] S
Constructor Detail

GOST28147Mac

public GOST28147Mac()
Method Detail

generateWorkingKey

private int[] generateWorkingKey(byte[] userKey)

init

public void init(CipherParameters params)
          throws java.lang.IllegalArgumentException
Description copied from interface: Mac
Initialise the MAC.

Specified by:
init in interface Mac
Parameters:
params - the key and other data required by the MAC.
Throws:
java.lang.IllegalArgumentException - if the params argument is inappropriate.

getAlgorithmName

public java.lang.String getAlgorithmName()
Description copied from interface: Mac
Return the name of the algorithm the MAC implements.

Specified by:
getAlgorithmName in interface Mac
Returns:
the name of the algorithm the MAC implements.

getMacSize

public int getMacSize()
Description copied from interface: Mac
Return the block size for this MAC (in bytes).

Specified by:
getMacSize in interface Mac
Returns:
the block size for this MAC in bytes.

gost28147_mainStep

private int gost28147_mainStep(int n1,
                               int key)

gost28147MacFunc

private void gost28147MacFunc(int[] workingKey,
                              byte[] in,
                              int inOff,
                              byte[] out,
                              int outOff)

bytesToint

private int bytesToint(byte[] in,
                       int inOff)

intTobytes

private void intTobytes(int num,
                        byte[] out,
                        int outOff)

CM5func

private byte[] CM5func(byte[] buf,
                       int bufOff,
                       byte[] mac)

update

public void update(byte in)
            throws java.lang.IllegalStateException
Description copied from interface: Mac
add a single byte to the mac for processing.

Specified by:
update in interface Mac
Parameters:
in - the byte to be processed.
Throws:
java.lang.IllegalStateException - if the MAC is not initialised.

update

public void update(byte[] in,
                   int inOff,
                   int len)
            throws DataLengthException,
                   java.lang.IllegalStateException
Specified by:
update in interface Mac
Parameters:
in - the array containing the input.
inOff - the index in the array the data begins at.
len - the length of the input starting at inOff.
Throws:
DataLengthException - if there isn't enough data in in.
java.lang.IllegalStateException - if the MAC is not initialised.

doFinal

public int doFinal(byte[] out,
                   int outOff)
            throws DataLengthException,
                   java.lang.IllegalStateException
Description copied from interface: Mac
Compute the final statge of the MAC writing the output to the out parameter.

doFinal leaves the MAC in the same state it was after the last init.

Specified by:
doFinal in interface Mac
Parameters:
out - the array the MAC is to be output to.
outOff - the offset into the out buffer the output is to start at.
Throws:
DataLengthException - if there isn't enough space in out.
java.lang.IllegalStateException - if the MAC is not initialised.

reset

public void reset()
Description copied from interface: Mac
Reset the MAC. At the end of resetting the MAC should be in the in the same state it was after the last init (if there was one).

Specified by:
reset in interface Mac