Class TlsAeadCipher
- Namespace
- Org.BouncyCastle.Tls.Crypto.Impl
- Assembly
- BouncyCastle.Cryptography.dll
A generic TLS 1.2 AEAD cipher.
public class TlsAeadCipher : TlsCipher, TlsCipherExt
- Inheritance
-
TlsAeadCipher
- Implements
- Inherited Members
Constructors
TlsAeadCipher(TlsCryptoParameters, TlsAeadCipherImpl, TlsAeadCipherImpl, int, int, int)
public TlsAeadCipher(TlsCryptoParameters cryptoParams, TlsAeadCipherImpl encryptCipher, TlsAeadCipherImpl decryptCipher, int keySize, int macSize, int aeadType)
Parameters
cryptoParamsTlsCryptoParametersencryptCipherTlsAeadCipherImpldecryptCipherTlsAeadCipherImplkeySizeintmacSizeintaeadTypeint
Exceptions
Fields
AEAD_CCM
public const int AEAD_CCM = 1
Field Value
AEAD_CHACHA20_POLY1305
public const int AEAD_CHACHA20_POLY1305 = 2
Field Value
AEAD_GCM
public const int AEAD_GCM = 3
Field Value
m_cryptoParams
protected readonly TlsCryptoParameters m_cryptoParams
Field Value
m_decryptCipher
protected readonly TlsAeadCipherImpl m_decryptCipher
Field Value
m_decryptConnectionID
protected readonly byte[] m_decryptConnectionID
Field Value
- byte[]
m_decryptNonce
protected readonly byte[] m_decryptNonce
Field Value
- byte[]
m_decryptUseInnerPlaintext
protected readonly bool m_decryptUseInnerPlaintext
Field Value
m_encryptCipher
protected readonly TlsAeadCipherImpl m_encryptCipher
Field Value
m_encryptConnectionID
protected readonly byte[] m_encryptConnectionID
Field Value
- byte[]
m_encryptNonce
protected readonly byte[] m_encryptNonce
Field Value
- byte[]
m_encryptUseInnerPlaintext
protected readonly bool m_encryptUseInnerPlaintext
Field Value
m_fixed_iv_length
protected readonly int m_fixed_iv_length
Field Value
m_isTlsV13
protected readonly bool m_isTlsV13
Field Value
m_keySize
protected readonly int m_keySize
Field Value
m_macSize
protected readonly int m_macSize
Field Value
m_nonceMode
protected readonly int m_nonceMode
Field Value
m_record_iv_length
protected readonly int m_record_iv_length
Field Value
Properties
UsesOpaqueRecordType
public virtual bool UsesOpaqueRecordType { get; }
Property Value
Methods
DecodeCiphertext(long, short, ProtocolVersion, byte[], int, int)
Decode the passed in ciphertext using the current bulk cipher.
public virtual TlsDecodeResult DecodeCiphertext(long seqNo, short recordType, ProtocolVersion recordVersion, byte[] ciphertext, int ciphertextOffset, int ciphertextLength)
Parameters
seqNolongsequence number of the message represented by ciphertext.
recordTypeshortcontent type used in the record for this message.
recordVersionProtocolVersionProtocolVersion used for the record.
ciphertextbyte[]array holding input ciphertext to the cipher.
ciphertextOffsetintciphertextLengthint
Returns
- TlsDecodeResult
A TlsDecodeResult containing the result of decoding.
Exceptions
EncodePlaintext(long, short, ProtocolVersion, int, byte[], int, int)
Encode the passed in plaintext using the current bulk cipher.
public virtual TlsEncodeResult EncodePlaintext(long seqNo, short contentType, ProtocolVersion recordVersion, int headerAllocation, byte[] plaintext, int plaintextOffset, int plaintextLength)
Parameters
seqNolongsequence number of the message represented by plaintext.
contentTypeshortcontent type of the message represented by plaintext.
recordVersionProtocolVersionProtocolVersion used for the record.
headerAllocationintextra bytes to allocate at start of returned byte array.
plaintextbyte[]array holding input plaintext to the cipher.
plaintextOffsetintplaintextLengthint
Returns
- TlsEncodeResult
A TlsEncodeResult containing the result of encoding (after 'headerAllocation' unused bytes).
Exceptions
EncodePlaintext(long, short, ProtocolVersion, int, ReadOnlySpan<byte>)
public virtual TlsEncodeResult EncodePlaintext(long seqNo, short contentType, ProtocolVersion recordVersion, int headerAllocation, ReadOnlySpan<byte> plaintext)
Parameters
seqNolongcontentTypeshortrecordVersionProtocolVersionheaderAllocationintplaintextReadOnlySpan<byte>
Returns
GetAdditionalData(long, short, ProtocolVersion, int, int)
protected virtual byte[] GetAdditionalData(long seqNo, short recordType, ProtocolVersion recordVersion, int ciphertextLength, int plaintextLength)
Parameters
seqNolongrecordTypeshortrecordVersionProtocolVersionciphertextLengthintplaintextLengthint
Returns
- byte[]
GetAdditionalData(long, short, ProtocolVersion, int, int, byte[])
protected virtual byte[] GetAdditionalData(long seqNo, short recordType, ProtocolVersion recordVersion, int ciphertextLength, int plaintextLength, byte[] connectionID)
Parameters
seqNolongrecordTypeshortrecordVersionProtocolVersionciphertextLengthintplaintextLengthintconnectionIDbyte[]
Returns
- byte[]
GetCiphertextDecodeLimit(int)
Return the maximum input size for a ciphertext given a maximum output size for the plaintext of plaintextLimit bytes.
public virtual int GetCiphertextDecodeLimit(int plaintextLimit)
Parameters
plaintextLimitintthe maximum output size for the plaintext.
Returns
- int
the maximum input size of the ciphertext for plaintextlimit bytes of output.
GetCiphertextEncodeLimit(int, int)
Return the maximum output size for a ciphertext given an actual input plaintext size of plaintextLength bytes and a maximum input plaintext size of plaintextLimit bytes.
public virtual int GetCiphertextEncodeLimit(int plaintextLength, int plaintextLimit)
Parameters
plaintextLengthintthe actual input size for the plaintext.
plaintextLimitintthe maximum input size for the plaintext.
Returns
- int
the maximum output size of the ciphertext for plaintextlimit bytes of input.
GetPlaintextDecodeLimit(int)
public virtual int GetPlaintextDecodeLimit(int ciphertextLimit)
Parameters
ciphertextLimitint
Returns
GetPlaintextEncodeLimit(int)
public virtual int GetPlaintextEncodeLimit(int ciphertextLimit)
Parameters
ciphertextLimitint
Returns
GetPlaintextLimit(int)
Return the maximum size for the plaintext given ciphertextlimit bytes of ciphertext.
public virtual int GetPlaintextLimit(int ciphertextLimit)
Parameters
ciphertextLimitintthe maximum number of bytes of ciphertext.
Returns
- int
the maximum size of the plaintext for ciphertextlimit bytes of input.
RekeyCipher(SecurityParameters, TlsAeadCipherImpl, byte[], bool)
protected virtual void RekeyCipher(SecurityParameters securityParameters, TlsAeadCipherImpl cipher, byte[] nonce, bool serverSecret)
Parameters
securityParametersSecurityParameterscipherTlsAeadCipherImplnoncebyte[]serverSecretbool
RekeyDecoder()
public virtual void RekeyDecoder()
Exceptions
RekeyEncoder()
public virtual void RekeyEncoder()
Exceptions
Setup13Cipher(TlsAeadCipherImpl, byte[], TlsSecret, int)
protected virtual void Setup13Cipher(TlsAeadCipherImpl cipher, byte[] nonce, TlsSecret secret, int cryptoHashAlgorithm)
Parameters
cipherTlsAeadCipherImplnoncebyte[]secretTlsSecretcryptoHashAlgorithmint