1 /* 2 * IDEA 3 * (C) 1999-2007 Jack Lloyd 4 * 5 * Distributed under the terms of the Botan license 6 */ 7 8 #ifndef BOTAN_IDEA_H__ 9 #define BOTAN_IDEA_H__ 10 11 #include <botan/block_cipher.h> 12 13 namespace Botan { 14 15 /** 16 * IDEA 17 */ 18 class BOTAN_DLL IDEA : 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); zeroise(DK); } name()25 std::string name() const { return "IDEA"; } clone()26 BlockCipher* clone() const { return new IDEA; } 27 IDEA()28 IDEA() : EK(52), DK(52) {} 29 protected: 30 /** 31 * @return const reference to encryption subkeys 32 */ get_EK()33 const SecureVector<u16bit>& get_EK() const { return EK; } 34 35 /** 36 * @return const reference to decryption subkeys 37 */ get_DK()38 const SecureVector<u16bit>& get_DK() const { return DK; } 39 40 private: 41 void key_schedule(const byte[], size_t); 42 SecureVector<u16bit> EK, DK; 43 }; 44 45 } 46 47 #endif 48