9#ifndef BOTAN_MODE_CFB_H_
10#define BOTAN_MODE_CFB_H_
12#include <botan/cipher_mode.h>
13#include <botan/block_cipher.h>
25 std::string
name()
const override final;
33 size_t output_length(
size_t input_length)
const override final;
39 void clear()
override final;
41 void reset()
override final;
45 void shift_register();
47 size_t feedback()
const {
return m_feedback_bytes; }
53 size_t m_keystream_pos = 0;
56 void start_msg(
const uint8_t nonce[],
size_t nonce_len)
override;
57 void key_schedule(
const uint8_t key[],
size_t length)
override;
59 std::unique_ptr<BlockCipher> m_cipher;
60 const size_t m_block_size;
61 const size_t m_feedback_bytes;
79 size_t process(uint8_t buf[],
size_t size)
override;
99 size_t process(uint8_t buf[],
size_t size)
override;
CFB_Decryption(BlockCipher *cipher, size_t feedback_bits)
CFB_Encryption(BlockCipher *cipher, size_t feedback_bits)
size_t block_size() const
secure_vector< uint8_t > m_keystream
secure_vector< uint8_t > m_state
const BlockCipher & cipher() const
virtual void start_msg(const uint8_t nonce[], size_t nonce_len)=0
virtual size_t process(uint8_t msg[], size_t msg_len)=0
virtual size_t default_nonce_length() const =0
virtual size_t output_length(size_t input_length) const =0
virtual void finish(secure_vector< uint8_t > &final_block, size_t offset=0)=0
virtual size_t minimum_final_size() const =0
virtual size_t update_granularity() const =0
virtual bool valid_nonce_length(size_t nonce_len) const =0
virtual std::string name() const =0
virtual Key_Length_Specification key_spec() const =0
int(* final)(unsigned char *, CTX *)
#define BOTAN_PUBLIC_API(maj, min)
#define BOTAN_FUTURE_INTERNAL_HEADER(hdr)
std::vector< T, secure_allocator< T > > secure_vector