11#include <botan/block_cipher.h>
23 void encrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const override;
24 void decrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const override;
26 void clear()
override;
28 std::string
provider()
const override;
29 std::string
name()
const override {
return "AES-128"; }
34 void key_schedule(
const uint8_t key[],
size_t length)
override;
36#if defined(BOTAN_HAS_AES_VPERM)
37 void vperm_encrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const;
38 void vperm_decrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const;
39 void vperm_key_schedule(
const uint8_t key[],
size_t length);
42#if defined(BOTAN_HAS_AES_NI)
43 void aesni_key_schedule(
const uint8_t key[],
size_t length);
46#if defined(BOTAN_HAS_AES_POWER8) || defined(BOTAN_HAS_AES_ARMV8) || defined(BOTAN_HAS_AES_NI)
47 void hw_aes_encrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const;
48 void hw_aes_decrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const;
60 void encrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const override;
61 void decrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const override;
63 void clear()
override;
65 std::string
provider()
const override;
66 std::string
name()
const override {
return "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"; }
109#if defined(BOTAN_HAS_AES_VPERM)
110 void vperm_encrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const;
111 void vperm_decrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const;
112 void vperm_key_schedule(
const uint8_t key[],
size_t length);
115#if defined(BOTAN_HAS_AES_NI)
116 void aesni_key_schedule(
const uint8_t key[],
size_t length);
119#if defined(BOTAN_HAS_AES_POWER8) || defined(BOTAN_HAS_AES_ARMV8) || defined(BOTAN_HAS_AES_NI)
120 void hw_aes_encrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const;
121 void hw_aes_decrypt_n(
const uint8_t in[], uint8_t out[],
size_t blocks)
const;
124 void key_schedule(
const uint8_t key[],
size_t length)
override;
BlockCipher * clone() const override
std::string name() const override
BlockCipher * clone() const override
std::string name() const override
BlockCipher * clone() const override
std::string name() const override
virtual void decrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const =0
virtual void encrypt_n(const uint8_t in[], uint8_t out[], size_t blocks) const =0
virtual size_t parallelism() const
virtual std::string provider() const
int(* final)(unsigned char *, CTX *)
#define BOTAN_PUBLIC_API(maj, min)
#define BOTAN_FUTURE_INTERNAL_HEADER(hdr)
std::vector< T, secure_allocator< T > > secure_vector