Package org.bouncycastle.crypto.macs
Class SkeinMac
java.lang.Object
org.bouncycastle.crypto.macs.SkeinMac
- All Implemented Interfaces:
Mac
Implementation of the Skein parameterised MAC function in 256, 512 and 1024 bit block sizes,
based on the
Threefish tweakable 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:
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int1024 bit block size - Skein MAC-1024static final int256 bit block size - Skein MAC-256static final int512 bit block size - Skein MAC-512 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionintdoFinal(byte[] out, int outOff) Compute the final stage of the MAC writing the output to the out parameter.Return the name of the algorithm the MAC implements.intReturn 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 Details
-
SKEIN_256
public static final int SKEIN_256256 bit block size - Skein MAC-256- See Also:
-
SKEIN_512
public static final int SKEIN_512512 bit block size - Skein MAC-512- See Also:
-
SKEIN_1024
public static final int SKEIN_10241024 bit block size - Skein MAC-1024- See Also:
-
-
Constructor Details
-
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
-
-
Method Details
-
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
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:
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.
-