Botan
1.11.15
|
00001 /* 00002 * Noekeon 00003 * (C) 1999-2008 Jack Lloyd 00004 * 00005 * Botan is released under the Simplified BSD License (see license.txt) 00006 */ 00007 00008 #ifndef BOTAN_NOEKEON_H__ 00009 #define BOTAN_NOEKEON_H__ 00010 00011 #include <botan/block_cipher.h> 00012 00013 namespace Botan { 00014 00015 /** 00016 * Noekeon 00017 */ 00018 class BOTAN_DLL Noekeon : public Block_Cipher_Fixed_Params<16, 16> 00019 { 00020 public: 00021 void encrypt_n(const byte in[], byte out[], size_t blocks) const; 00022 void decrypt_n(const byte in[], byte out[], size_t blocks) const; 00023 00024 void clear(); 00025 std::string name() const { return "Noekeon"; } 00026 BlockCipher* clone() const { return new Noekeon; } 00027 protected: 00028 /** 00029 * The Noekeon round constants 00030 */ 00031 static const byte RC[17]; 00032 00033 /** 00034 * @return const reference to encryption subkeys 00035 */ 00036 const secure_vector<u32bit>& get_EK() const { return EK; } 00037 00038 /** 00039 * @return const reference to decryption subkeys 00040 */ 00041 const secure_vector<u32bit>& get_DK() const { return DK; } 00042 00043 private: 00044 void key_schedule(const byte[], size_t); 00045 secure_vector<u32bit> EK, DK; 00046 }; 00047 00048 } 00049 00050 #endif