20 #ifndef _ANCH_CRYPTO_CFB_H_ 21 #define _ANCH_CRYPTO_CFB_H_ 23 #include "crypto/cipher/bcModOp.hpp" 37 template<
typename Cipher>
43 std::array<uint8_t,Cipher::getBlockSize()> _initVect;
46 std::array<uint8_t,Cipher::getBlockSize()> _ctxtVect;
59 CFB(
const std::array<uint8_t,Cipher::getBlockSize()>& initVect,
unsigned int nbThread = 1):
91 virtual std::size_t
cipherBlock(std::array<uint8_t,Cipher::getBlockSize()>& input,
92 std::streamsize nbRead,
93 std::array<uint8_t,Cipher::getBlockSize()>& output,
94 uint32_t, Cipher&
cipher)
override {
95 std::array<uint8_t,Cipher::getBlockSize()> data;
96 cipher.cipher(_ctxtVect, data);
97 for(std::streamsize i = 0 ; i < nbRead ; ++i) {
98 output[i] = input[i] ^ data[i];
99 _ctxtVect[i] = output[i];
116 virtual std::size_t
decipherBlock(std::array<uint8_t,Cipher::getBlockSize()>& input,
117 std::array<uint8_t,Cipher::getBlockSize()>& prevInput,
118 std::streamsize nbRead,
120 std::array<uint8_t,Cipher::getBlockSize()>& output,
121 uint32_t, Cipher&
cipher)
override {
122 std::array<uint8_t,Cipher::getBlockSize()> data;
123 cipher.cipher(prevInput, data);
124 for(std::streamsize i = 0 ; i < nbRead ; ++i) {
125 output[i] = data[i] ^ input[i];
135 virtual const std::array<uint8_t,Cipher::getBlockSize()>&
reset() {
136 _ctxtVect = _initVect;
146 #endif // _ANCH_CRYPTO_CFB_H_ Cipher feedback implementation.
Definition: cfb.hpp:38
virtual const std::array< uint8_t, Cipher::getBlockSize()> & reset()
Definition: cfb.hpp:135
AnCH framework base namespace.
Definition: base64.hpp:28
void cipher(std::istream &input, std::ostream &output, const std::string &key)
Definition: bcModOp.hpp:133
virtual ~CFB()
Definition: cfb.hpp:72
Block cipher mode of operation interface.
Definition: bcModOp.hpp:49
virtual std::size_t decipherBlock(std::array< uint8_t, Cipher::getBlockSize()> &input, std::array< uint8_t, Cipher::getBlockSize()> &prevInput, std::streamsize nbRead, bool, std::array< uint8_t, Cipher::getBlockSize()> &output, uint32_t, Cipher &cipher) override
Definition: cfb.hpp:116
CFB(const std::array< uint8_t, Cipher::getBlockSize()> &initVect, unsigned int nbThread=1)
Definition: cfb.hpp:59
virtual std::size_t cipherBlock(std::array< uint8_t, Cipher::getBlockSize()> &input, std::streamsize nbRead, std::array< uint8_t, Cipher::getBlockSize()> &output, uint32_t, Cipher &cipher) override
Definition: cfb.hpp:91