Botan 2.1.0 Crypto and TLS for C++11

- Main Page
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Member Functions | Protected Member Functions | List of all members
Botan::TLS::TLS_CBC_HMAC_AEAD_Mode Class Referenceabstract

`#include <tls_cbc.h>`

Inheritance diagram for Botan::TLS::TLS_CBC_HMAC_AEAD_Mode:

## Public Member Functions
bool | authenticated () const override
void | clear () overridefinal
size_t | default_nonce_length () const overridefinal
virtual void | finish (secure_vector< uint8_t > &final_block, size_t offset=0)=0
Key_Length_Specification | key_spec () const overridefinal
virtual size_t | minimum_final_size () const =0
std::string | name () const overridefinal
virtual size_t | output_length (size_t input_length) const =0
size_t | process (uint8_t buf[], size_t sz) overridefinal
virtual std::string | provider () const
void | reset () overridefinal
template<typename Alloc >
void | set_ad (const std::vector< uint8_t, Alloc > &ad)
void | set_associated_data (const uint8_t ad[], size_t ad_len) override
template<typename Alloc >
void | set_associated_data_vec (const std::vector< uint8_t, Alloc > &ad)
template<typename Alloc >
void | set_key (const std::vector< uint8_t, Alloc > &key)
void | set_key (const SymmetricKey &key)
void | set_key (const uint8_t key[], size_t length)
template<typename Alloc >
void | start (const std::vector< uint8_t, Alloc > &nonce)
void | start (const uint8_t nonce[], size_t nonce_len)
void | start ()
size_t | tag_size () const overridefinal
void | update (secure_vector< uint8_t > &buffer, size_t offset=0)
size_t | update_granularity () const overridefinal
bool | valid_keylength (size_t length) const
bool | valid_nonce_length (size_t nl) const overridefinal

## Protected Member Functions
std::vector< uint8_t > & | assoc_data ()
std::vector< uint8_t > | assoc_data_with_len (uint16_t len)
size_t | block_size () const
secure_vector< uint8_t > & | cbc_state ()
BlockCipher & | cipher () const
size_t | cipher_keylen () const
size_t | iv_size () const
MessageAuthenticationCode & | mac () const
size_t | mac_keylen () const
secure_vector< uint8_t > & | msg ()
| TLS_CBC_HMAC_AEAD_Mode (const std::string &cipher_name, size_t cipher_keylen, const std::string &mac_name, size_t mac_keylen, bool use_explicit_iv, bool use_encrypt_then_mac)
bool | use_encrypt_then_mac () const

## Detailed Description

TLS CBC+HMAC AEAD base class (GenericBlockCipher in TLS spec) This is the weird TLS-specific mode, not for general consumption.

Definition at line 24 of file tls_cbc.h.

## Constructor & Destructor Documentation

Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::TLS_CBC_HMAC_AEAD_Mode | ( | const std::string & | cipher_name,
|  | size_t | cipher_keylen,
|  | const std::string & | mac_name,
|  | size_t | mac_keylen,
|  | bool | use_explicit_iv,
|  | bool | use_encrypt_then_mac
| ) |  |
| protected

Definition at line 25 of file tls_cbc.cpp.

References Botan::BlockCipher::create_or_throw(), and Botan::MessageAuthenticationCode::create_or_throw().

30 :
31 m_cipher_name(cipher_name),
32 m_mac_name(mac_name),
33 m_cipher_keylen(cipher_keylen),
34 m_mac_keylen(mac_keylen),
35 m_use_encrypt_then_mac(use_encrypt_then_mac)
36 {
37 m_cipher = BlockCipher::create_or_throw(m_cipher_name);
38 m_mac = MessageAuthenticationCode::create_or_throw("HMAC(" + m_mac_name + ")");
39
40 m_tag_size = m_mac->output_length();
41 m_block_size = m_cipher->block_size();
42
43 m_iv_size = use_explicit_iv ? m_block_size : 0;
44 }
m_mac
std::unique_ptr< MessageAuthenticationCode > m_mac
Definition: fpe_fe1.cpp:88
m_cipher_name
std::string m_cipher_name
Definition: openssl_block.cpp:53
Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::mac_keylen
size_t mac_keylen() const
Definition: tls_cbc.h:56
Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::use_encrypt_then_mac
bool use_encrypt_then_mac() const
Definition: tls_cbc.h:60
Botan::BlockCipher::create_or_throw
static std::unique_ptr< BlockCipher > create_or_throw(const std::string &algo_spec, const std::string &provider="")
Definition: block_cipher.cpp:285
Botan::MessageAuthenticationCode::create_or_throw
static std::unique_ptr< MessageAuthenticationCode > create_or_throw(const std::string &algo_spec, const std::string &provider="")
Definition: mac.cpp:138
Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::cipher_keylen
size_t cipher_keylen() const
Definition: tls_cbc.h:55

## Member Function Documentation

std::vector<uint8_t>& Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::assoc_data | ( |  | ) |
| inline protected

Definition at line 75 of file tls_cbc.h.

Referenced by Botan::TLS::TLS_CBC_HMAC_AEAD_Encryption::finish(), and Botan::TLS::TLS_CBC_HMAC_AEAD_Encryption::set_associated_data().

75 { return m_ad; }

std::vector< uint8_t > Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::assoc_data_with_len | ( | uint16_t | len | ) |
| protected

Definition at line 114 of file tls_cbc.cpp.

References BOTAN_ASSERT, and Botan::get_byte().

Referenced by Botan::TLS::TLS_CBC_HMAC_AEAD_Decryption::finish().

115 {
116 std::vector<uint8_t> ad = m_ad;
117 BOTAN_ASSERT(ad.size() == 13, "Expected AAD size");
118 ad[11] = get_byte(0, len);
119 ad[12] = get_byte(1, len);
120 return ad;
121 }
BOTAN_ASSERT
#define BOTAN_ASSERT(expr, assertion_made)
Definition: assert.h:27
Botan::get_byte
uint8_t get_byte(size_t byte_num, T input)
Definition: loadstor.h:47

bool Botan::AEAD_Mode::authenticated | ( |  | ) | const
| inline override virtual inherited

Returns
  true iff this mode provides authentication as well as confidentiality.

Reimplemented from Botan::Cipher_Mode.

Definition at line 25 of file aead.h.

25 { return true; }

size_t Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::block_size | ( |  | ) | const
| inline protected

Definition at line 58 of file tls_cbc.h.

Referenced by Botan::TLS::TLS_CBC_HMAC_AEAD_Encryption::finish(), Botan::TLS::TLS_CBC_HMAC_AEAD_Decryption::finish(), Botan::TLS::TLS_CBC_HMAC_AEAD_Encryption::output_length(), Botan::TLS::TLS_CBC_HMAC_AEAD_Encryption::set_associated_data(), and valid_nonce_length().

58 { return m_block_size; }

secure_vector<uint8_t>& Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::cbc_state | ( |  | ) |
| inline protected

Definition at line 74 of file tls_cbc.h.

Referenced by Botan::TLS::TLS_CBC_HMAC_AEAD_Encryption::finish(), Botan::TLS::TLS_CBC_HMAC_AEAD_Decryption::finish(), and reset().

74 { return m_cbc_state; }

BlockCipher& Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::cipher | ( |  | ) | const
| inline protected

Definition at line 62 of file tls_cbc.h.

References BOTAN_ASSERT_NONNULL.

Referenced by clear().

63 {
64 BOTAN_ASSERT_NONNULL(m_cipher);
65 return *m_cipher;
66 }
BOTAN_ASSERT_NONNULL
#define BOTAN_ASSERT_NONNULL(ptr)
Definition: assert.h:79

size_t Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::cipher_keylen | ( |  | ) | const
| inline protected

Definition at line 55 of file tls_cbc.h.

55 { return m_cipher_keylen; }

void Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::clear | ( |  | ) |
| final override virtual

Zeroise all state See also reset_msg()

Implements Botan::Cipher_Mode.

Definition at line 46 of file tls_cbc.cpp.

References cipher(), Botan::SymmetricAlgorithm::clear(), mac(), and reset().

47 {
48 cipher().clear();
49 mac().clear();
50 reset();
51 }
Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::cipher
BlockCipher & cipher() const
Definition: tls_cbc.h:62
Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::mac
MessageAuthenticationCode & mac() const
Definition: tls_cbc.h:68
Botan::SymmetricAlgorithm::clear
virtual void clear()=0
Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::reset
void reset() overridefinal
Definition: tls_cbc.cpp:53

size_t Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::default_nonce_length | ( |  | ) | const
| inline final override virtual

Returns
  default AEAD nonce size (a commonly supported value among AEAD modes, and large enough that random collisions are unlikely)

Reimplemented from Botan::AEAD_Mode.

Definition at line 41 of file tls_cbc.h.

41 { return m_iv_size; }

virtual void Botan::Cipher_Mode::finish | ( | secure_vector< uint8_t > & | final_block,
|  | size_t | offset = `0`
| ) |  |
| pure virtual inherited

Complete processing of a message.

Parameters

  final_block | in/out parameter which must be at least minimum_final_size() bytes, and will be set to any final output
  offset | an offset into final_block to begin processing

Implemented in Botan::TLS::TLS_CBC_HMAC_AEAD_Decryption, Botan::CTS_Decryption, Botan::TLS::TLS_CBC_HMAC_AEAD_Encryption, Botan::CBC_Decryption, Botan::OCB_Decryption, Botan::CCM_Decryption, Botan::EAX_Decryption, Botan::GCM_Decryption, Botan::SIV_Decryption, Botan::CTS_Encryption, Botan::CFB_Decryption, Botan::ChaCha20Poly1305_Decryption, Botan::OCB_Encryption, Botan::CCM_Encryption, Botan::SIV_Encryption, Botan::XTS_Decryption, Botan::EAX_Encryption, Botan::GCM_Encryption, Botan::CBC_Encryption, Botan::CFB_Encryption, Botan::ChaCha20Poly1305_Encryption, Botan::XTS_Encryption, and Botan::Stream_Cipher_Mode.

Referenced by botan_cipher_update(), and Botan::TLS::write_record().

size_t Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::iv_size | ( |  | ) | const
| inline protected

Definition at line 57 of file tls_cbc.h.

Referenced by Botan::TLS::TLS_CBC_HMAC_AEAD_Encryption::finish(), Botan::TLS::TLS_CBC_HMAC_AEAD_Decryption::finish(), Botan::TLS::TLS_CBC_HMAC_AEAD_Encryption::set_associated_data(), and valid_nonce_length().

57 { return m_iv_size; }

Key_Length_Specification Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::key_spec | ( |  | ) | const
| final override virtual

Returns
  object describing limits on key size

Implements Botan::Cipher_Mode.

Definition at line 77 of file tls_cbc.cpp.

78 {
79 return Key_Length_Specification(m_cipher_keylen + m_mac_keylen);
80 }

MessageAuthenticationCode& Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::mac | ( |  | ) | const
| inline protected

Definition at line 68 of file tls_cbc.h.

References BOTAN_ASSERT_NONNULL, and m_mac.

Referenced by clear(), Botan::TLS::TLS_CBC_HMAC_AEAD_Encryption::finish(), and Botan::TLS::TLS_CBC_HMAC_AEAD_Decryption::finish().

69 {
70 BOTAN_ASSERT_NONNULL(m_mac);
71 return *m_mac;
72 }
m_mac
std::unique_ptr< MessageAuthenticationCode > m_mac
Definition: fpe_fe1.cpp:88
BOTAN_ASSERT_NONNULL
#define BOTAN_ASSERT_NONNULL(ptr)
Definition: assert.h:79

size_t Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::mac_keylen | ( |  | ) | const
| inline protected

Definition at line 56 of file tls_cbc.h.

56 { return m_mac_keylen; }

virtual size_t Botan::Cipher_Mode::minimum_final_size | ( |  | ) | const
| pure virtual inherited

Returns
  required minimium size to finalize() - may be any length larger than this.

Implemented in Botan::TLS::TLS_CBC_HMAC_AEAD_Decryption, Botan::CTS_Decryption, Botan::TLS::TLS_CBC_HMAC_AEAD_Encryption, Botan::CBC_Decryption, Botan::CCM_Decryption, Botan::OCB_Decryption, Botan::SIV_Decryption, Botan::EAX_Decryption, Botan::GCM_Decryption, Botan::CTS_Encryption, Botan::CCM_Encryption, Botan::SIV_Encryption, Botan::ChaCha20Poly1305_Decryption, Botan::OCB_Encryption, Botan::EAX_Encryption, Botan::CBC_Encryption, Botan::GCM_Encryption, Botan::ChaCha20Poly1305_Encryption, Botan::Stream_Cipher_Mode, Botan::CFB_Mode, and Botan::XTS_Mode.

Referenced by botan_cipher_update().

secure_vector<uint8_t>& Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::msg | ( |  | ) |
| inline protected

Definition at line 76 of file tls_cbc.h.

Referenced by Botan::TLS::TLS_CBC_HMAC_AEAD_Encryption::finish(), and Botan::TLS::TLS_CBC_HMAC_AEAD_Decryption::finish().

76 { return m_msg; }

std::string Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::name | ( |  | ) | const
| final override virtual

Implements Botan::Cipher_Mode.

Definition at line 60 of file tls_cbc.cpp.

61 {
62 return "TLS_CBC(" + m_cipher_name + "," + m_mac_name + ")";
63 }
m_cipher_name
std::string m_cipher_name
Definition: openssl_block.cpp:53

virtual size_t Botan::Cipher_Mode::output_length | ( | size_t | input_length | ) | const
| pure virtual inherited

Returns the size of the output if this transform is used to process a message with input_length bytes. Will throw if unable to give a precise answer.

Implemented in Botan::TLS::TLS_CBC_HMAC_AEAD_Decryption, Botan::TLS::TLS_CBC_HMAC_AEAD_Encryption, Botan::CBC_Decryption, Botan::CCM_Decryption, Botan::OCB_Decryption, Botan::SIV_Decryption, Botan::EAX_Decryption, Botan::GCM_Decryption, Botan::CTS_Encryption, Botan::CCM_Encryption, Botan::SIV_Encryption, Botan::XTS_Decryption, Botan::OCB_Encryption, Botan::ChaCha20Poly1305_Decryption, Botan::CBC_Encryption, Botan::EAX_Encryption, Botan::GCM_Encryption, Botan::XTS_Encryption, Botan::ChaCha20Poly1305_Encryption, Botan::Stream_Cipher_Mode, and Botan::CFB_Mode.

Referenced by Botan::TLS::write_record().

size_t Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::process | ( | uint8_t | msg[],
|  | size_t | msg_len
| ) |  |
| final override virtual

Process message blocks

Input must be a multiple of update_granularity

Processes msg in place and returns bytes written. Normally this will be either msg_len (indicating the entire message was processed) or for certain AEAD modes zero (indicating that the mode requires the entire message be processed in one pass).

Parameters

  msg | the message to be processed
  msg_len | length of the message in bytes

Implements Botan::Cipher_Mode.

Definition at line 108 of file tls_cbc.cpp.

109 {
110 m_msg.insert(m_msg.end(), buf, buf + sz);
111 return 0;
112 }

virtual std::string Botan::Cipher_Mode::provider | ( |  | ) | const
| inline virtual inherited

Returns
  provider information about this implementation. Default is "base", might also return "sse2", "avx2", "openssl", or some other arbitrary string.

Reimplemented in Botan::GCM_Mode.

Definition at line 202 of file cipher_mode.h.

202 { return "base"; }

void Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::reset | ( |  | ) |
| final override virtual

Resets just the message specific state and allows encrypting again under the existing key

Implements Botan::Cipher_Mode.

Definition at line 53 of file tls_cbc.cpp.

References cbc_state().

Referenced by clear().

54 {
55 cbc_state().clear();
56 m_ad.clear();
57 m_msg.clear();
58 }
Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::cbc_state
secure_vector< uint8_t > & cbc_state()
Definition: tls_cbc.h:74
template<typename Alloc >

void Botan::AEAD_Mode::set_ad | ( | const std::vector< uint8_t, Alloc > & | ad | ) |
| inline inherited

Set associated data that is not included in the ciphertext but that should be authenticated. Must be called after set_key and before start.

See set_associated_data().

Parameters

  ad | the associated data

Definition at line 66 of file aead.h.

Referenced by Botan::TLS::write_record().

67 {
68 set_associated_data(ad.data(), ad.size());
69 }
Botan::AEAD_Mode::set_associated_data
virtual void set_associated_data(const uint8_t ad[], size_t ad_len)=0

void Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::set_associated_data | ( | const uint8_t | ad[],
|  | size_t | ad_len
| ) |  |
| override virtual

Set associated data that is not included in the ciphertext but that should be authenticated. Must be called after set_key and before start.

Unless reset by another call, the associated data is kept between messages. Thus, if the AD does not change, calling once (after set_key) is the optimum.

Parameters

  ad | the associated data
  ad_len | length of add in bytes

Implements Botan::AEAD_Mode.

Reimplemented in Botan::TLS::TLS_CBC_HMAC_AEAD_Encryption.

Definition at line 123 of file tls_cbc.cpp.

Referenced by Botan::TLS::TLS_CBC_HMAC_AEAD_Encryption::set_associated_data().

124 {
125 if(ad_len != 13)
126 throw Exception("Invalid TLS AEAD associated data length");
127 m_ad.assign(ad, ad + ad_len);
128 }
template<typename Alloc >

void Botan::AEAD_Mode::set_associated_data_vec | ( | const std::vector< uint8_t, Alloc > & | ad | ) |
| inline inherited

Set associated data that is not included in the ciphertext but that should be authenticated. Must be called after set_key and before start.

See set_associated_data().

Parameters

  ad | the associated data

Definition at line 51 of file aead.h.

52 {
53 set_associated_data(ad.data(), ad.size());
54 }
Botan::AEAD_Mode::set_associated_data
virtual void set_associated_data(const uint8_t ad[], size_t ad_len)=0
template<typename Alloc >

void Botan::Cipher_Mode::set_key | ( | const std::vector< uint8_t, Alloc > & | key | ) |
| inline inherited

Set the symmetric key of this transform

Parameters

  key | contains the key material

Definition at line 172 of file cipher_mode.h.

Referenced by botan_cipher_set_key().

173 {
174 set_key(key.data(), key.size());
175 }
Botan::Cipher_Mode::set_key
void set_key(const std::vector< uint8_t, Alloc > &key)
Definition: cipher_mode.h:172

void Botan::Cipher_Mode::set_key | ( | const SymmetricKey & | key | ) |
| inline inherited

Set the symmetric key of this transform

Parameters

  key | contains the key material

Definition at line 181 of file cipher_mode.h.

References Botan::OctetString::begin(), and Botan::OctetString::length().

182 {
183 set_key(key.begin(), key.length());
184 }
Botan::Cipher_Mode::set_key
void set_key(const std::vector< uint8_t, Alloc > &key)
Definition: cipher_mode.h:172

void Botan::Cipher_Mode::set_key | ( | const uint8_t | key[],
|  | size_t | length
| ) |  |
| inline inherited

Set the symmetric key of this transform

Parameters

  key | contains the key material
  length | in bytes of key param

Definition at line 191 of file cipher_mode.h.

192 {
193 if(!valid_keylength(length))
194 throw Invalid_Key_Length(name(), length);
195 key_schedule(key, length);
196 }
Botan::Cipher_Mode::name
virtual std::string name() const =0
Botan::Cipher_Mode::valid_keylength
bool valid_keylength(size_t length) const
Definition: cipher_mode.h:162
template<typename Alloc >

void Botan::Cipher_Mode::start | ( | const std::vector< uint8_t, Alloc > & | nonce | ) |
| inline inherited

Begin processing a message.

Parameters

  nonce | the per message nonce

Definition at line 38 of file cipher_mode.h.

Referenced by botan_cipher_start(), and Botan::TLS::write_record().

39 {
40 start_msg(nonce.data(), nonce.size());
41 }
Botan::Cipher_Mode::start_msg
virtual void start_msg(const uint8_t nonce[], size_t nonce_len)=0

void Botan::Cipher_Mode::start | ( | const uint8_t | nonce[],
|  | size_t | nonce_len
| ) |  |
| inline inherited

Begin processing a message.

Parameters

  nonce | the per message nonce
  nonce_len | length of nonce

Definition at line 48 of file cipher_mode.h.

49 {
50 start_msg(nonce, nonce_len);
51 }
Botan::Cipher_Mode::start_msg
virtual void start_msg(const uint8_t nonce[], size_t nonce_len)=0

void Botan::Cipher_Mode::start | ( |  | ) |
| inline inherited

Begin processing a message.

Definition at line 56 of file cipher_mode.h.

57 {
58 return start_msg(nullptr, 0);
59 }
Botan::Cipher_Mode::start_msg
virtual void start_msg(const uint8_t nonce[], size_t nonce_len)=0

size_t Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::tag_size | ( |  | ) | const
| inline final override virtual

Returns
  the size of the authentication tag used (in bytes)

Reimplemented from Botan::Cipher_Mode.

Definition at line 39 of file tls_cbc.h.

Referenced by Botan::TLS::TLS_CBC_HMAC_AEAD_Encryption::finish(), Botan::TLS::TLS_CBC_HMAC_AEAD_Decryption::finish(), and Botan::TLS::TLS_CBC_HMAC_AEAD_Encryption::output_length().

39 { return m_tag_size; }

void Botan::Cipher_Mode::update | ( | secure_vector< uint8_t > & | buffer,
|  | size_t | offset = `0`
| ) |  |
| inline inherited

Process some data. Input must be in size update_granularity() uint8_t blocks.

Parameters

  buffer | in/out parameter which will possibly be resized
  offset | an offset into blocks to begin processing

Definition at line 81 of file cipher_mode.h.

References BOTAN_ASSERT.

Referenced by botan_cipher_update(), Botan::XTS_Encryption::finish(), Botan::ChaCha20Poly1305_Encryption::finish(), Botan::CBC_Encryption::finish(), Botan::CFB_Encryption::finish(), Botan::EAX_Encryption::finish(), Botan::XTS_Decryption::finish(), Botan::CFB_Decryption::finish(), Botan::CTS_Encryption::finish(), Botan::CBC_Decryption::finish(), Botan::TLS::TLS_CBC_HMAC_AEAD_Encryption::finish(), Botan::CTS_Decryption::finish(), and Botan::TLS::TLS_CBC_HMAC_AEAD_Decryption::finish().

82 {
83 BOTAN_ASSERT(buffer.size() >= offset, "Offset ok");
84 uint8_t* buf = buffer.data() + offset;
85 const size_t buf_size = buffer.size() - offset;
86
87 const size_t written = process(buf, buf_size);
88 buffer.resize(offset + written);
89 }
BOTAN_ASSERT
#define BOTAN_ASSERT(expr, assertion_made)
Definition: assert.h:27
Botan::Cipher_Mode::process
virtual size_t process(uint8_t msg[], size_t msg_len)=0

size_t Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::update_granularity | ( |  | ) | const
| final override virtual

Returns
  size of required blocks to update

Implements Botan::Cipher_Mode.

Definition at line 65 of file tls_cbc.cpp.

66 {
67 return 1; // just buffers anyway
68 }

bool Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::use_encrypt_then_mac | ( |  | ) | const
| inline protected

Definition at line 60 of file tls_cbc.h.

Referenced by Botan::TLS::TLS_CBC_HMAC_AEAD_Encryption::finish(), Botan::TLS::TLS_CBC_HMAC_AEAD_Decryption::finish(), Botan::TLS::TLS_CBC_HMAC_AEAD_Encryption::output_length(), and Botan::TLS::TLS_CBC_HMAC_AEAD_Encryption::set_associated_data().

60 { return m_use_encrypt_then_mac; }

bool Botan::Cipher_Mode::valid_keylength | ( | size_t | length | ) | const
| inline inherited

Check whether a given key length is valid for this algorithm.

Parameters

  length | the key length to be checked.

Returns
  true if the key length is valid.

Definition at line 162 of file cipher_mode.h.

163 {
164 return key_spec().valid_keylength(length);
165 }
Botan::Key_Length_Specification::valid_keylength
bool valid_keylength(size_t length) const
Definition: key_spec.h:51
Botan::Cipher_Mode::key_spec
virtual Key_Length_Specification key_spec() const =0

bool Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::valid_nonce_length | ( | size_t | nonce_len | ) | const
| final override virtual

Returns
  true iff nonce_len is a valid length for the nonce

Implements Botan::Cipher_Mode.

Definition at line 70 of file tls_cbc.cpp.

References block_size(), and iv_size().

71 {
72 if(m_cbc_state.empty())
73 return nl == block_size();
74 return nl == iv_size();
75 }
Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::block_size
size_t block_size() const
Definition: tls_cbc.h:58
Botan::TLS::TLS_CBC_HMAC_AEAD_Mode::iv_size
size_t iv_size() const
Definition: tls_cbc.h:57

The documentation for this class was generated from the following files:

- src/lib/tls/tls_cbc/tls_cbc.h
- src/lib/tls/tls_cbc/tls_cbc.cpp