File: MyAes.h

package info (click to toggle)
mame 0.281%2Bdfsg1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 912,556 kB
  • sloc: cpp: 5,266,015; xml: 2,226,001; ansic: 750,970; sh: 34,449; lisp: 19,643; python: 16,330; makefile: 13,251; java: 8,492; yacc: 8,152; javascript: 7,069; cs: 6,013; asm: 4,786; ada: 1,681; pascal: 1,191; lex: 1,174; perl: 585; ruby: 373
file content (122 lines) | stat: -rw-r--r-- 2,587 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
// Crypto/MyAes.h

#ifndef ZIP7_INC_CRYPTO_MY_AES_H
#define ZIP7_INC_CRYPTO_MY_AES_H

#include "../../../C/Aes.h"

#include "../../Common/MyBuffer2.h"
#include "../../Common/MyCom.h"

#include "../ICoder.h"

namespace NCrypto {

#ifdef Z7_EXTRACT_ONLY
#define Z7_IFACEN_IAesCoderSetFunctions(x)
#else
#define Z7_IFACEN_IAesCoderSetFunctions(x) \
  virtual bool SetFunctions(UInt32 algo) x
#endif


class CAesCoder:
  public ICompressFilter,
  public ICryptoProperties,
 #ifndef Z7_EXTRACT_ONLY
  public ICompressSetCoderProperties,
 #endif
  public CMyUnknownImp
{
  Z7_COM_QI_BEGIN2(ICompressFilter)
  Z7_COM_QI_ENTRY(ICryptoProperties)
 #ifndef Z7_EXTRACT_ONLY
  Z7_COM_QI_ENTRY(ICompressSetCoderProperties)
 #endif
  Z7_COM_QI_END
  Z7_COM_ADDREF_RELEASE
  
public:
  Z7_IFACE_COM7_IMP_NONFINAL(ICompressFilter)
  Z7_IFACE_COM7_IMP(ICryptoProperties)
private:
 #ifndef Z7_EXTRACT_ONLY
  Z7_IFACE_COM7_IMP(ICompressSetCoderProperties)
 #endif

protected:
  bool _keyIsSet;
  // bool _encodeMode;
  // bool _ctrMode;
  // unsigned _offset;
  unsigned _keySize;
  unsigned _ctrPos; // we need _ctrPos here for Init() / SetInitVector()
  AES_CODE_FUNC _codeFunc;
  AES_SET_KEY_FUNC _setKeyFunc;
private:
  // UInt32 _aes[AES_NUM_IVMRK_WORDS + 3];
  CAlignedBuffer1 _aes;

  Byte _iv[AES_BLOCK_SIZE];

  // UInt32 *Aes() { return _aes + _offset; }
protected:
  UInt32 *Aes() { return (UInt32 *)(void *)(Byte *)_aes; }

 Z7_IFACE_PURE(IAesCoderSetFunctions)

public:
  CAesCoder(
      // bool encodeMode,
      unsigned keySize
      // , bool ctrMode
      );
  virtual ~CAesCoder() {}   // we need virtual destructor for derived classes
  void SetKeySize(unsigned size) { _keySize = size; }
};


#ifndef Z7_EXTRACT_ONLY
struct CAesCbcEncoder: public CAesCoder
{
  CAesCbcEncoder(unsigned keySize = 0): CAesCoder(keySize)
  {
    _setKeyFunc = Aes_SetKey_Enc;
    _codeFunc = g_AesCbc_Encode;
  }
  Z7_IFACE_IMP(IAesCoderSetFunctions)
};
#endif

struct CAesCbcDecoder: public CAesCoder
{
  CAesCbcDecoder(unsigned keySize = 0): CAesCoder(keySize)
  {
    _setKeyFunc = Aes_SetKey_Dec;
    _codeFunc = g_AesCbc_Decode;
  }
  Z7_IFACE_IMP(IAesCoderSetFunctions)
};

#ifndef Z7_SFX
struct CAesCtrCoder: public CAesCoder
{
private:
  // unsigned _ctrPos;
  // Z7_IFACE_COM7_IMP(ICompressFilter)
  // Z7_COM7F_IMP(Init())
  Z7_COM7F_IMP2(UInt32, Filter(Byte *data, UInt32 size))
public:
  CAesCtrCoder(unsigned keySize = 0): CAesCoder(keySize)
  {
    _ctrPos = 0;
    _setKeyFunc = Aes_SetKey_Enc;
    _codeFunc = g_AesCtr_Code;
  }
  Z7_IFACE_IMP(IAesCoderSetFunctions)
};
#endif

}

#endif