27 std::string
name()
const override;
29 std::unique_ptr<StreamCipher>
new_object()
const override;
31 void clear()
override;
42 CTR_BE(std::unique_ptr<BlockCipher>
cipher,
size_t ctr_size);
44 void seek(uint64_t offset)
override;
47 void key_schedule(std::span<const uint8_t> key)
override;
48 void cipher_bytes(
const uint8_t in[], uint8_t out[],
size_t length)
override;
49 void generate_keystream(uint8_t out[],
size_t length)
override;
50 void set_iv_bytes(
const uint8_t iv[],
size_t iv_len)
override;
51 void add_counter(uint64_t counter);
53#if defined(BOTAN_HAS_CTR_BE_AVX2)
54 size_t ctr_proc_bs16_ctr4_avx2(
const uint8_t in[], uint8_t out[],
size_t length);
57#if defined(BOTAN_HAS_CTR_BE_SIMD32)
58 size_t ctr_proc_bs16_ctr4_simd32(
const uint8_t in[], uint8_t out[],
size_t length);
61 std::unique_ptr<BlockCipher> m_cipher;
63 const size_t m_block_size;
64 const size_t m_ctr_size;
65 const size_t m_ctr_blocks;
68 std::vector<uint8_t> m_iv;