Package org.bouncycastle.crypto.digests
Class SkeinDigest
java.lang.Object
org.bouncycastle.crypto.digests.SkeinDigest
- All Implemented Interfaces:
Digest
,ExtendedDigest
,Memoable
Implementation of the Skein parameterised hash 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
Modifier and TypeFieldDescriptionstatic final int
1024 bit block size - Skein-1024static final int
256 bit block size - Skein-256static final int
512 bit block size - Skein-512 -
Constructor Summary
ConstructorDescriptionSkeinDigest
(int stateSizeBits, int digestSizeBits) Constructs a Skein digest with an internal state size and output size.SkeinDigest
(int stateSizeBits, int digestSizeBits, CryptoServicePurpose purpose) SkeinDigest
(SkeinDigest digest) -
Method Summary
Modifier and TypeMethodDescriptioncopy()
Produce a copy of this object with its configuration and in its current state.int
doFinal
(byte[] out, int outOff) close the digest, producing the final digest value.return the algorithm nameint
Return the size in bytes of the internal buffer the digest applies it's compression function to.int
return the size, in bytes, of the digest produced by this message digest.void
init
(SkeinParameters params) Optionally initialises the Skein digest with the provided parameters.
SeeSkeinParameters
for details on the parameterisation of the Skein hash function.void
reset()
reset the digest back to it's initial state.void
Restore a copied object state into this object.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.
-
Field Details
-
SKEIN_256
public static final int SKEIN_256256 bit block size - Skein-256- See Also:
-
SKEIN_512
public static final int SKEIN_512512 bit block size - Skein-512- See Also:
-
SKEIN_1024
public static final int SKEIN_10241024 bit block size - Skein-1024- See Also:
-
-
Constructor Details
-
SkeinDigest
public SkeinDigest(int stateSizeBits, int digestSizeBits) Constructs a Skein digest 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/digest size to produce in bits, which must be an integral number of bytes.
-
SkeinDigest
-
SkeinDigest
-
-
Method Details
-
reset
Description copied from interface:Memoable
Restore a copied object state into this object.Implementations of this method should try to avoid or minimise memory allocation to perform the reset.
-
copy
Description copied from interface:Memoable
Produce a copy of this object with its configuration and in its current state.The returned object may be used simply to store the state, or may be used as a similar object starting from the copied state.
-
getAlgorithmName
Description copied from interface:Digest
return the algorithm name- Specified by:
getAlgorithmName
in interfaceDigest
- 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 interfaceDigest
- Returns:
- the size, in bytes, of the digest produced by this message digest.
-
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 interfaceExtendedDigest
- Returns:
- byte length of the digests internal buffer.
-
init
Optionally initialises the Skein digest with the provided parameters.
SeeSkeinParameters
for details on the parameterisation of the Skein hash function.- Parameters:
params
- the parameters to apply to this engine, ornull
to use no parameters.
-
reset
public void reset()Description copied from interface:Digest
reset the digest back to it's initial state. -
update
public void update(byte in) Description copied from interface:Digest
update the message digest with a single byte. -
update
public void update(byte[] in, int inOff, int len) Description copied from interface:Digest
update the message digest with a block of bytes. -
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.
-