org.bouncycastle.crypto.digests
Class GOST3411Digest

java.lang.Object
  extended by org.bouncycastle.crypto.digests.GOST3411Digest
All Implemented Interfaces:
Digest, ExtendedDigest

public class GOST3411Digest
extends java.lang.Object
implements ExtendedDigest

implementation of GOST R 34.11-94


Field Summary
(package private)  byte[] a
           
private  long byteCount
           
private  byte[][] C
           
private static byte[] C2
          reset the chaining variables to the IV values.
private  BlockCipher cipher
           
private static int DIGEST_LENGTH
           
private  byte[] H
           
private  byte[] K
           
private  byte[] L
           
private  byte[] M
           
(package private)  byte[] S
           
private  byte[] Sum
           
(package private)  byte[] U
           
(package private)  byte[] V
           
(package private)  byte[] W
           
(package private)  short[] w_S
           
(package private)  short[] wS
           
private  byte[] xBuf
           
private  int xBufOff
           
 
Constructor Summary
GOST3411Digest()
          Standard constructor
GOST3411Digest(GOST3411Digest t)
          Copy constructor.
 
Method Summary
private  byte[] A(byte[] in)
           
private  void cpyBytesToShort(byte[] S, short[] wS)
           
private  void cpyShortToBytes(short[] wS, byte[] S)
           
 int doFinal(byte[] out, int outOff)
          close the digest, producing the final digest value.
private  void E(byte[] key, byte[] s, int sOff, byte[] in, int inOff)
           
private  void finish()
           
private  void fw(byte[] in)
           
 java.lang.String getAlgorithmName()
          return the algorithm name
 int getByteLength()
          Return the size in bytes of the internal buffer the digest applies it's compression function to.
 int getDigestSize()
          return the size, in bytes, of the digest produced by this message digest.
private  void LongToBytes(long r, byte[] out, int outOff)
           
private  byte[] P(byte[] in)
           
protected  void processBlock(byte[] in, int inOff)
           
 void reset()
          reset the digest back to it's initial state.
private  void sumByteArray(byte[] in)
           
 void update(byte in)
          update the message digest with a single byte.
 void update(byte[] in, int inOff, int len)
          update the message digest with a block of bytes.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DIGEST_LENGTH

private static final int DIGEST_LENGTH
See Also:
Constant Field Values

H

private byte[] H

L

private byte[] L

M

private byte[] M

Sum

private byte[] Sum

C

private byte[][] C

xBuf

private byte[] xBuf

xBufOff

private int xBufOff

byteCount

private long byteCount

cipher

private BlockCipher cipher

K

private byte[] K

a

byte[] a

wS

short[] wS

w_S

short[] w_S

S

byte[] S

U

byte[] U

V

byte[] V

W

byte[] W

C2

private static final byte[] C2
reset the chaining variables to the IV values.

Constructor Detail

GOST3411Digest

public GOST3411Digest()
Standard constructor


GOST3411Digest

public GOST3411Digest(GOST3411Digest t)
Copy constructor. This will copy the state of the provided message digest.

Method Detail

getAlgorithmName

public java.lang.String getAlgorithmName()
Description copied from interface: Digest
return the algorithm name

Specified by:
getAlgorithmName in interface Digest
Returns:
the algorithm name

getDigestSize

public int getDigestSize()
Description copied from interface: Digest
return the size, in bytes, of the digest produced by this message digest.

Specified by:
getDigestSize in interface Digest
Returns:
the size, in bytes, of the digest produced by this message digest.

update

public void update(byte in)
Description copied from interface: Digest
update the message digest with a single byte.

Specified by:
update in interface Digest
Parameters:
in - the input byte to be entered.

update

public void update(byte[] in,
                   int inOff,
                   int len)
Description copied from interface: Digest
update the message digest with a block of bytes.

Specified by:
update in interface Digest
Parameters:
in - the byte array containing the data.
inOff - the offset into the byte array where the data starts.
len - the length of the data.

P

private byte[] P(byte[] in)

A

private byte[] A(byte[] in)

E

private void E(byte[] key,
               byte[] s,
               int sOff,
               byte[] in,
               int inOff)

fw

private void fw(byte[] in)

processBlock

protected void processBlock(byte[] in,
                            int inOff)

finish

private void finish()

doFinal

public int doFinal(byte[] out,
                   int outOff)
Description copied from interface: Digest
close the digest, producing the final digest value. The doFinal call leaves the digest reset.

Specified by:
doFinal in interface Digest
Parameters:
out - the array the digest is to be copied into.
outOff - the offset into the out array the digest is to start at.

reset

public void reset()
Description copied from interface: Digest
reset the digest back to it's initial state.

Specified by:
reset in interface Digest

sumByteArray

private void sumByteArray(byte[] in)

LongToBytes

private void LongToBytes(long r,
                         byte[] out,
                         int outOff)

cpyBytesToShort

private void cpyBytesToShort(byte[] S,
                             short[] wS)

cpyShortToBytes

private void cpyShortToBytes(short[] wS,
                             byte[] S)

getByteLength

public int getByteLength()
Description copied from interface: ExtendedDigest
Return the size in bytes of the internal buffer the digest applies it's compression function to.

Specified by:
getByteLength in interface ExtendedDigest
Returns:
byte length of the digests internal buffer.