Crypto++
shark.h
Go to the documentation of this file.
1 #ifndef CRYPTOPP_SHARK_H
2 #define CRYPTOPP_SHARK_H
3 
4 /** \file
5 */
6 
7 #include "config.h"
8 #include "seckey.h"
9 #include "secblock.h"
10 
11 NAMESPACE_BEGIN(CryptoPP)
12 
13 //! _
14 struct SHARK_Info : public FixedBlockSize<8>, public VariableKeyLength<16, 1, 16>, public VariableRounds<6, 2>
15 {
16  static const char *StaticAlgorithmName() {return "SHARK-E";}
17 };
18 
19 /// <a href="http://www.weidai.com/scan-mirror/cs.html#SHARK-E">SHARK-E</a>
21 {
22  class CRYPTOPP_NO_VTABLE Base : public BlockCipherImpl<SHARK_Info>
23  {
24  public:
25  void UncheckedSetKey(const byte *key, unsigned int length, const NameValuePairs &param);
26 
27  protected:
28  unsigned int m_rounds;
29  SecBlock<word64> m_roundKeys;
30  };
31 
32  class CRYPTOPP_NO_VTABLE Enc : public Base
33  {
34  public:
35  void ProcessAndXorBlock(const byte *inBlock, const byte *xorBlock, byte *outBlock) const;
36 
37  // used by Base to do key setup
38  void InitForKeySetup();
39 
40  private:
41  static const byte sbox[256];
42  static const word64 cbox[8][256];
43  };
44 
45  class CRYPTOPP_NO_VTABLE Dec : public Base
46  {
47  public:
48  void ProcessAndXorBlock(const byte *inBlock, const byte *xorBlock, byte *outBlock) const;
49 
50  private:
51  static const byte sbox[256];
52  static const word64 cbox[8][256];
53  };
54 
55 public:
58 };
59 
62 
63 NAMESPACE_END
64 
65 #endif
These objects usually should not be used directly. See CipherModeDocumentation instead.
Definition: seckey.h:188
SHARK-E
Definition: shark.h:20
interface for one direction (encryption or decryption) of a block cipher
Definition: cryptlib.h:603
to be inherited by block ciphers with fixed block size
Definition: seckey.h:21
to be inherited by ciphers with variable number of rounds
Definition: seckey.h:39
_
Definition: shark.h:14
support query of variable key length, template parameters are default, min, max, multiple (default mu...
Definition: seckey.h:80
interface for retrieving values given their names
Definition: cryptlib.h:224