Package org.bouncycastle.crypto.macs
Class SkeinMac
- java.lang.Object
-
- org.bouncycastle.crypto.macs.SkeinMac
-
- All Implemented Interfaces:
Mac
public class SkeinMac extends java.lang.Object implements Mac
Implementation of the Skein parameterised MAC function in 256, 512 and 1024 bit block sizes, based on theThreefishtweakable block cipher.This is the 1.3 version of Skein defined in the Skein hash function submission to the NIST SHA-3 competition in October 2010.
Skein was designed by Niels Ferguson - Stefan Lucks - Bruce Schneier - Doug Whiting - Mihir Bellare - Tadayoshi Kohno - Jon Callas - Jesse Walker.
- See Also:
SkeinEngine,SkeinParameters
-
-
Field Summary
Fields Modifier and Type Field Description static intSKEIN_10241024 bit block size - Skein MAC-1024static intSKEIN_256256 bit block size - Skein MAC-256static intSKEIN_512512 bit block size - Skein MAC-512
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description intdoFinal(byte[] out, int outOff)Compute the final stage of the MAC writing the output to the out parameter.java.lang.StringgetAlgorithmName()Return the name of the algorithm the MAC implements.intgetMacSize()Return the block size for this MAC (in bytes).voidinit(CipherParameters params)Initialises the Skein digest with the provided parameters.
SeeSkeinParametersfor details on the parameterisation of the Skein hash function.voidreset()Reset the MAC.voidupdate(byte in)add a single byte to the mac for processing.voidupdate(byte[] in, int inOff, int len)
-
-
-
Field Detail
-
SKEIN_256
public static final int SKEIN_256
256 bit block size - Skein MAC-256- See Also:
- Constant Field Values
-
SKEIN_512
public static final int SKEIN_512
512 bit block size - Skein MAC-512- See Also:
- Constant Field Values
-
SKEIN_1024
public static final int SKEIN_1024
1024 bit block size - Skein MAC-1024- See Also:
- Constant Field Values
-
-
Constructor Detail
-
SkeinMac
public SkeinMac(int stateSizeBits, int digestSizeBits)Constructs a Skein MAC with an internal state size and output size.- Parameters:
stateSizeBits- the internal state size in bits - one ofSKEIN_256,SKEIN_512orSKEIN_1024.digestSizeBits- the output/MAC size to produce in bits, which must be an integral number of bytes.
-
SkeinMac
public SkeinMac(SkeinMac mac)
-
-
Method Detail
-
getAlgorithmName
public java.lang.String getAlgorithmName()
Description copied from interface:MacReturn the name of the algorithm the MAC implements.- Specified by:
getAlgorithmNamein interfaceMac- Returns:
- the name of the algorithm the MAC implements.
-
init
public void init(CipherParameters params) throws java.lang.IllegalArgumentException
Initialises the Skein digest with the provided parameters.
SeeSkeinParametersfor details on the parameterisation of the Skein hash function.- Specified by:
initin interfaceMac- Parameters:
params- an instance ofSkeinParametersorKeyParameter.- Throws:
java.lang.IllegalArgumentException- if the params argument is inappropriate.
-
getMacSize
public int getMacSize()
Description copied from interface:MacReturn the block size for this MAC (in bytes).- Specified by:
getMacSizein interfaceMac- Returns:
- the block size for this MAC in bytes.
-
reset
public void reset()
Description copied from interface:MacReset 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).
-
update
public void update(byte in)
Description copied from interface:Macadd a single byte to the mac for processing.
-
update
public void update(byte[] in, int inOff, int len)
-
doFinal
public int doFinal(byte[] out, int outOff)Description copied from interface:MacCompute the final stage of the MAC writing the output to the out parameter.doFinal leaves the MAC in the same state it was after the last init.
-
-