9 #include <botan/parsing.h>
10 #include <botan/internal/xor_buf.h>
21 feedback = fback_bits ? fback_bits / 8: cipher->
block_size();
27 if(feedback == 0 || fback_bits % 8 != 0 || feedback > cipher->
block_size())
41 feedback = fback_bits ? fback_bits / 8: cipher->
block_size();
47 if(feedback == 0 || fback_bits % 8 != 0 || feedback > cipher->
block_size())
64 cipher->
encrypt(&state[0], &buffer[0]);
70 void CFB_Encryption::write(
const byte input[],
size_t length)
74 size_t xored = std::min(feedback - position, length);
75 xor_buf(&buffer[position], input, xored);
76 send(&buffer[position], xored);
81 if(position == feedback)
83 for(
size_t j = 0; j != cipher->
block_size() - feedback; ++j)
84 state[j] = state[j + feedback];
87 &buffer[0], feedback);
101 feedback = fback_bits ? fback_bits / 8: cipher->
block_size();
107 if(feedback == 0 || fback_bits % 8 != 0 || feedback > cipher->
block_size())
121 feedback = fback_bits ? fback_bits / 8: cipher->
block_size();
127 if(feedback == 0 || fback_bits % 8 != 0 || feedback > cipher->
block_size())
144 cipher->
encrypt(state, buffer);
150 void CFB_Decryption::write(
const byte input[],
size_t length)
154 size_t xored = std::min(feedback - position, length);
155 xor_buf(&buffer[position], input, xored);
156 send(&buffer[position], xored);
161 if(position == feedback)
163 for(
size_t j = 0; j != cipher->
block_size() - feedback; ++j)
164 state[j] = state[j + feedback];
167 &buffer[0], feedback);
169 cipher->
encrypt(state, buffer);