Package org.bouncycastle.tls.crypto.impl
Class TlsAEADCipher
java.lang.Object
org.bouncycastle.tls.crypto.impl.TlsAEADCipher
- All Implemented Interfaces:
TlsCipher
A generic TLS 1.2 AEAD cipher.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final intstatic final intstatic final int -
Constructor Summary
ConstructorsConstructorDescriptionTlsAEADCipher(TlsCryptoParameters cryptoParams, TlsAEADCipherImpl encryptCipher, TlsAEADCipherImpl decryptCipher, int keySize, int macSize, int aeadType) -
Method Summary
Modifier and TypeMethodDescriptiondecodeCiphertext(long seqNo, short recordType, ProtocolVersion recordVersion, byte[] ciphertext, int ciphertextOffset, int ciphertextLength) Decode the passed in ciphertext using the current bulk cipher.encodePlaintext(long seqNo, short contentType, ProtocolVersion recordVersion, int headerAllocation, byte[] plaintext, int plaintextOffset, int plaintextLength) Encode the passed in plaintext using the current bulk cipher.intgetCiphertextDecodeLimit(int plaintextLimit) Return the maximum input size for a ciphertext given a maximum output size for the plaintext of plaintextLimit bytes.intgetCiphertextEncodeLimit(int plaintextLimit) Return the maximum output size for a ciphertext given a maximum input size for the plaintext of plaintextLimit bytes.intgetPlaintextDecodeLimit(int ciphertextLimit) Return the maximum output size for the plaintext given a maximum input size for the ciphertext of ciphertextLimit bytes.intgetPlaintextEncodeLimit(int ciphertextLimit) Return the maximum input size for the plaintext given a maximum output size for the ciphertext of ciphertextLimit bytes.voidvoidbooleanboolean
-
Field Details
-
AEAD_CCM
public static final int AEAD_CCM- See Also:
-
AEAD_CHACHA20_POLY1305
public static final int AEAD_CHACHA20_POLY1305- See Also:
-
AEAD_GCM
public static final int AEAD_GCM- See Also:
-
-
Constructor Details
-
TlsAEADCipher
public TlsAEADCipher(TlsCryptoParameters cryptoParams, TlsAEADCipherImpl encryptCipher, TlsAEADCipherImpl decryptCipher, int keySize, int macSize, int aeadType) throws IOException - Throws:
IOException
-
-
Method Details
-
getCiphertextDecodeLimit
public int getCiphertextDecodeLimit(int plaintextLimit) Description copied from interface:TlsCipherReturn the maximum input size for a ciphertext given a maximum output size for the plaintext of plaintextLimit bytes.- Specified by:
getCiphertextDecodeLimitin interfaceTlsCipher- Parameters:
plaintextLimit- the maximum output size for the plaintext.- Returns:
- the maximum input size of the ciphertext for plaintextLimit bytes of output.
-
getCiphertextEncodeLimit
public int getCiphertextEncodeLimit(int plaintextLimit) Description copied from interface:TlsCipherReturn the maximum output size for a ciphertext given a maximum input size for the plaintext of plaintextLimit bytes.- Specified by:
getCiphertextEncodeLimitin interfaceTlsCipher- Parameters:
plaintextLimit- the maximum input size for the plaintext.- Returns:
- the maximum output size of the ciphertext for plaintextLimit bytes of input.
-
getPlaintextDecodeLimit
public int getPlaintextDecodeLimit(int ciphertextLimit) Description copied from interface:TlsCipherReturn the maximum output size for the plaintext given a maximum input size for the ciphertext of ciphertextLimit bytes.- Specified by:
getPlaintextDecodeLimitin interfaceTlsCipher- Parameters:
ciphertextLimit- the maximum input size for the ciphertext.- Returns:
- the maximum output size of the plaintext for ciphertextLimit bytes of input.
-
getPlaintextEncodeLimit
public int getPlaintextEncodeLimit(int ciphertextLimit) Description copied from interface:TlsCipherReturn the maximum input size for the plaintext given a maximum output size for the ciphertext of ciphertextLimit bytes.- Specified by:
getPlaintextEncodeLimitin interfaceTlsCipher- Parameters:
ciphertextLimit- the maximum output size for the ciphertext.- Returns:
- the maximum input size of the plaintext for ciphertextLimit bytes of output.
-
encodePlaintext
public TlsEncodeResult encodePlaintext(long seqNo, short contentType, ProtocolVersion recordVersion, int headerAllocation, byte[] plaintext, int plaintextOffset, int plaintextLength) throws IOException Description copied from interface:TlsCipherEncode the passed in plaintext using the current bulk cipher.- Specified by:
encodePlaintextin interfaceTlsCipher- Parameters:
seqNo- sequence number of the message represented by plaintext.contentType- content type of the message represented by plaintext.recordVersion-ProtocolVersionused for the record.headerAllocation- extra bytes to allocate at start of returned byte array.plaintext- array holding input plaintext to the cipher.plaintextOffset- offset into input array the plaintext starts at.plaintextLength- length of the plaintext in the array.- Returns:
- A
TlsEncodeResultcontaining the result of encoding (after 'headerAllocation' unused bytes). - Throws:
IOException
-
decodeCiphertext
public TlsDecodeResult decodeCiphertext(long seqNo, short recordType, ProtocolVersion recordVersion, byte[] ciphertext, int ciphertextOffset, int ciphertextLength) throws IOException Description copied from interface:TlsCipherDecode the passed in ciphertext using the current bulk cipher.- Specified by:
decodeCiphertextin interfaceTlsCipher- Parameters:
seqNo- sequence number of the message represented by ciphertext.recordType- content type used in the record for this message.recordVersion-ProtocolVersionused for the record.ciphertext- array holding input ciphertext to the cipher.ciphertextOffset- offset into input array the ciphertext starts at.ciphertextLength- length of the ciphertext in the array.- Returns:
- A
TlsDecodeResultcontaining the result of decoding. - Throws:
IOException
-
rekeyDecoder
- Specified by:
rekeyDecoderin interfaceTlsCipher- Throws:
IOException
-
rekeyEncoder
- Specified by:
rekeyEncoderin interfaceTlsCipher- Throws:
IOException
-
usesOpaqueRecordTypeDecode
public boolean usesOpaqueRecordTypeDecode()- Specified by:
usesOpaqueRecordTypeDecodein interfaceTlsCipher
-
usesOpaqueRecordTypeEncode
public boolean usesOpaqueRecordTypeEncode()- Specified by:
usesOpaqueRecordTypeEncodein interfaceTlsCipher
-