Crypto++
|
00001 #ifndef CRYPTOPP_SEED_H 00002 #define CRYPTOPP_SEED_H 00003 00004 /** \file 00005 */ 00006 00007 #include "seckey.h" 00008 #include "secblock.h" 00009 00010 NAMESPACE_BEGIN(CryptoPP) 00011 00012 //! _ 00013 struct SEED_Info : public FixedBlockSize<16>, public FixedKeyLength<16>, public FixedRounds<16> 00014 { 00015 static const char *StaticAlgorithmName() {return "SEED";} 00016 }; 00017 00018 /// <a href="http://www.cryptolounge.org/wiki/SEED">SEED</a> 00019 class SEED : public SEED_Info, public BlockCipherDocumentation 00020 { 00021 class CRYPTOPP_NO_VTABLE Base : public BlockCipherImpl<SEED_Info> 00022 { 00023 public: 00024 void UncheckedSetKey(const byte *key, unsigned int length, const NameValuePairs ¶ms); 00025 void ProcessAndXorBlock(const byte *inBlock, const byte *xorBlock, byte *outBlock) const; 00026 00027 protected: 00028 FixedSizeSecBlock<word32, 32> m_k; 00029 }; 00030 00031 public: 00032 typedef BlockCipherFinal<ENCRYPTION, Base> Encryption; 00033 typedef BlockCipherFinal<DECRYPTION, Base> Decryption; 00034 }; 00035 00036 NAMESPACE_END 00037 00038 #endif