1#ifndef CRYPTOPP_SEED_H
2#define CRYPTOPP_SEED_H
3
4/** \file
5*/
6
7#include "seckey.h"
8#include "secblock.h"
9
10NAMESPACE_BEGIN(CryptoPP)
11
12//! _
13struct SEED_Info : public FixedBlockSize<16>, public FixedKeyLength<16>, public FixedRounds<16>
14{
15	static const char *StaticAlgorithmName() {return "SEED";}
16};
17
18/// <a href="http://www.cryptolounge.org/wiki/SEED">SEED</a>
19class SEED : public SEED_Info, public BlockCipherDocumentation
20{
21	class CRYPTOPP_NO_VTABLE Base : public BlockCipherImpl<SEED_Info>
22	{
23	public:
24		void UncheckedSetKey(const byte *key, unsigned int length, const NameValuePairs &params);
25		void ProcessAndXorBlock(const byte *inBlock, const byte *xorBlock, byte *outBlock) const;
26
27	protected:
28		FixedSizeSecBlock<word32, 32> m_k;
29	};
30
31public:
32	typedef BlockCipherFinal<ENCRYPTION, Base> Encryption;
33	typedef BlockCipherFinal<DECRYPTION, Base> Decryption;
34};
35
36NAMESPACE_END
37
38#endif
39