public class BcChaCha20Poly1305 extends java.lang.Object implements TlsAEADCipherImpl
| Modifier and Type | Field and Description |
|---|---|
protected int |
additionalDataLength |
protected org.bouncycastle.crypto.engines.ChaCha7539Engine |
cipher |
protected boolean |
isEncrypting |
protected org.bouncycastle.crypto.macs.Poly1305 |
mac |
| Constructor and Description |
|---|
BcChaCha20Poly1305(boolean isEncrypting) |
| Modifier and Type | Method and Description |
|---|---|
int |
doFinal(byte[] input,
int inputOffset,
int inputLength,
byte[] extraInput,
byte[] output,
int outputOffset)
Perform the cipher encryption/decryption returning the output in output.
|
int |
getOutputSize(int inputLength)
Return the maximum size of the output for input of inputLength bytes.
|
void |
init(byte[] nonce,
int macSize,
byte[] additionalData)
Initialise the parameters for the AEAD operator.
|
protected void |
initMAC() |
void |
setKey(byte[] key,
int keyOff,
int keyLen)
Set the key to be used by the AEAD cipher implementation supporting this service.
|
protected void |
updateMAC(byte[] buf,
int off,
int len) |
protected final org.bouncycastle.crypto.engines.ChaCha7539Engine cipher
protected final org.bouncycastle.crypto.macs.Poly1305 mac
protected final boolean isEncrypting
protected int additionalDataLength
public int doFinal(byte[] input,
int inputOffset,
int inputLength,
byte[] extraInput,
byte[] output,
int outputOffset)
throws java.io.IOException
TlsAEADCipherImplNote: we have to use doFinal() here as it is the only way to guarantee output from the underlying cipher.
doFinal in interface TlsAEADCipherImplinput - array holding input data to the cipher.inputOffset - offset into input array data starts at.inputLength - length of the input data in the array.extraInput - extra input data to the cipher. Only allowed when encrypting.output - array to hold the cipher output.outputOffset - offset into output array to start saving output.java.io.IOException - in case of failure.public int getOutputSize(int inputLength)
TlsAEADCipherImplgetOutputSize in interface TlsAEADCipherImplinputLength - the length (in bytes) of the proposed input.public void init(byte[] nonce,
int macSize,
byte[] additionalData)
throws java.io.IOException
TlsAEADCipherImplinit in interface TlsAEADCipherImplnonce - the nonce.macSize - MAC size in bytes.additionalData - any additional data to be included in the MAC calculation.java.io.IOException - if the parameters are inappropriate.public void setKey(byte[] key,
int keyOff,
int keyLen)
throws java.io.IOException
TlsAEADCipherImplsetKey in interface TlsAEADCipherImplkey - array holding the AEAD cipher key.keyOff - offset into the array the key starts at.keyLen - length of the key in the array.java.io.IOExceptionprotected void initMAC()
protected void updateMAC(byte[] buf,
int off,
int len)