Botan 1.10.17
Botan::MAC_Filter Class Reference

#include <filters.h>

Inheritance diagram for Botan::MAC_Filter:
Botan::Keyed_Filter Botan::Filter

Public Member Functions

virtual bool attachable ()
void end_msg ()
 MAC_Filter (const std::string &mac, const SymmetricKey &key, size_t len=0)
 MAC_Filter (const std::string &mac, size_t len=0)
 MAC_Filter (MessageAuthenticationCode *mac_obj, const SymmetricKey &key, size_t out_len=0)
 MAC_Filter (MessageAuthenticationCode *mac_obj, size_t out_len=0)
std::string name () const
virtual void set_iv (const InitializationVector &iv)
void set_key (const SymmetricKey &key)
virtual void start_msg ()
virtual bool valid_iv_length (size_t length) const
bool valid_keylength (size_t length) const
void write (const byte input[], size_t len)
 ~MAC_Filter ()

Protected Member Functions

void send (byte in)
void send (const byte in[], size_t length)
void send (const MemoryRegion< byte > &in)
void send (const MemoryRegion< byte > &in, size_t length)

Detailed Description

MessageAuthenticationCode Filter.

Definition at line 142 of file filters.h.

Constructor & Destructor Documentation

◆ MAC_Filter() [1/4]

Botan::MAC_Filter::MAC_Filter ( MessageAuthenticationCode * mac_obj,
size_t out_len = 0 )
inline

Construct a MAC filter. The MAC key will be left empty.

Parameters
mac_objthe MAC to use
out_lenthe output length of this filter. Leave the default value 0 if you want to use the full output of the MAC. Otherwise, specify a smaller value here so that the output of the MAC will be cut off.

Definition at line 172 of file filters.h.

173 : OUTPUT_LENGTH(out_len)
174 {
175 mac = mac_obj;
176 }

Referenced by Botan::algorithm_kat(), Botan::CryptoBox::decrypt(), and Botan::CryptoBox::encrypt().

◆ MAC_Filter() [2/4]

Botan::MAC_Filter::MAC_Filter ( MessageAuthenticationCode * mac_obj,
const SymmetricKey & key,
size_t out_len = 0 )
inline

Construct a MAC filter.

Parameters
mac_objthe MAC to use
keythe MAC key to use
out_lenthe output length of this filter. Leave the default value 0 if you want to use the full output of the MAC. Otherwise, specify a smaller value here so that the output of the MAC will be cut off.

Definition at line 187 of file filters.h.

189 : OUTPUT_LENGTH(out_len)
190 {
191 mac = mac_obj;
192 mac->set_key(key);
193 }

References Botan::SymmetricAlgorithm::set_key().

◆ MAC_Filter() [3/4]

Botan::MAC_Filter::MAC_Filter ( const std::string & mac,
size_t len = 0 )

Construct a MAC filter. The MAC key will be left empty.

Parameters
macthe name of the MAC to use
lenthe output length of this filter. Leave the default value 0 if you want to use the full output of the MAC. Otherwise, specify a smaller value here so that the output of the MAC will be cut off.

Definition at line 105 of file algo_filt.cpp.

105 :
106 OUTPUT_LENGTH(len)
107 {
108 Algorithm_Factory& af = global_state().algorithm_factory();
109 mac = af.make_mac(mac_name);
110 }
MessageAuthenticationCode * make_mac(const std::string &algo_spec, const std::string &provider="")
Algorithm_Factory & algorithm_factory() const
Definition libstate.cpp:173
Library_State & global_state()

References Botan::Library_State::algorithm_factory(), Botan::global_state(), and Botan::Algorithm_Factory::make_mac().

◆ MAC_Filter() [4/4]

Botan::MAC_Filter::MAC_Filter ( const std::string & mac,
const SymmetricKey & key,
size_t len = 0 )

Construct a MAC filter.

Parameters
macthe name of the MAC to use
keythe MAC key to use
lenthe output length of this filter. Leave the default value 0 if you want to use the full output of the MAC. Otherwise, specify a smaller value here so that the output of the MAC will be cut off.

Definition at line 115 of file algo_filt.cpp.

116 : OUTPUT_LENGTH(len)
117 {
118 Algorithm_Factory& af = global_state().algorithm_factory();
119 mac = af.make_mac(mac_name);
120 mac->set_key(key);
121 }
void set_key(const SymmetricKey &key)
Definition sym_algo.h:60

References Botan::Library_State::algorithm_factory(), Botan::global_state(), Botan::Algorithm_Factory::make_mac(), and Botan::SymmetricAlgorithm::set_key().

◆ ~MAC_Filter()

Botan::MAC_Filter::~MAC_Filter ( )
inline

Definition at line 217 of file filters.h.

217{ delete mac; }

Member Function Documentation

◆ attachable()

virtual bool Botan::Filter::attachable ( )
inlinevirtualinherited

Check whether this filter is an attachable filter.

Returns
true if this filter is attachable, false otherwise

Reimplemented in Botan::DataSink, and Botan::SecureQueue.

Definition at line 50 of file filter.h.

50{ return true; }

◆ end_msg()

void Botan::MAC_Filter::end_msg ( )
virtual

Notify that the current message is finished; flush buffers and do end-of-message processing (if any).

Reimplemented from Botan::Filter.

Definition at line 126 of file algo_filt.cpp.

127 {
128 SecureVector<byte> output = mac->final();
129 if(OUTPUT_LENGTH)
130 send(output, std::min<size_t>(OUTPUT_LENGTH, output.size()));
131 else
132 send(output);
133 }
void send(const byte in[], size_t length)
Definition filter.cpp:28

References Botan::Filter::send(), and Botan::MemoryRegion< T >::size().

◆ name()

std::string Botan::MAC_Filter::name ( ) const
inlinevirtual
Returns
descriptive name for this filter

Implements Botan::Filter.

Definition at line 148 of file filters.h.

148{ return mac->name(); }

◆ send() [1/4]

void Botan::Filter::send ( byte in)
inlineprotectedinherited
Parameters
insome input for the filter

Definition at line 63 of file filter.h.

63{ send(&in, 1); }

References send().

Referenced by send().

◆ send() [2/4]

void Botan::Filter::send ( const byte in[],
size_t length )
protectedinherited

◆ send() [3/4]

void Botan::Filter::send ( const MemoryRegion< byte > & in)
inlineprotectedinherited
Parameters
insome input for the filter

Definition at line 68 of file filter.h.

68{ send(&in[0], in.size()); }

References send(), and Botan::MemoryRegion< T >::size().

Referenced by send().

◆ send() [4/4]

void Botan::Filter::send ( const MemoryRegion< byte > & in,
size_t length )
inlineprotectedinherited
Parameters
insome input for the filter
lengththe number of bytes of in to send

Definition at line 74 of file filter.h.

75 {
76 send(&in[0], length);
77 }

References send().

◆ set_iv()

void Botan::Keyed_Filter::set_iv ( const InitializationVector & iv)
virtualinherited

Set the initialization vector of this filter. Note: you should call set_iv() only after you have called set_key()

Parameters
ivthe initialization vector to use

Reimplemented in Botan::CBC_Decryption, Botan::CBC_Encryption, Botan::CFB_Decryption, Botan::CFB_Encryption, Botan::CTS_Decryption, Botan::CTS_Encryption, Botan::EAX_Base, Botan::StreamCipher_Filter, Botan::XTS_Decryption, and Botan::XTS_Encryption.

Definition at line 13 of file basefilt.cpp.

14 {
15 if(iv.length() != 0)
16 throw Invalid_IV_Length(name(), iv.length());
17 }
virtual std::string name() const =0
Invalid_IV_Length(const std::string &mode, size_t bad_len)
Definition exceptn.h:80

References Botan::Invalid_IV_Length::Invalid_IV_Length(), Botan::OctetString::length(), and Botan::Filter::name().

Referenced by Botan::algorithm_kat(), Botan::get_cipher(), and set_key().

◆ set_key()

void Botan::MAC_Filter::set_key ( const SymmetricKey & key)
inlinevirtual

Set the key of this filter.

Parameters
keythe key to set

Implements Botan::Keyed_Filter.

Definition at line 154 of file filters.h.

154{ mac->set_key(key); }

◆ start_msg()

virtual void Botan::Filter::start_msg ( )
inlinevirtualinherited

Start a new message. Must be closed by end_msg() before another message can be started.

Reimplemented in Botan::Bzip_Compression, Botan::Bzip_Decompression, Botan::EAX_Base, Botan::PBE_PKCS5v15, Botan::PBE_PKCS5v20, Botan::Zlib_Compression, and Botan::Zlib_Decompression.

Definition at line 38 of file filter.h.

38{}

◆ valid_iv_length()

virtual bool Botan::Keyed_Filter::valid_iv_length ( size_t length) const
inlinevirtualinherited

Check whether an IV length is valid for this filter

Parameters
lengththe IV length to be checked for validity
Returns
true if the IV length is valid, false otherwise

Reimplemented in Botan::CBC_Decryption, Botan::CBC_Encryption, Botan::CFB_Decryption, Botan::CFB_Encryption, Botan::CTS_Decryption, Botan::CTS_Encryption, Botan::EAX_Base, Botan::StreamCipher_Filter, Botan::XTS_Decryption, and Botan::XTS_Encryption.

Definition at line 48 of file key_filt.h.

49 { return (length == 0); }

Referenced by Botan::algorithm_kat().

◆ valid_keylength()

bool Botan::MAC_Filter::valid_keylength ( size_t length) const
inlinevirtual

Check whether a key length is valid for this filter.

Parameters
lengththe key length to be checked for validity
Returns
true if the key length is valid, false otherwise

Implements Botan::Keyed_Filter.

Definition at line 161 of file filters.h.

162 { return mac->valid_keylength(length); }

◆ write()

void Botan::MAC_Filter::write ( const byte input[],
size_t length )
inlinevirtual

Write a portion of a message to this filter.

Parameters
inputthe input as a byte array
lengththe length of the byte array input

Implements Botan::Filter.

Definition at line 145 of file filters.h.

145{ mac->update(input, len); }

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