1 /* 2 * XTEA 3 * (C) 1999-2007 Jack Lloyd 4 * 5 * Distributed under the terms of the Botan license 6 */ 7 8 #ifndef BOTAN_XTEA_H__ 9 #define BOTAN_XTEA_H__ 10 11 #include <botan/block_cipher.h> 12 13 namespace Botan { 14 15 /** 16 * XTEA 17 */ 18 class BOTAN_DLL XTEA : public Block_Cipher_Fixed_Params<8, 16> 19 { 20 public: 21 void encrypt_n(const byte in[], byte out[], size_t blocks) const; 22 void decrypt_n(const byte in[], byte out[], size_t blocks) const; 23 clear()24 void clear() { zeroise(EK); } name()25 std::string name() const { return "XTEA"; } clone()26 BlockCipher* clone() const { return new XTEA; } 27 XTEA()28 XTEA() : EK(64) {} 29 protected: 30 /** 31 * @return const reference to the key schedule 32 */ get_EK()33 const SecureVector<u32bit>& get_EK() const { return EK; } 34 35 private: 36 void key_schedule(const byte[], size_t); 37 SecureVector<u32bit> EK; 38 }; 39 40 } 41 42 #endif 43