Botan 2.19.1
Crypto and TLS for C&
Public Member Functions | Protected Member Functions | List of all members
Botan::Keyed_Filter Class Referenceabstract

#include <filters.h>

Inheritance diagram for Botan::Keyed_Filter:
Botan::Filter Botan::Cipher_Mode_Filter

Public Member Functions

virtual bool attachable ()
 
virtual void end_msg ()
 
virtual Key_Length_Specification key_spec () const =0
 
virtual std::string name () const =0
 
virtual void set_iv (const InitializationVector &iv)
 
virtual void set_key (const SymmetricKey &key)=0
 
virtual void start_msg ()
 
virtual bool valid_iv_length (size_t length) const
 
bool valid_keylength (size_t length) const
 
virtual void write (const uint8_t input[], size_t length)=0
 

Protected Member Functions

template<typename Alloc >
void send (const std::vector< uint8_t, Alloc > &in)
 
template<typename Alloc >
void send (const std::vector< uint8_t, Alloc > &in, size_t length)
 
virtual void send (const uint8_t in[], size_t length)
 
void send (uint8_t in)
 

Detailed Description

This class represents keyed filters, i.e. filters that have to be fed with a key in order to function.

Definition at line 116 of file filters.h.

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 52 of file filter.h.

52{ return true; }

◆ end_msg()

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

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

Reimplemented in Botan::DataSink_Stream, Botan::Base64_Encoder, Botan::Base64_Decoder, Botan::Hex_Encoder, and Botan::Hex_Decoder.

Definition at line 46 of file filter.h.

46{ /* default empty */ }

◆ key_spec()

virtual Key_Length_Specification Botan::Keyed_Filter::key_spec ( ) const
pure virtual
Returns
object describing limits on key size

Implemented in Botan::Cipher_Mode_Filter.

◆ name()

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

◆ send() [1/4]

template<typename Alloc >
void Botan::Filter::send ( const std::vector< uint8_t, Alloc > &  in)
inlineprotectedinherited
Parameters
insome input for the filter

Definition at line 71 of file filter.h.

72 {
73 send(in.data(), in.size());
74 }
virtual void send(const uint8_t in[], size_t length)
Definition: filter.cpp:27

◆ send() [2/4]

template<typename Alloc >
void Botan::Filter::send ( const std::vector< uint8_t, Alloc > &  in,
size_t  length 
)
inlineprotectedinherited
Parameters
insome input for the filter
lengththe number of bytes of in to send

Definition at line 81 of file filter.h.

82 {
83 BOTAN_ASSERT_NOMSG(length <= in.size());
84 send(in.data(), length);
85 }
#define BOTAN_ASSERT_NOMSG(expr)
Definition: assert.h:68

References BOTAN_ASSERT_NOMSG.

◆ send() [3/4]

void Botan::Filter::send ( const uint8_t  in[],
size_t  length 
)
protectedvirtualinherited
Parameters
insome input for the filter
lengththe length of in

Definition at line 27 of file filter.cpp.

28 {
29 if(!length)
30 return;
31
32 bool nothing_attached = true;
33 for(size_t j = 0; j != total_ports(); ++j)
34 if(m_next[j])
35 {
36 if(m_write_queue.size())
37 m_next[j]->write(m_write_queue.data(), m_write_queue.size());
38 m_next[j]->write(input, length);
39 nothing_attached = false;
40 }
41
42 if(nothing_attached)
43 m_write_queue += std::make_pair(input, length);
44 else
45 m_write_queue.clear();
46 }
virtual void write(const uint8_t input[], size_t length)=0

References Botan::Filter::write().

Referenced by Botan::Base64_Encoder::end_msg(), Botan::Base64_Decoder::end_msg(), Botan::Hex_Encoder::end_msg(), Botan::Hex_Decoder::end_msg(), Botan::Base64_Decoder::write(), and Botan::Hex_Decoder::write().

◆ send() [4/4]

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

Definition at line 65 of file filter.h.

65{ send(&in, 1); }

References Botan::Filter::send().

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

◆ set_iv()

virtual void Botan::Keyed_Filter::set_iv ( const InitializationVector iv)
inlinevirtual

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::Cipher_Mode_Filter.

Definition at line 130 of file filters.h.

131 {
132 if(iv.length() != 0)
133 throw Invalid_IV_Length(name(), iv.length());
134 }
virtual std::string name() const =0

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

Referenced by Botan::get_cipher().

◆ set_key()

virtual void Botan::Keyed_Filter::set_key ( const SymmetricKey key)
pure virtual

Set the key of this filter

Parameters
keythe key to use

Implemented in Botan::Cipher_Mode_Filter.

Referenced by Botan::get_cipher().

◆ 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.

Definition at line 40 of file filter.h.

40{ /* default empty */ }

◆ valid_iv_length()

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

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::Cipher_Mode_Filter.

Definition at line 156 of file filters.h.

157 { return (length == 0); }

◆ valid_keylength()

bool Botan::Keyed_Filter::valid_keylength ( size_t  length) const
inline

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

Definition at line 141 of file filters.h.

142 {
143 return key_spec().valid_keylength(length);
144 }
bool valid_keylength(size_t length) const
Definition: sym_algo.h:52
virtual Key_Length_Specification key_spec() const =0

◆ write()

virtual void Botan::Filter::write ( const uint8_t  input[],
size_t  length 
)
pure virtualinherited

Write a portion of a message to this filter.

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

Implemented in Botan::Hex_Encoder, Botan::Base64_Encoder, Botan::Base64_Decoder, Botan::Chain, Botan::Fork, Botan::DataSink_Stream, Botan::Hex_Decoder, Botan::BitBucket, and Botan::SecureQueue.

Referenced by Botan::Filter::send(), and Botan::Pipe::write().


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