21 void encrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const override;
22 void decrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const override;
24 void clear()
override;
26 std::string
name()
const override {
return "Camellia-128"; }
28 std::string
provider()
const override;
31 std::unique_ptr<BlockCipher>
new_object()
const override {
return std::make_unique<Camellia_128>(); }
36 void key_schedule(std::span<const uint8_t> key)
override;
38#if defined(BOTAN_HAS_CAMELLIA_AVX2_GFNI)
39 static void avx2_gfni_encrypt(
const uint8_t in[], uint8_t out[],
size_t blocks, std::span<const uint64_t> SK);
40 static void avx2_gfni_decrypt(
const uint8_t in[], uint8_t out[],
size_t blocks, std::span<const uint64_t> SK);
43#if defined(BOTAN_HAS_CAMELLIA_AVX512_GFNI)
44 static void avx512_gfni_encrypt(
const uint8_t in[], uint8_t out[],
size_t blocks, std::span<const uint64_t> SK);
45 static void avx512_gfni_decrypt(
const uint8_t in[], uint8_t out[],
size_t blocks, std::span<const uint64_t> SK);
48#if defined(BOTAN_HAS_CAMELLIA_HWAES)
49 static void hwaes_encrypt(
const uint8_t in[], uint8_t out[],
size_t blocks, std::span<const uint64_t> SK);
50 static void hwaes_decrypt(
const uint8_t in[], uint8_t out[],
size_t blocks, std::span<const uint64_t> SK);
61 void encrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const override;
62 void decrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const override;
64 void clear()
override;
66 std::string
name()
const override {
return "Camellia-192"; }
68 std::string
provider()
const override;
71 std::unique_ptr<BlockCipher>
new_object()
const override {
return std::make_unique<Camellia_192>(); }
76 void key_schedule(std::span<const uint8_t> key)
override;
78#if defined(BOTAN_HAS_CAMELLIA_AVX2_GFNI)
79 static void avx2_gfni_encrypt(
const uint8_t in[], uint8_t out[],
size_t blocks, std::span<const uint64_t> SK);
80 static void avx2_gfni_decrypt(
const uint8_t in[], uint8_t out[],
size_t blocks, std::span<const uint64_t> SK);
83#if defined(BOTAN_HAS_CAMELLIA_AVX512_GFNI)
84 static void avx512_gfni_encrypt(
const uint8_t in[], uint8_t out[],
size_t blocks, std::span<const uint64_t> SK);
85 static void avx512_gfni_decrypt(
const uint8_t in[], uint8_t out[],
size_t blocks, std::span<const uint64_t> SK);
88#if defined(BOTAN_HAS_CAMELLIA_HWAES)
89 static void hwaes_encrypt(
const uint8_t in[], uint8_t out[],
size_t blocks, std::span<const uint64_t> SK);
90 static void hwaes_decrypt(
const uint8_t in[], uint8_t out[],
size_t blocks, std::span<const uint64_t> SK);
101 void encrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const override;
102 void decrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const override;
104 void clear()
override;
106 std::string
name()
const override {
return "Camellia-256"; }
108 std::string
provider()
const override;
111 std::unique_ptr<BlockCipher>
new_object()
const override {
return std::make_unique<Camellia_256>(); }
116 void key_schedule(std::span<const uint8_t> key)
override;
118#if defined(BOTAN_HAS_CAMELLIA_AVX2_GFNI)
119 static void avx2_gfni_encrypt(
const uint8_t in[], uint8_t out[],
size_t blocks, std::span<const uint64_t> SK);
120 static void avx2_gfni_decrypt(
const uint8_t in[], uint8_t out[],
size_t blocks, std::span<const uint64_t> SK);
123#if defined(BOTAN_HAS_CAMELLIA_AVX512_GFNI)
124 static void avx512_gfni_encrypt(
const uint8_t in[], uint8_t out[],
size_t blocks, std::span<const uint64_t> SK);
125 static void avx512_gfni_decrypt(
const uint8_t in[], uint8_t out[],
size_t blocks, std::span<const uint64_t> SK);
128#if defined(BOTAN_HAS_CAMELLIA_HWAES)
129 static void hwaes_encrypt(
const uint8_t in[], uint8_t out[],
size_t blocks, std::span<const uint64_t> SK);
130 static void hwaes_decrypt(
const uint8_t in[], uint8_t out[],
size_t blocks, std::span<const uint64_t> SK);