11#include <botan/block_cipher.h> 
   12#include <botan/secmem.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;
 
   28      std::string 
name()
 const override { 
return "AES-128"; }
 
   30      std::unique_ptr<BlockCipher> 
new_object()
 const override { 
return std::make_unique<AES_128>(); }
 
   37      void key_schedule(std::span<const uint8_t> key) 
override;
 
   39#if defined(BOTAN_HAS_AES_VPERM) 
   40      void vperm_encrypt_n(
const uint8_t in[], uint8_t out[], 
size_t blocks) 
const;
 
   41      void vperm_decrypt_n(
const uint8_t in[], uint8_t out[], 
size_t blocks) 
const;
 
   42      void vperm_key_schedule(
const uint8_t key[], 
size_t length);
 
   45#if defined(BOTAN_HAS_AES_NI) 
   46      void aesni_key_schedule(
const uint8_t key[], 
size_t length);
 
   49#if defined(BOTAN_HAS_AES_POWER8) || defined(BOTAN_HAS_AES_ARMV8) || defined(BOTAN_HAS_AES_NI) 
   50      void hw_aes_encrypt_n(
const uint8_t in[], uint8_t out[], 
size_t blocks) 
const;
 
   51      void hw_aes_decrypt_n(
const uint8_t in[], uint8_t out[], 
size_t blocks) 
const;
 
   54#if defined(BOTAN_HAS_AES_VAES) 
   55      void x86_vaes_encrypt_n(
const uint8_t in[], uint8_t out[], 
size_t blocks) 
const;
 
   56      void x86_vaes_decrypt_n(
const uint8_t in[], uint8_t out[], 
size_t blocks) 
const;
 
 
   67      void encrypt_n(
const uint8_t in[], uint8_t out[], 
size_t blocks) 
const override;
 
   68      void decrypt_n(
const uint8_t in[], uint8_t out[], 
size_t blocks) 
const override;
 
   70      void clear() 
override;
 
   72      std::string 
provider() 
const override;
 
   74      std::string 
name()
 const override { 
return "AES-192"; }
 
   76      std::unique_ptr<BlockCipher> 
new_object()
 const override { 
return std::make_unique<AES_192>(); }
 
   82#if defined(BOTAN_HAS_AES_VPERM) 
   83      void vperm_encrypt_n(
const uint8_t in[], uint8_t out[], 
size_t blocks) 
const;
 
   84      void vperm_decrypt_n(
const uint8_t in[], uint8_t out[], 
size_t blocks) 
const;
 
   85      void vperm_key_schedule(
const uint8_t key[], 
size_t length);
 
   88#if defined(BOTAN_HAS_AES_NI) 
   89      void aesni_key_schedule(
const uint8_t key[], 
size_t length);
 
   92#if defined(BOTAN_HAS_AES_POWER8) || defined(BOTAN_HAS_AES_ARMV8) || defined(BOTAN_HAS_AES_NI) 
   93      void hw_aes_encrypt_n(
const uint8_t in[], uint8_t out[], 
size_t blocks) 
const;
 
   94      void hw_aes_decrypt_n(
const uint8_t in[], uint8_t out[], 
size_t blocks) 
const;
 
   97#if defined(BOTAN_HAS_AES_VAES) 
   98      void x86_vaes_encrypt_n(
const uint8_t in[], uint8_t out[], 
size_t blocks) 
const;
 
   99      void x86_vaes_decrypt_n(
const uint8_t in[], uint8_t out[], 
size_t blocks) 
const;
 
  102      void key_schedule(std::span<const uint8_t> key) 
override;
 
 
  112      void encrypt_n(
const uint8_t in[], uint8_t out[], 
size_t blocks) 
const override;
 
  113      void decrypt_n(
const uint8_t in[], uint8_t out[], 
size_t blocks) 
const override;
 
  115      void clear() 
override;
 
  117      std::string 
provider() 
const override;
 
  119      std::string 
name()
 const override { 
return "AES-256"; }
 
  121      std::unique_ptr<BlockCipher> 
new_object()
 const override { 
return std::make_unique<AES_256>(); }
 
  127#if defined(BOTAN_HAS_AES_VPERM) 
  128      void vperm_encrypt_n(
const uint8_t in[], uint8_t out[], 
size_t blocks) 
const;
 
  129      void vperm_decrypt_n(
const uint8_t in[], uint8_t out[], 
size_t blocks) 
const;
 
  130      void vperm_key_schedule(
const uint8_t key[], 
size_t length);
 
  133#if defined(BOTAN_HAS_AES_NI) 
  134      void aesni_key_schedule(
const uint8_t key[], 
size_t length);
 
  137#if defined(BOTAN_HAS_AES_POWER8) || defined(BOTAN_HAS_AES_ARMV8) || defined(BOTAN_HAS_AES_NI) 
  138      void hw_aes_encrypt_n(
const uint8_t in[], uint8_t out[], 
size_t blocks) 
const;
 
  139      void hw_aes_decrypt_n(
const uint8_t in[], uint8_t out[], 
size_t blocks) 
const;
 
  142#if defined(BOTAN_HAS_AES_VAES) 
  143      void x86_vaes_encrypt_n(
const uint8_t in[], uint8_t out[], 
size_t blocks) 
const;
 
  144      void x86_vaes_decrypt_n(
const uint8_t in[], uint8_t out[], 
size_t blocks) 
const;
 
  147      void key_schedule(std::span<const uint8_t> key) 
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
 
std::vector< T, secure_allocator< T > > secure_vector