11#include <botan/block_cipher.h>
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
provider()
const override;
27 std::string
name()
const override {
return "AES-128"; }
28 std::unique_ptr<BlockCipher>
new_object()
const override {
return std::make_unique<AES_128>(); }
33 void key_schedule(
const uint8_t key[],
size_t length)
override;
35#if defined(BOTAN_HAS_AES_VPERM)
36 void vperm_encrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const;
37 void vperm_decrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const;
38 void vperm_key_schedule(
const uint8_t key[],
size_t length);
41#if defined(BOTAN_HAS_AES_NI)
42 void aesni_key_schedule(
const uint8_t key[],
size_t length);
45#if defined(BOTAN_HAS_AES_POWER8) || defined(BOTAN_HAS_AES_ARMV8) || defined(BOTAN_HAS_AES_NI)
46 void hw_aes_encrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const;
47 void hw_aes_decrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const;
59 void encrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const override;
60 void decrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const override;
62 void clear()
override;
64 std::string
provider()
const override;
65 std::string
name()
const override {
return "AES-192"; }
66 std::unique_ptr<BlockCipher>
new_object()
const override {
return std::make_unique<AES_192>(); }
71#if defined(BOTAN_HAS_AES_VPERM)
72 void vperm_encrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const;
73 void vperm_decrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const;
74 void vperm_key_schedule(
const uint8_t key[],
size_t length);
77#if defined(BOTAN_HAS_AES_NI)
78 void aesni_key_schedule(
const uint8_t key[],
size_t length);
81#if defined(BOTAN_HAS_AES_POWER8) || defined(BOTAN_HAS_AES_ARMV8) || defined(BOTAN_HAS_AES_NI)
82 void hw_aes_encrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const;
83 void hw_aes_decrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const;
86 void key_schedule(
const uint8_t key[],
size_t length)
override;
97 void encrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const override;
98 void decrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const override;
100 void clear()
override;
102 std::string
provider()
const override;
104 std::string
name()
const override {
return "AES-256"; }
105 std::unique_ptr<BlockCipher>
new_object()
const override {
return std::make_unique<AES_256>(); }
110#if defined(BOTAN_HAS_AES_VPERM)
111 void vperm_encrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const;
112 void vperm_decrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const;
113 void vperm_key_schedule(
const uint8_t key[],
size_t length);
116#if defined(BOTAN_HAS_AES_NI)
117 void aesni_key_schedule(
const uint8_t key[],
size_t length);
120#if defined(BOTAN_HAS_AES_POWER8) || defined(BOTAN_HAS_AES_ARMV8) || defined(BOTAN_HAS_AES_NI)
121 void hw_aes_encrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const;
122 void hw_aes_decrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const;
125 void key_schedule(
const uint8_t key[],
size_t length)
override;
void decrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override
std::string provider() const override
size_t parallelism() const override
bool has_keying_material() const override
std::unique_ptr< BlockCipher > new_object() const override
std::string name() const override
void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override
bool has_keying_material() const override
std::string name() const override
std::unique_ptr< BlockCipher > new_object() const override
void decrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override
std::string provider() const override
size_t parallelism() const override
void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override
bool has_keying_material() const override
void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override
void decrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const override
std::string name() const override
std::string provider() const override
size_t parallelism() const override
std::unique_ptr< BlockCipher > new_object() const override
int(* final)(unsigned char *, CTX *)
std::vector< T, secure_allocator< T > > secure_vector