Top Fields Constructors Methods
org.bouncycastle.tls.crypto.impl.jcajce

public Class JceChaCha20Poly1305

extends Object
implements TlsAEADCipherImpl
Class Inheritance
All Implemented Interfaces
org.bouncycastle.tls.crypto.impl.TlsAEADCipherImpl
Imports
java.io.IOException, java.security.GeneralSecurityException, .InvalidKeyException, .SecureRandom, javax.crypto.Cipher, .Mac, .SecretKey, javax.crypto.spec.IvParameterSpec, .SecretKeySpec, org.bouncycastle.jcajce.util.JcaJceHelper, org.bouncycastle.tls.AlertDescription, .TlsFatalAlert, .TlsUtils, org.bouncycastle.tls.crypto.impl.TlsAEADCipherImpl, org.bouncycastle.util.Arrays, .Pack

Field Summary

Modifier and TypeField and Description
protected final Cipher
protected SecretKey
protected final int
protected final JcaTlsCrypto
protected final Mac
private static final byte[]

Constructor Summary

AccessConstructor and Description
public
JceChaCha20Poly1305(JcaTlsCrypto crypto, JcaJceHelper helper, boolean isEncrypting)

Method Summary

Modifier and TypeMethod and Description
public int
doFinal(byte[]
any additional data to be included in the MAC calculation.
additionalData
,
byte[]
array holding input data to the cipher.
input
,
int
offset into input array data starts at.
inputOffset
,
int
length of the input data in the array.
inputLength
,
byte[]
array to hold the cipher output.
output
,
int
offset into output array to start saving output.
outputOffset
)

Implements org.bouncycastle.tls.crypto.impl.TlsAEADCipherImpl.doFinal.

Perform the cipher encryption/decryption returning the output in output.

public int
getOutputSize(int
the length (in bytes) of the proposed input.
inputLength
)

Implements org.bouncycastle.tls.crypto.impl.TlsAEADCipherImpl.getOutputSize.

Return the maximum size of the output for input of inputLength bytes.

public void
init(byte[]
the nonce.
nonce
,
int
MAC size in bytes.
macSize
)

Implements org.bouncycastle.tls.crypto.impl.TlsAEADCipherImpl.init.

Initialise the parameters for the AEAD operator.

protected void
initMAC(byte[] firstBlock)

protected void
runCipher(byte[] buf)

public void
setKey(byte[]
array holding the AEAD cipher key.
key
,
int
offset into the array the key starts at.
keyOff
,
int
length of the key in the array.
keyLen
)

Implements org.bouncycastle.tls.crypto.impl.TlsAEADCipherImpl.setKey.

Set the key to be used by the AEAD cipher implementation supporting this service.

protected void
updateMAC(byte[] buf, int off, int len)

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

cipherback to summary
protected final Cipher cipher
cipherKeyback to summary
protected SecretKey cipherKey
cipherModeback to summary
protected final int cipherMode
cryptoback to summary
protected final JcaTlsCrypto crypto
macback to summary
protected final Mac mac
ZEROESback to summary
private static final byte[] ZEROES

Constructor Detail

JceChaCha20Poly1305back to summary
public JceChaCha20Poly1305(JcaTlsCrypto crypto, JcaJceHelper helper, boolean isEncrypting) throws GeneralSecurityException

Method Detail

doFinalback to summary
public int doFinal(byte[] additionalData, byte[] input, int inputOffset, int inputLength, byte[] output, int outputOffset) throws IOException

Implements org.bouncycastle.tls.crypto.impl.TlsAEADCipherImpl.doFinal.

Doc from org.bouncycastle.tls.crypto.impl.TlsAEADCipherImpl.doFinal.

Perform the cipher encryption/decryption returning the output in output.

Note

we have to use doFinal() here as it is the only way to guarantee output from the underlying cipher.

Parameters
additionalData:byte[]

any additional data to be included in the MAC calculation.

input:byte[]

array holding input data to the cipher.

inputOffset:int

offset into input array data starts at.

inputLength:int

length of the input data in the array.

output:byte[]

array to hold the cipher output.

outputOffset:int

offset into output array to start saving output.

Returns:int

the amount of data written to output.

Exceptions
IOException:
in case of failure.
getOutputSizeback to summary
public int getOutputSize(int inputLength)

Implements org.bouncycastle.tls.crypto.impl.TlsAEADCipherImpl.getOutputSize.

Doc from org.bouncycastle.tls.crypto.impl.TlsAEADCipherImpl.getOutputSize.

Return the maximum size of the output for input of inputLength bytes.

Parameters
inputLength:int

the length (in bytes) of the proposed input.

Returns:int

the maximum size of the output.

initback to summary
public void init(byte[] nonce, int macSize) throws IOException

Implements org.bouncycastle.tls.crypto.impl.TlsAEADCipherImpl.init.

Doc from org.bouncycastle.tls.crypto.impl.TlsAEADCipherImpl.init.

Initialise the parameters for the AEAD operator.

Parameters
nonce:byte[]

the nonce.

macSize:int

MAC size in bytes.

Exceptions
IOException:
if the parameters are inappropriate.
initMACback to summary
protected void initMAC(byte[] firstBlock) throws InvalidKeyException
runCipherback to summary
protected void runCipher(byte[] buf) throws GeneralSecurityException
setKeyback to summary
public void setKey(byte[] key, int keyOff, int keyLen) throws IOException

Implements org.bouncycastle.tls.crypto.impl.TlsAEADCipherImpl.setKey.

Doc from org.bouncycastle.tls.crypto.impl.TlsAEADCipherImpl.setKey.

Set the key to be used by the AEAD cipher implementation supporting this service.

Parameters
key:byte[]

array holding the AEAD cipher key.

keyOff:int

offset into the array the key starts at.

keyLen:int

length of the key in the array.

updateMACback to summary
protected void updateMAC(byte[] buf, int off, int len)