Source code

Revision control

Copy as Markdown

Other Tools

// Crypto/MyAes.h↩
#ifndef __CRYPTO_MY_AES_H↩
#define __CRYPTO_MY_AES_H↩
#include "../../../C/Aes.h"
#include "../../Common/MyCom.h"
#include "../ICoder.h"
namespace NCrypto {↩
class CAesCbcCoder:↩
public ICompressFilter,↩
public ICryptoProperties,↩
public ICompressSetCoderProperties,↩
public CMyUnknownImp↩
{↩
AES_CODE_FUNC _codeFunc;↩
unsigned _offset;↩
unsigned _keySize;↩
bool _keyIsSet;↩
bool _encodeMode;↩
UInt32 _aes[AES_NUM_IVMRK_WORDS + 3];↩
Byte _iv[AES_BLOCK_SIZE];↩
bool SetFunctions(UInt32 algo);↩
public:↩
CAesCbcCoder(bool encodeMode, unsigned keySize);↩
virtual ~CAesCbcCoder() {}; // we need virtual destructor for derived classes↩
MY_UNKNOWN_IMP3(ICompressFilter, ICryptoProperties, ICompressSetCoderProperties)↩
INTERFACE_ICompressFilter(;)↩
STDMETHOD(SetKey)(const Byte *data, UInt32 size);↩
STDMETHOD(SetInitVector)(const Byte *data, UInt32 size);↩
STDMETHOD(SetCoderProperties)(const PROPID *propIDs, const PROPVARIANT *props, UInt32 numProps);↩
};↩
struct CAesCbcEncoder: public CAesCbcCoder↩
{↩
CAesCbcEncoder(unsigned keySize = 0): CAesCbcCoder(true, keySize) {}↩
};↩
struct CAesCbcDecoder: public CAesCbcCoder↩
{↩
CAesCbcDecoder(unsigned keySize = 0): CAesCbcCoder(false, keySize) {}↩
};↩
}↩
#endif