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;
51 void key_schedule(std::span<const uint8_t> key)
override;
52 void cipher_bytes(
const uint8_t in[], uint8_t out[],
size_t length)
override;
53 void generate_keystream(uint8_t out[],
size_t length)
override;
54 void set_iv_bytes(
const uint8_t iv[],
size_t iv_len)
override;
55 void add_counter(uint64_t counter);
57#if defined(BOTAN_HAS_CTR_BE_AVX2)
58 size_t ctr_proc_bs16_ctr4_avx2(
const uint8_t in[], uint8_t out[],
size_t length);
61#if defined(BOTAN_HAS_CTR_BE_SIMD32)
62 size_t ctr_proc_bs16_ctr4_simd32(
const uint8_t in[], uint8_t out[],
size_t length);
65 std::unique_ptr<BlockCipher> m_cipher;
67 const size_t m_block_size;
68 const size_t m_ctr_size;
69 const size_t m_ctr_blocks;
72 std::vector<uint8_t> m_iv;
76 uint64_t m_bytes_remaining = 0;