Botan  1.10.9
Public Member Functions | Protected Member Functions | List of all members
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 (MessageAuthenticationCode *mac_obj, size_t out_len=0)
 
 MAC_Filter (MessageAuthenticationCode *mac_obj, const SymmetricKey &key, size_t out_len=0)
 
 MAC_Filter (const std::string &mac, size_t len=0)
 
 MAC_Filter (const std::string &mac, const SymmetricKey &key, size_t 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 (const byte in[], size_t length)
 
void send (byte in)
 
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

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.

References mac.

173  : OUTPUT_LENGTH(out_len)
174  {
175  mac = mac_obj;
176  }
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.

References mac.

189  : OUTPUT_LENGTH(out_len)
190  {
191  mac = mac_obj;
192  mac->set_key(key);
193  }
void set_key(const SymmetricKey &key)
Definition: sym_algo.h:60
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.

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

105  :
106  OUTPUT_LENGTH(len)
107  {
108  Algorithm_Factory& af = global_state().algorithm_factory();
109  mac = af.make_mac(mac_name);
110  }
Algorithm_Factory & algorithm_factory() const
Definition: libstate.cpp:173
Library_State & global_state()
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.

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

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  }
Algorithm_Factory & algorithm_factory() const
Definition: libstate.cpp:173
void set_key(const SymmetricKey &key)
Definition: sym_algo.h:60
Library_State & global_state()
Botan::MAC_Filter::~MAC_Filter ( )
inline

Definition at line 217 of file filters.h.

References mac.

217 { delete mac; }

Member Function Documentation

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::SecureQueue, and Botan::DataSink.

Definition at line 50 of file filter.h.

50 { return true; }
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.

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

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
void final(byte out[])
Definition: buf_comp.h:80
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.

References mac.

148 { return mac->name(); }
virtual std::string name() const =0
void Botan::Filter::send ( const byte  in[],
size_t  length 
)
protectedinherited
Parameters
insome input for the filter
lengththe length of in

Definition at line 28 of file filter.cpp.

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

Referenced by Botan::PK_Encryptor_Filter::end_msg(), Botan::Zlib_Compression::end_msg(), Botan::Bzip_Compression::end_msg(), Botan::Hex_Encoder::end_msg(), Botan::Base64_Encoder::end_msg(), Botan::PK_Decryptor_Filter::end_msg(), Botan::Bzip_Decompression::end_msg(), Botan::Zlib_Decompression::end_msg(), Botan::PK_Signer_Filter::end_msg(), Botan::Hex_Decoder::end_msg(), Botan::Base64_Decoder::end_msg(), Botan::PK_Verifier_Filter::end_msg(), Botan::Hash_Filter::end_msg(), end_msg(), Botan::Bzip_Compression::flush(), Botan::Zlib_Compression::flush(), Botan::Zlib_Compression::write(), Botan::Bzip_Compression::write(), Botan::StreamCipher_Filter::write(), Botan::Bzip_Decompression::write(), Botan::Zlib_Decompression::write(), Botan::Hex_Decoder::write(), and Botan::Base64_Decoder::write().

29  {
30  bool nothing_attached = true;
31  for(size_t j = 0; j != total_ports(); ++j)
32  if(next[j])
33  {
34  if(write_queue.size())
35  next[j]->write(&write_queue[0], write_queue.size());
36  next[j]->write(input, length);
37  nothing_attached = false;
38  }
39 
40  if(nothing_attached)
41  write_queue += std::make_pair(input, length);
42  else
43  write_queue.clear();
44  }
virtual void write(const byte input[], size_t length)=0
size_t size() const
Definition: secmem.h:29
void Botan::Filter::send ( byte  in)
inlineprotectedinherited
Parameters
insome input for the filter

Definition at line 63 of file filter.h.

References Botan::Filter::send().

Referenced by Botan::Filter::send().

63 { send(&in, 1); }
void send(const byte in[], size_t length)
Definition: filter.cpp:28
void Botan::Filter::send ( const MemoryRegion< byte > &  in)
inlineprotectedinherited
Parameters
insome input for the filter

Definition at line 68 of file filter.h.

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

Referenced by Botan::Filter::send().

68 { send(&in[0], in.size()); }
void send(const byte in[], size_t length)
Definition: filter.cpp:28
size_t size() const
Definition: secmem.h:29
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  }
void send(const byte in[], size_t length)
Definition: filter.cpp:28
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::XTS_Decryption, Botan::CTS_Decryption, Botan::CFB_Decryption, Botan::StreamCipher_Filter, Botan::CBC_Encryption, Botan::EAX_Base, Botan::XTS_Encryption, Botan::CFB_Encryption, and Botan::CTS_Encryption.

Definition at line 13 of file basefilt.cpp.

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

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

14  {
15  if(iv.length() != 0)
16  throw Invalid_IV_Length(name(), iv.length());
17  }
virtual std::string name() const =0
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.

References mac.

154 { mac->set_key(key); }
void set_key(const SymmetricKey &key)
Definition: sym_algo.h:60
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::Zlib_Decompression, Botan::EAX_Base, Botan::Bzip_Decompression, Botan::PBE_PKCS5v20, Botan::PBE_PKCS5v15, Botan::Bzip_Compression, and Botan::Zlib_Compression.

Definition at line 38 of file filter.h.

38 {}
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::XTS_Decryption, Botan::CTS_Decryption, Botan::CFB_Decryption, Botan::StreamCipher_Filter, Botan::EAX_Base, Botan::CBC_Encryption, Botan::CFB_Encryption, Botan::CTS_Encryption, and Botan::XTS_Encryption.

Definition at line 48 of file key_filt.h.

Referenced by Botan::algorithm_kat().

49  { return (length == 0); }
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.

References mac.

162  { return mac->valid_keylength(length); }
bool valid_keylength(size_t length) const
Definition: sym_algo.h:51
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.

References mac.

145 { mac->update(input, len); }
void update(const byte in[], size_t length)
Definition: buf_comp.h:33

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