Botan  1.10.9
Public Member Functions | Protected Member Functions | List of all members
Botan::StreamCipher_Filter Class Reference

#include <filters.h>

Inheritance diagram for Botan::StreamCipher_Filter:
Botan::Keyed_Filter Botan::Filter

Public Member Functions

virtual bool attachable ()
 
virtual void end_msg ()
 
std::string name () const
 
void set_iv (const InitializationVector &iv)
 
void set_key (const SymmetricKey &key)
 
virtual void start_msg ()
 
 StreamCipher_Filter (StreamCipher *cipher_obj)
 
 StreamCipher_Filter (StreamCipher *cipher_obj, const SymmetricKey &key)
 
 StreamCipher_Filter (const std::string &cipher)
 
 StreamCipher_Filter (const std::string &cipher, const SymmetricKey &key)
 
bool valid_iv_length (size_t iv_len) const
 
bool valid_keylength (size_t length) const
 
void write (const byte input[], size_t input_len)
 
 ~StreamCipher_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

Stream Cipher Filter.

Definition at line 33 of file filters.h.

Constructor & Destructor Documentation

Botan::StreamCipher_Filter::StreamCipher_Filter ( StreamCipher cipher_obj)

Construct a stream cipher filter.

Parameters
cipher_obja cipher object to use

Definition at line 17 of file algo_filt.cpp.

17  :
18  buffer(DEFAULT_BUFFERSIZE)
19  {
20  cipher = stream_cipher;
21  }
Botan::StreamCipher_Filter::StreamCipher_Filter ( StreamCipher cipher_obj,
const SymmetricKey key 
)

Construct a stream cipher filter.

Parameters
cipher_obja cipher object to use
keythe key to use inside this filter

Definition at line 26 of file algo_filt.cpp.

References Botan::SymmetricAlgorithm::set_key().

27  :
28  buffer(DEFAULT_BUFFERSIZE)
29  {
30  cipher = stream_cipher;
31  cipher->set_key(key);
32  }
void set_key(const SymmetricKey &key)
Definition: sym_algo.h:60
Botan::StreamCipher_Filter::StreamCipher_Filter ( const std::string &  cipher)

Construct a stream cipher filter.

Parameters
cipherthe name of the desired cipher

Definition at line 37 of file algo_filt.cpp.

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

37  :
38  buffer(DEFAULT_BUFFERSIZE)
39  {
40  Algorithm_Factory& af = global_state().algorithm_factory();
41  cipher = af.make_stream_cipher(sc_name);
42  }
Algorithm_Factory & algorithm_factory() const
Definition: libstate.cpp:173
Library_State & global_state()
Botan::StreamCipher_Filter::StreamCipher_Filter ( const std::string &  cipher,
const SymmetricKey key 
)

Construct a stream cipher filter.

Parameters
cipherthe name of the desired cipher
keythe key to use inside this filter

Definition at line 47 of file algo_filt.cpp.

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

48  :
49  buffer(DEFAULT_BUFFERSIZE)
50  {
51  Algorithm_Factory& af = global_state().algorithm_factory();
52  cipher = af.make_stream_cipher(sc_name);
53  cipher->set_key(key);
54  }
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::StreamCipher_Filter::~StreamCipher_Filter ( )
inline

Definition at line 95 of file filters.h.

95 { delete cipher; }

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; }
virtual void Botan::Filter::end_msg ( )
inlinevirtualinherited
std::string Botan::StreamCipher_Filter::name ( ) const
inlinevirtual
Returns
descriptive name for this filter

Implements Botan::Filter.

Definition at line 37 of file filters.h.

37 { return cipher->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(), Botan::MAC_Filter::end_msg(), Botan::Bzip_Compression::flush(), Botan::Zlib_Compression::flush(), Botan::Bzip_Compression::write(), Botan::Zlib_Compression::write(), 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::StreamCipher_Filter::set_iv ( const InitializationVector iv)
virtual

Set the initialization vector for this filter.

Parameters
ivthe initialization vector to set

Reimplemented from Botan::Keyed_Filter.

Definition at line 59 of file algo_filt.cpp.

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

60  {
61  cipher->set_iv(iv.begin(), iv.length());
62  }
virtual void set_iv(const byte iv[], size_t iv_len)
void Botan::StreamCipher_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 59 of file filters.h.

59 { cipher->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 {}
bool Botan::StreamCipher_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 from Botan::Keyed_Filter.

Definition at line 46 of file filters.h.

47  { return cipher->valid_iv_length(iv_len); }
virtual bool valid_iv_length(size_t iv_len) const
bool Botan::StreamCipher_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 66 of file filters.h.

67  { return cipher->valid_keylength(length); }
bool valid_keylength(size_t length) const
Definition: sym_algo.h:51
void Botan::StreamCipher_Filter::write ( const byte  input[],
size_t  input_len 
)
virtual

Write input data

Parameters
inputdata
input_lenlength of input in bytes

Implements Botan::Filter.

Definition at line 67 of file algo_filt.cpp.

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

68  {
69  while(length)
70  {
71  size_t copied = std::min<size_t>(length, buffer.size());
72  cipher->cipher(input, &buffer[0], copied);
73  send(buffer, copied);
74  input += copied;
75  length -= copied;
76  }
77  }
void send(const byte in[], size_t length)
Definition: filter.cpp:28
virtual void cipher(const byte in[], byte out[], size_t len)=0
size_t size() const
Definition: secmem.h:29

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