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 int
1024 bit block size - Skein MAC-1024static final int
256 bit block size - Skein MAC-256static final int
512 bit block size - Skein MAC-512 -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionint
doFinal
(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.int
Return the block size for this MAC (in bytes).void
init
(CipherParameters params) Initialises the Skein digest with the provided parameters.
SeeSkeinParameters
for details on the parameterisation of the Skein hash function.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)
-
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_512
orSKEIN_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:Mac
Return the name of the algorithm the MAC implements.- Specified by:
getAlgorithmName
in interfaceMac
- Returns:
- the name of the algorithm the MAC implements.
-
init
Initialises the Skein digest with the provided parameters.
SeeSkeinParameters
for details on the parameterisation of the Skein hash function.- Specified by:
init
in interfaceMac
- Parameters:
params
- an instance ofSkeinParameters
orKeyParameter
.- Throws:
IllegalArgumentException
- if the params argument is inappropriate.
-
getMacSize
public int getMacSize()Description copied from interface:Mac
Return the block size for this MAC (in bytes).- Specified by:
getMacSize
in interfaceMac
- Returns:
- the block size for this MAC in bytes.
-
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). -
update
public void update(byte in) Description copied from interface:Mac
add 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:Mac
Compute 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.
-