Botan  2.7.0
Crypto and TLS for C++11
Public Member Functions | Static Public Member Functions | Protected Member Functions | List of all members
Botan::MessageAuthenticationCode Class Referenceabstract

#include <mac.h>

Inheritance diagram for Botan::MessageAuthenticationCode:
Botan::Buffered_Computation Botan::SymmetricAlgorithm Botan::ANSI_X919_MAC Botan::CBC_MAC Botan::CMAC Botan::GMAC Botan::HMAC Botan::Poly1305 Botan::SipHash

Public Member Functions

virtual void clear ()=0
 
virtual MessageAuthenticationCodeclone () const =0
 
void final (uint8_t out[])
 
secure_vector< uint8_t > final ()
 
template<typename Alloc >
void final (std::vector< uint8_t, Alloc > &out)
 
std::vector< uint8_t > final_stdvec ()
 
virtual Key_Length_Specification key_spec () const =0
 
size_t maximum_keylength () const
 
size_t minimum_keylength () const
 
virtual std::string name () const =0
 
virtual size_t output_length () const =0
 
secure_vector< uint8_t > process (const uint8_t in[], size_t length)
 
secure_vector< uint8_t > process (const secure_vector< uint8_t > &in)
 
secure_vector< uint8_t > process (const std::vector< uint8_t > &in)
 
secure_vector< uint8_t > process (const std::string &in)
 
virtual std::string provider () const
 
void set_key (const SymmetricKey &key)
 
template<typename Alloc >
void set_key (const std::vector< uint8_t, Alloc > &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 ()
 
virtual void start_msg (const uint8_t nonce[], size_t nonce_len)
 
void update (const uint8_t in[], size_t length)
 
void update (const secure_vector< uint8_t > &in)
 
void update (const std::vector< uint8_t > &in)
 
void update (const std::string &str)
 
void update (uint8_t in)
 
template<typename T >
void update_be (const T in)
 
bool valid_keylength (size_t length) const
 
virtual bool verify_mac (const uint8_t in[], size_t length)
 
virtual bool verify_mac (const std::vector< uint8_t > &in)
 
virtual bool verify_mac (const secure_vector< uint8_t > &in)
 
virtual ~MessageAuthenticationCode ()=default
 

Static Public Member Functions

static std::unique_ptr< MessageAuthenticationCodecreate (const std::string &algo_spec, const std::string &provider="")
 
static std::unique_ptr< MessageAuthenticationCodecreate_or_throw (const std::string &algo_spec, const std::string &provider="")
 
static std::vector< std::string > providers (const std::string &algo_spec)
 

Protected Member Functions

void verify_key_set (bool cond) const
 

Detailed Description

This class represents Message Authentication Code (MAC) objects.

Definition at line 21 of file mac.h.

Constructor & Destructor Documentation

◆ ~MessageAuthenticationCode()

virtual Botan::MessageAuthenticationCode::~MessageAuthenticationCode ( )
virtualdefault

Member Function Documentation

◆ clear()

virtual void Botan::SymmetricAlgorithm::clear ( )
pure virtualinherited

◆ clone()

virtual MessageAuthenticationCode* Botan::MessageAuthenticationCode::clone ( ) const
pure virtual

Get a new object representing the same algorithm as *this

Implemented in Botan::GMAC, Botan::ANSI_X919_MAC, Botan::Poly1305, Botan::CMAC, Botan::HMAC, Botan::CBC_MAC, and Botan::SipHash.

◆ create()

std::unique_ptr< MessageAuthenticationCode > Botan::MessageAuthenticationCode::create ( const std::string &  algo_spec,
const std::string &  provider = "" 
)
static

Create an instance based on a name If provider is empty then best available is chosen.

Parameters
algo_specalgorithm name
providerprovider implementation to use
Returns
a null pointer if the algo/provider combination cannot be found

Definition at line 46 of file mac.cpp.

References Botan::SCAN_Name::algo_name(), Botan::SCAN_Name::arg(), Botan::SCAN_Name::arg_as_integer(), Botan::SCAN_Name::arg_count(), BOTAN_UNUSED, Botan::HashFunction::create(), Botan::BlockCipher::create(), and provider().

Referenced by botan_mac_init(), Botan::PBKDF::create(), Botan::KDF::create(), create_or_throw(), Botan::TLS::Session::decrypt(), Botan::TLS::Session::encrypt(), Botan::TLS::Hello_Verify_Request::Hello_Verify_Request(), and Botan::RFC6979_Nonce_Generator::RFC6979_Nonce_Generator().

48  {
49  const SCAN_Name req(algo_spec);
50 
51 #if defined(BOTAN_HAS_GMAC)
52  if(req.algo_name() == "GMAC" && req.arg_count() == 1)
53  {
54  if(provider.empty() || provider == "base")
55  {
56  if(auto bc = BlockCipher::create(req.arg(0)))
57  return std::unique_ptr<MessageAuthenticationCode>(new GMAC(bc.release()));
58  }
59  }
60 #endif
61 
62 #if defined(BOTAN_HAS_HMAC)
63  if(req.algo_name() == "HMAC" && req.arg_count() == 1)
64  {
65  // TODO OpenSSL
66  if(provider.empty() || provider == "base")
67  {
68  if(auto h = HashFunction::create(req.arg(0)))
69  return std::unique_ptr<MessageAuthenticationCode>(new HMAC(h.release()));
70  }
71  }
72 #endif
73 
74 #if defined(BOTAN_HAS_POLY1305)
75  if(req.algo_name() == "Poly1305" && req.arg_count() == 0)
76  {
77  if(provider.empty() || provider == "base")
78  return std::unique_ptr<MessageAuthenticationCode>(new Poly1305);
79  }
80 #endif
81 
82 #if defined(BOTAN_HAS_SIPHASH)
83  if(req.algo_name() == "SipHash")
84  {
85  if(provider.empty() || provider == "base")
86  {
87  return std::unique_ptr<MessageAuthenticationCode>(
88  new SipHash(req.arg_as_integer(0, 2), req.arg_as_integer(1, 4)));
89  }
90  }
91 #endif
92 
93 #if defined(BOTAN_HAS_CMAC)
94  if((req.algo_name() == "CMAC" || req.algo_name() == "OMAC") && req.arg_count() == 1)
95  {
96  // TODO: OpenSSL CMAC
97  if(provider.empty() || provider == "base")
98  {
99  if(auto bc = BlockCipher::create(req.arg(0)))
100  return std::unique_ptr<MessageAuthenticationCode>(new CMAC(bc.release()));
101  }
102  }
103 #endif
104 
105 
106 #if defined(BOTAN_HAS_CBC_MAC)
107  if(req.algo_name() == "CBC-MAC" && req.arg_count() == 1)
108  {
109  if(provider.empty() || provider == "base")
110  {
111  if(auto bc = BlockCipher::create(req.arg(0)))
112  return std::unique_ptr<MessageAuthenticationCode>(new CBC_MAC(bc.release()));
113  }
114  }
115 #endif
116 
117 #if defined(BOTAN_HAS_ANSI_X919_MAC)
118  if(req.algo_name() == "X9.19-MAC")
119  {
120  if(provider.empty() || provider == "base")
121  {
122  return std::unique_ptr<MessageAuthenticationCode>(new ANSI_X919_MAC);
123  }
124  }
125 #endif
126 
127  BOTAN_UNUSED(req);
129 
130  return nullptr;
131  }
virtual std::string provider() const
Definition: mac.h:135
static std::unique_ptr< HashFunction > create(const std::string &algo_spec, const std::string &provider="")
Definition: hash.cpp:106
#define BOTAN_UNUSED(...)
Definition: assert.h:130
static std::unique_ptr< BlockCipher > create(const std::string &algo_spec, const std::string &provider="")

◆ create_or_throw()

std::unique_ptr< MessageAuthenticationCode > Botan::MessageAuthenticationCode::create_or_throw ( const std::string &  algo_spec,
const std::string &  provider = "" 
)
static

Definition at line 141 of file mac.cpp.

References create(), and provider().

Referenced by Botan::AutoSeeded_RNG::AutoSeeded_RNG(), Botan::ChaCha_RNG::ChaCha_RNG(), Botan::TLS::Connection_Cipher_State::Connection_Cipher_State(), Botan::ECIES_System_Params::create_mac(), Botan::CryptoBox::decrypt_bin(), Botan::CryptoBox::encrypt(), Botan::Encrypted_PSK_Database::Encrypted_PSK_Database(), Botan::FPE_FE1::FPE_FE1(), Botan::hkdf_expand_label(), Botan::HOTP::HOTP(), and Botan::scrypt().

143  {
144  if(auto mac = MessageAuthenticationCode::create(algo, provider))
145  {
146  return mac;
147  }
148  throw Lookup_Error("MAC", algo, provider);
149  }
static std::unique_ptr< MessageAuthenticationCode > create(const std::string &algo_spec, const std::string &provider="")
Definition: mac.cpp:46
virtual std::string provider() const
Definition: mac.h:135

◆ final() [1/3]

void Botan::Buffered_Computation::final ( uint8_t  out[])
inlineinherited

Complete the computation and retrieve the final result.

Parameters
outThe byte array to be filled with the result. Must be of length output_length()

Definition at line 89 of file buf_comp.h.

Referenced by botan_mac_final(), Botan::ed25519_gen_keypair(), Botan::ed25519_sign(), Botan::ed25519_verify(), Botan::TLS::TLS_CBC_HMAC_AEAD_Encryption::finish(), Botan::TLS::TLS_CBC_HMAC_AEAD_Decryption::finish(), and Botan::pbkdf2().

89 { final_result(out); }

◆ final() [2/3]

secure_vector<uint8_t> Botan::Buffered_Computation::final ( )
inlineinherited

Complete the computation and retrieve the final result.

Returns
secure_vector holding the result

Definition at line 96 of file buf_comp.h.

97  {
98  secure_vector<uint8_t> output(output_length());
99  final_result(output.data());
100  return output;
101  }
virtual size_t output_length() const =0

◆ final() [3/3]

template<typename Alloc >
void Botan::Buffered_Computation::final ( std::vector< uint8_t, Alloc > &  out)
inlineinherited

Definition at line 111 of file buf_comp.h.

112  {
113  out.resize(output_length());
114  final_result(out.data());
115  }
virtual size_t output_length() const =0

◆ final_stdvec()

std::vector<uint8_t> Botan::Buffered_Computation::final_stdvec ( )
inlineinherited

Definition at line 103 of file buf_comp.h.

104  {
105  std::vector<uint8_t> output(output_length());
106  final_result(output.data());
107  return output;
108  }
virtual size_t output_length() const =0

◆ key_spec()

virtual Key_Length_Specification Botan::SymmetricAlgorithm::key_spec ( ) const
pure virtualinherited

◆ maximum_keylength()

size_t Botan::SymmetricAlgorithm::maximum_keylength ( ) const
inlineinherited
Returns
minimum allowed key length

Definition at line 38 of file sym_algo.h.

39  {
40  return key_spec().maximum_keylength();
41  }
size_t maximum_keylength() const
Definition: key_spec.h:69
virtual Key_Length_Specification key_spec() const =0

◆ minimum_keylength()

size_t Botan::SymmetricAlgorithm::minimum_keylength ( ) const
inlineinherited
Returns
maximum allowed key length

Definition at line 46 of file sym_algo.h.

47  {
48  return key_spec().minimum_keylength();
49  }
virtual Key_Length_Specification key_spec() const =0
size_t minimum_keylength() const
Definition: key_spec.h:61

◆ name()

virtual std::string Botan::SymmetricAlgorithm::name ( ) const
pure virtualinherited

◆ output_length()

virtual size_t Botan::Buffered_Computation::output_length ( ) const
pure virtualinherited

◆ process() [1/4]

secure_vector<uint8_t> Botan::Buffered_Computation::process ( const uint8_t  in[],
size_t  length 
)
inlineinherited

Update and finalize computation. Does the same as calling update() and final() consecutively.

Parameters
inthe input to process as a byte array
lengththe length of the byte array
Returns
the result of the call to final()

Definition at line 124 of file buf_comp.h.

125  {
126  add_data(in, length);
127  return final();
128  }

◆ process() [2/4]

secure_vector<uint8_t> Botan::Buffered_Computation::process ( const secure_vector< uint8_t > &  in)
inlineinherited

Update and finalize computation. Does the same as calling update() and final() consecutively.

Parameters
inthe input to process
Returns
the result of the call to final()

Definition at line 136 of file buf_comp.h.

137  {
138  add_data(in.data(), in.size());
139  return final();
140  }

◆ process() [3/4]

secure_vector<uint8_t> Botan::Buffered_Computation::process ( const std::vector< uint8_t > &  in)
inlineinherited

Update and finalize computation. Does the same as calling update() and final() consecutively.

Parameters
inthe input to process
Returns
the result of the call to final()

Definition at line 148 of file buf_comp.h.

149  {
150  add_data(in.data(), in.size());
151  return final();
152  }

◆ process() [4/4]

secure_vector<uint8_t> Botan::Buffered_Computation::process ( const std::string &  in)
inlineinherited

Update and finalize computation. Does the same as calling update() and final() consecutively.

Parameters
inthe input to process as a string
Returns
the result of the call to final()

Definition at line 160 of file buf_comp.h.

161  {
162  update(in);
163  return final();
164  }
void update(const uint8_t in[], size_t length)
Definition: buf_comp.h:34

◆ provider()

virtual std::string Botan::MessageAuthenticationCode::provider ( ) const
inlinevirtual
Returns
provider information about this implementation. Default is "base", might also return "sse2", "avx2", "openssl", or some other arbitrary string.

Definition at line 135 of file mac.h.

Referenced by create(), and create_or_throw().

135 { return "base"; }

◆ providers()

std::vector< std::string > Botan::MessageAuthenticationCode::providers ( const std::string &  algo_spec)
static
Returns
list of available providers for this algorithm, empty if not available

Definition at line 134 of file mac.cpp.

135  {
136  return probe_providers_of<MessageAuthenticationCode>(algo_spec, {"base", "openssl"});
137  }

◆ set_key() [1/3]

void Botan::SymmetricAlgorithm::set_key ( const SymmetricKey key)
inlineinherited

Set the symmetric key of this object.

Parameters
keythe SymmetricKey to be set.

Definition at line 65 of file sym_algo.h.

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

Referenced by Botan::aont_package(), Botan::aont_unpackage(), botan_block_cipher_set_key(), botan_mac_set_key(), Botan::FPE::fe1_decrypt(), Botan::FPE::fe1_encrypt(), and Botan::pbkdf2().

66  {
67  set_key(key.begin(), key.length());
68  }
void set_key(const SymmetricKey &key)
Definition: sym_algo.h:65

◆ set_key() [2/3]

template<typename Alloc >
void Botan::SymmetricAlgorithm::set_key ( const std::vector< uint8_t, Alloc > &  key)
inlineinherited

Definition at line 71 of file sym_algo.h.

72  {
73  set_key(key.data(), key.size());
74  }
void set_key(const SymmetricKey &key)
Definition: sym_algo.h:65

◆ set_key() [3/3]

void Botan::SymmetricAlgorithm::set_key ( const uint8_t  key[],
size_t  length 
)
inherited

Set the symmetric key of this object.

Parameters
keythe to be set as a byte array.
lengthin bytes of key param

Definition at line 17 of file sym_algo.cpp.

References Botan::SymmetricAlgorithm::name(), and Botan::SymmetricAlgorithm::valid_keylength().

18  {
19  if(!valid_keylength(length))
20  throw Invalid_Key_Length(name(), length);
21  key_schedule(key, length);
22  }
bool valid_keylength(size_t length) const
Definition: sym_algo.h:56
virtual std::string name() const =0

◆ start() [1/3]

template<typename Alloc >
void Botan::MessageAuthenticationCode::start ( const std::vector< uint8_t, Alloc > &  nonce)
inline

Begin processing a message with a nonce

Parameters
noncethe per message nonce

Definition at line 75 of file mac.h.

76  {
77  start_msg(nonce.data(), nonce.size());
78  }
virtual void start_msg(const uint8_t nonce[], size_t nonce_len)
Definition: mac.cpp:151

◆ start() [2/3]

void Botan::MessageAuthenticationCode::start ( const uint8_t  nonce[],
size_t  nonce_len 
)
inline

Begin processing a message.

Parameters
noncethe per message nonce
nonce_lenlength of nonce

Definition at line 85 of file mac.h.

86  {
87  start_msg(nonce, nonce_len);
88  }
virtual void start_msg(const uint8_t nonce[], size_t nonce_len)
Definition: mac.cpp:151

◆ start() [3/3]

void Botan::MessageAuthenticationCode::start ( )
inline

Begin processing a message.

Definition at line 93 of file mac.h.

94  {
95  return start_msg(nullptr, 0);
96  }
virtual void start_msg(const uint8_t nonce[], size_t nonce_len)
Definition: mac.cpp:151

◆ start_msg()

void Botan::MessageAuthenticationCode::start_msg ( const uint8_t  nonce[],
size_t  nonce_len 
)
virtual

Prepare for processing a message under the specified nonce

Most MACs neither require nor support a nonce; for these algorithms calling start_msg is optional and calling it with anything other than an empty string is an error. One MAC which requires a per-message nonce be specified is GMAC.

Parameters
noncethe message nonce bytes
nonce_lenthe size of len in bytes Default implementation simply rejects all non-empty nonces since most hash/MAC algorithms do not support randomization

Definition at line 151 of file mac.cpp.

References BOTAN_UNUSED, and Botan::SymmetricAlgorithm::name().

152  {
153  BOTAN_UNUSED(nonce);
154  if(nonce_len > 0)
155  throw Invalid_IV_Length(name(), nonce_len);
156  }
virtual std::string name() const =0
#define BOTAN_UNUSED(...)
Definition: assert.h:130

◆ update() [1/5]

void Botan::Buffered_Computation::update ( const uint8_t  in[],
size_t  length 
)
inlineinherited

Add new input to process.

Parameters
inthe input to process as a byte array
lengthof param in in bytes

Definition at line 34 of file buf_comp.h.

Referenced by botan_mac_update(), Botan::ed25519_gen_keypair(), Botan::ed25519_sign(), Botan::ed25519_verify(), Botan::TLS::TLS_CBC_HMAC_AEAD_Encryption::finish(), Botan::TLS::TLS_CBC_HMAC_AEAD_Decryption::finish(), and Botan::pbkdf2().

34 { add_data(in, length); }

◆ update() [2/5]

void Botan::Buffered_Computation::update ( const secure_vector< uint8_t > &  in)
inlineinherited

Add new input to process.

Parameters
inthe input to process as a secure_vector

Definition at line 40 of file buf_comp.h.

41  {
42  add_data(in.data(), in.size());
43  }

◆ update() [3/5]

void Botan::Buffered_Computation::update ( const std::vector< uint8_t > &  in)
inlineinherited

Add new input to process.

Parameters
inthe input to process as a std::vector

Definition at line 49 of file buf_comp.h.

50  {
51  add_data(in.data(), in.size());
52  }

◆ update() [4/5]

void Botan::Buffered_Computation::update ( const std::string &  str)
inlineinherited

Add new input to process.

Parameters
strthe input to process as a std::string. Will be interpreted as a byte array based on the strings encoding.

Definition at line 72 of file buf_comp.h.

References Botan::cast_char_ptr_to_uint8().

73  {
74  add_data(cast_char_ptr_to_uint8(str.data()), str.size());
75  }
const uint8_t * cast_char_ptr_to_uint8(const char *s)
Definition: mem_ops.h:131

◆ update() [5/5]

void Botan::Buffered_Computation::update ( uint8_t  in)
inlineinherited

Process a single byte.

Parameters
inthe byte to process

Definition at line 81 of file buf_comp.h.

81 { add_data(&in, 1); }

◆ update_be()

template<typename T >
void Botan::Buffered_Computation::update_be ( const T  in)
inlineinherited

Add an integer in big-endian order

Parameters
inthe value

Definition at line 58 of file buf_comp.h.

References Botan::get_byte(), and T.

Referenced by Botan::pbkdf2().

59  {
60  for(size_t i = 0; i != sizeof(T); ++i)
61  {
62  uint8_t b = get_byte(i, in);
63  add_data(&b, 1);
64  }
65  }
fe T
Definition: ge.cpp:37
uint8_t get_byte(size_t byte_num, T input)
Definition: loadstor.h:39

◆ valid_keylength()

bool Botan::SymmetricAlgorithm::valid_keylength ( size_t  length) const
inlineinherited

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

Parameters
lengththe key length to be checked.
Returns
true if the key length is valid.

Definition at line 56 of file sym_algo.h.

Referenced by Botan::aont_package(), Botan::aont_unpackage(), and Botan::SymmetricAlgorithm::set_key().

57  {
58  return key_spec().valid_keylength(length);
59  }
bool valid_keylength(size_t length) const
Definition: key_spec.h:51
virtual Key_Length_Specification key_spec() const =0

◆ verify_key_set()

void Botan::SymmetricAlgorithm::verify_key_set ( bool  cond) const
inlineprotectedinherited

Definition at line 89 of file sym_algo.h.

Referenced by Botan::Salsa20::cipher(), Botan::CTR_BE::cipher(), Botan::RC4::cipher(), Botan::SHAKE_128_Cipher::cipher(), Botan::ChaCha::cipher(), Botan::Camellia_128::decrypt_n(), Botan::CAST_256::decrypt_n(), Botan::KASUMI::decrypt_n(), Botan::CAST_128::decrypt_n(), Botan::MISTY1::decrypt_n(), Botan::Blowfish::decrypt_n(), Botan::SEED::decrypt_n(), Botan::Noekeon::decrypt_n(), Botan::SHACAL2::decrypt_n(), Botan::DES::decrypt_n(), Botan::XTEA::decrypt_n(), Botan::Threefish_512::decrypt_n(), Botan::Twofish::decrypt_n(), Botan::SM4::decrypt_n(), Botan::DESX::decrypt_n(), Botan::AES_128::decrypt_n(), Botan::IDEA::decrypt_n(), Botan::Serpent::decrypt_n(), Botan::Lion::decrypt_n(), Botan::ARIA_128::decrypt_n(), Botan::Camellia_192::decrypt_n(), Botan::TripleDES::decrypt_n(), Botan::ARIA_192::decrypt_n(), Botan::Camellia_256::decrypt_n(), Botan::GOST_28147_89::decrypt_n(), Botan::AES_192::decrypt_n(), Botan::ARIA_256::decrypt_n(), Botan::AES_256::decrypt_n(), Botan::IDEA::encrypt_n(), Botan::KASUMI::encrypt_n(), Botan::SEED::encrypt_n(), Botan::Camellia_128::encrypt_n(), Botan::AES_128::encrypt_n(), Botan::Threefish_512::encrypt_n(), Botan::SHACAL2::encrypt_n(), Botan::Twofish::encrypt_n(), Botan::CAST_128::encrypt_n(), Botan::Noekeon::encrypt_n(), Botan::Blowfish::encrypt_n(), Botan::MISTY1::encrypt_n(), Botan::XTEA::encrypt_n(), Botan::DES::encrypt_n(), Botan::CAST_256::encrypt_n(), Botan::DESX::encrypt_n(), Botan::SM4::encrypt_n(), Botan::Serpent::encrypt_n(), Botan::Lion::encrypt_n(), Botan::ARIA_128::encrypt_n(), Botan::Camellia_192::encrypt_n(), Botan::TripleDES::encrypt_n(), Botan::ARIA_192::encrypt_n(), Botan::Camellia_256::encrypt_n(), Botan::GOST_28147_89::encrypt_n(), Botan::AES_192::encrypt_n(), Botan::ARIA_256::encrypt_n(), Botan::AES_256::encrypt_n(), Botan::Salsa20::seek(), Botan::CTR_BE::seek(), Botan::ChaCha::seek(), and Botan::GHASH::update_associated_data().

90  {
91  if(cond == false)
92  throw_key_not_set_error();
93  }

◆ verify_mac() [1/3]

bool Botan::MessageAuthenticationCode::verify_mac ( const uint8_t  in[],
size_t  length 
)
virtual

Verify a MAC.

Parameters
inthe MAC to verify as a byte array
lengththe length of param in
Returns
true if the MAC is valid, false otherwise

Definition at line 161 of file mac.cpp.

References Botan::constant_time_compare().

162  {
163  secure_vector<uint8_t> our_mac = final();
164 
165  if(our_mac.size() != length)
166  return false;
167 
168  return constant_time_compare(our_mac.data(), mac, length);
169  }
bool constant_time_compare(const uint8_t x[], const uint8_t y[], size_t len)
Definition: mem_ops.cpp:51

◆ verify_mac() [2/3]

virtual bool Botan::MessageAuthenticationCode::verify_mac ( const std::vector< uint8_t > &  in)
inlinevirtual

Verify a MAC.

Parameters
inthe MAC to verify as a byte array
Returns
true if the MAC is valid, false otherwise

Definition at line 111 of file mac.h.

112  {
113  return verify_mac(in.data(), in.size());
114  }
virtual bool verify_mac(const uint8_t in[], size_t length)
Definition: mac.cpp:161

◆ verify_mac() [3/3]

virtual bool Botan::MessageAuthenticationCode::verify_mac ( const secure_vector< uint8_t > &  in)
inlinevirtual

Verify a MAC.

Parameters
inthe MAC to verify as a byte array
Returns
true if the MAC is valid, false otherwise

Definition at line 121 of file mac.h.

122  {
123  return verify_mac(in.data(), in.size());
124  }
virtual bool verify_mac(const uint8_t in[], size_t length)
Definition: mac.cpp:161

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