public class Poly1305 extends java.lang.Object implements Mac
Poly1305 computes a 128-bit (16 bytes) authenticator, using a 128 bit nonce and a 256 bit key consisting of a 128 bit key applied to an underlying cipher, and a 128 bit key (with 106 effective key bits) used in the authenticator.
The polynomial calculation in this implementation is adapted from the public domain poly1305-donna-unrolled C implementation by Andrew M (@floodyberry).
Poly1305KeyGenerator
Constructor and Description |
---|
Poly1305()
Constructs a Poly1305 MAC, where the key passed to init() will be used directly.
|
Poly1305(BlockCipher cipher)
Constructs a Poly1305 MAC, using a 128 bit block cipher.
|
Modifier and Type | Method and 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 Poly1305 MAC.
|
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) |
public Poly1305()
public Poly1305(BlockCipher cipher)
public void init(CipherParameters params) throws java.lang.IllegalArgumentException
init
in interface Mac
params
- if used with a block cipher, then a ParametersWithIV
containing a 128 bit
nonce and a KeyParameter
with a 256 bit key complying to the
Poly1305 key format
, otherwise just the
KeyParameter
.java.lang.IllegalArgumentException
- if the params argument is
inappropriate.public java.lang.String getAlgorithmName()
Mac
getAlgorithmName
in interface Mac
public int getMacSize()
Mac
getMacSize
in interface Mac
public void update(byte in) throws java.lang.IllegalStateException
Mac
public void update(byte[] in, int inOff, int len) throws DataLengthException, java.lang.IllegalStateException
update
in interface Mac
in
- the array containing the input.inOff
- the index in the array the data begins at.len
- the length of the input starting at inOff.DataLengthException
- if there isn't enough data in in.java.lang.IllegalStateException
- if the MAC is not initialised.public int doFinal(byte[] out, int outOff) throws DataLengthException, java.lang.IllegalStateException
Mac
doFinal leaves the MAC in the same state it was after the last init.
doFinal
in interface Mac
out
- the array the MAC is to be output to.outOff
- the offset into the out buffer the output is to start at.DataLengthException
- if there isn't enough space in out.java.lang.IllegalStateException
- if the MAC is not initialised.