Botan 1.10.17
Botan::CFB_Decryption Class Reference

#include <cfb.h>

Inheritance diagram for Botan::CFB_Decryption:
Botan::Keyed_Filter Botan::Filter

Public Member Functions

virtual bool attachable ()
 CFB_Decryption (BlockCipher *cipher, const SymmetricKey &key, const InitializationVector &iv, size_t feedback=0)
 CFB_Decryption (BlockCipher *cipher, size_t feedback=0)
virtual void end_msg ()
std::string name () const
void set_iv (const InitializationVector &)
void set_key (const SymmetricKey &key)
virtual void start_msg ()
bool valid_iv_length (size_t iv_len) const
bool valid_keylength (size_t key_len) const
 ~CFB_Decryption ()

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

CFB Decryption

Definition at line 53 of file cfb.h.

Constructor & Destructor Documentation

◆ CFB_Decryption() [1/2]

Botan::CFB_Decryption::CFB_Decryption ( BlockCipher * cipher,
size_t feedback = 0 )

Definition at line 95 of file cfb.cpp.

96 {
97 cipher = ciph;
98 feedback = fback_bits ? fback_bits / 8: cipher->block_size();
99
100 buffer.resize(cipher->block_size());
101 state.resize(cipher->block_size());
102 position = 0;
103
104 if(feedback == 0 || fback_bits % 8 != 0 || feedback > cipher->block_size())
105 throw Invalid_Argument("CFB_Decryption: Invalid feedback size " +
106 to_string(fback_bits));
107 }
std::string to_string(u64bit n, size_t min_len)
Definition parsing.cpp:42
std::invalid_argument Invalid_Argument
Definition exceptn.h:20

References Botan::BlockCipher::block_size(), and Botan::to_string().

Referenced by Botan::get_cipher_mode().

◆ CFB_Decryption() [2/2]

Botan::CFB_Decryption::CFB_Decryption ( BlockCipher * cipher,
const SymmetricKey & key,
const InitializationVector & iv,
size_t feedback = 0 )

Definition at line 112 of file cfb.cpp.

116 {
117 cipher = ciph;
118 feedback = fback_bits ? fback_bits / 8: cipher->block_size();
119
120 buffer.resize(cipher->block_size());
121 state.resize(cipher->block_size());
122 position = 0;
123
124 if(feedback == 0 || fback_bits % 8 != 0 || feedback > cipher->block_size())
125 throw Invalid_Argument("CFB_Decryption: Invalid feedback size " +
126 to_string(fback_bits));
127
128 set_key(key);
129 set_iv(iv);
130 }
void set_iv(const InitializationVector &)
Definition cfb.cpp:132
void set_key(const SymmetricKey &key)
Definition cfb.h:60

References Botan::BlockCipher::block_size(), set_iv(), set_key(), and Botan::to_string().

◆ ~CFB_Decryption()

Botan::CFB_Decryption::~CFB_Decryption ( )
inline

Definition at line 75 of file cfb.h.

75{ delete cipher; }

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()

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

◆ name()

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

Implements Botan::Filter.

Definition at line 56 of file cfb.h.

56{ return cipher->name() + "/CFB"; }

Referenced by set_iv().

◆ 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); }
void send(const byte in[], size_t length)
Definition filter.cpp:28

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::CFB_Decryption::set_iv ( const InitializationVector & iv)
virtual

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 from Botan::Keyed_Filter.

Definition at line 132 of file cfb.cpp.

133 {
134 if(!valid_iv_length(iv.length()))
135 throw Invalid_IV_Length(name(), iv.length());
136
137 state = iv.bits_of();
138 zeroise(buffer);
139 position = 0;
140
141 cipher->encrypt(state, buffer);
142 }
std::string name() const
Definition cfb.h:56
bool valid_iv_length(size_t iv_len) const
Definition cfb.h:65
void zeroise(MemoryRegion< T > &vec)
Definition secmem.h:428
Invalid_IV_Length(const std::string &mode, size_t bad_len)
Definition exceptn.h:80

References Botan::OctetString::bits_of(), Botan::Invalid_IV_Length::Invalid_IV_Length(), Botan::OctetString::length(), name(), valid_iv_length(), and Botan::zeroise().

Referenced by CFB_Decryption().

◆ set_key()

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

Set the key of this filter

Parameters
keythe key to use

Implements Botan::Keyed_Filter.

Definition at line 60 of file cfb.h.

60{ cipher->set_key(key); }

Referenced by CFB_Decryption().

◆ 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()

bool Botan::CFB_Decryption::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 65 of file cfb.h.

66 { return (iv_len == cipher->block_size()); }

Referenced by set_iv().

◆ valid_keylength()

bool Botan::CFB_Decryption::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 62 of file cfb.h.

63 { return cipher->valid_keylength(key_len); }

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