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 theThreefish
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:
SkeinEngine
,SkeinParameters
-
-
Field Summary
Fields Modifier and Type Field Description static int
SKEIN_1024
1024 bit block size - Skein MAC-1024static int
SKEIN_256
256 bit block size - Skein MAC-256static int
SKEIN_512
512 bit block size - Skein MAC-512
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
doFinal(byte[] out, int outOff)
Compute the final stage of the MAC writing the output to the out parameter.java.lang.String
getAlgorithmName()
Return the name of the algorithm the MAC implements.int
getMacSize()
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 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_512
orSKEIN_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: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
public void init(CipherParameters params) throws java.lang.IllegalArgumentException
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:
java.lang.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.
-
-