8 #include <botan/shake_cipher.h>
9 #include <botan/sha3.h>
10 #include <botan/loadstor.h>
16 m_buffer((1600 - 256) / 8),
22 while(length >= m_buffer.size() - m_buf_pos)
24 xor_buf(out, in, &m_buffer[m_buf_pos], m_buffer.size() - m_buf_pos);
25 length -= (m_buffer.size() - m_buf_pos);
26 in += (m_buffer.size() - m_buf_pos);
27 out += (m_buffer.size() - m_buf_pos);
30 copy_out_le(m_buffer.data(), m_buffer.size(), m_state.data());
34 xor_buf(out, in, &m_buffer[m_buf_pos], length);
38 void SHAKE_128_Cipher::key_schedule(
const uint8_t key[],
size_t length)
42 for(
size_t i = 0; i < length/8; ++i)
47 m_state[length/8] ^= 0x000000000000001F;
48 m_state[20] ^= 0x8000000000000000;
51 copy_out_le(m_buffer.data(), m_buffer.size(), m_state.data());
void xor_buf(T out[], const T in[], size_t length)
void cipher(const uint8_t in[], uint8_t out[], size_t length) override
void copy_out_le(uint8_t out[], size_t out_bytes, const T in[])
void seek(uint64_t offset) override
void set_iv(const uint8_t iv[], size_t iv_len) override
uint64_t load_le< uint64_t >(const uint8_t in[], size_t off)
static void permute(uint64_t A[25])
std::string name() const override
void zeroise(std::vector< T, Alloc > &vec)