tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

MyAes.h (1318B)


      1 // Crypto/MyAes.h
      2 
      3 #ifndef __CRYPTO_MY_AES_H
      4 #define __CRYPTO_MY_AES_H
      5 
      6 #include "../../../C/Aes.h"
      7 
      8 #include "../../Common/MyCom.h"
      9 
     10 #include "../ICoder.h"
     11 
     12 namespace NCrypto {
     13 
     14 class CAesCbcCoder:
     15  public ICompressFilter,
     16  public ICryptoProperties,
     17  public ICompressSetCoderProperties,
     18  public CMyUnknownImp
     19 {
     20  AES_CODE_FUNC _codeFunc;
     21  unsigned _offset;
     22  unsigned _keySize;
     23  bool _keyIsSet;
     24  bool _encodeMode;
     25  UInt32 _aes[AES_NUM_IVMRK_WORDS + 3];
     26  Byte _iv[AES_BLOCK_SIZE];
     27 
     28  bool SetFunctions(UInt32 algo);
     29 
     30 public:
     31  CAesCbcCoder(bool encodeMode, unsigned keySize);
     32  
     33  virtual ~CAesCbcCoder() {};   // we need virtual destructor for derived classes
     34  
     35  MY_UNKNOWN_IMP3(ICompressFilter, ICryptoProperties, ICompressSetCoderProperties)
     36  
     37  INTERFACE_ICompressFilter(;)
     38  
     39  STDMETHOD(SetKey)(const Byte *data, UInt32 size);
     40  STDMETHOD(SetInitVector)(const Byte *data, UInt32 size);
     41  
     42  STDMETHOD(SetCoderProperties)(const PROPID *propIDs, const PROPVARIANT *props, UInt32 numProps);
     43 };
     44 
     45 struct CAesCbcEncoder: public CAesCbcCoder
     46 {
     47  CAesCbcEncoder(unsigned keySize = 0): CAesCbcCoder(true, keySize) {}
     48 };
     49 
     50 struct CAesCbcDecoder: public CAesCbcCoder
     51 {
     52  CAesCbcDecoder(unsigned keySize = 0): CAesCbcCoder(false, keySize) {}
     53 };
     54 
     55 }
     56 
     57 #endif