diff options
Diffstat (limited to 'CPP/7zip/Crypto/MyAes.h')
-rw-r--r--[-rwxr-xr-x] | CPP/7zip/Crypto/MyAes.h | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/CPP/7zip/Crypto/MyAes.h b/CPP/7zip/Crypto/MyAes.h index 60b13845..99a17fef 100755..100644 --- a/CPP/7zip/Crypto/MyAes.h +++ b/CPP/7zip/Crypto/MyAes.h @@ -14,24 +14,38 @@ namespace NCrypto { class CAesCbcCoder: public ICompressFilter, public ICryptoProperties, + public ICompressSetCoderProperties, public CMyUnknownImp { -protected: AES_CODE_FUNC _codeFunc; - AES_SET_KEY_FUNC _setKeyFunc; 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(); - MY_UNKNOWN_IMP1(ICryptoProperties) + CAesCbcCoder(bool encodeMode, unsigned keySize); + MY_UNKNOWN_IMP2(ICryptoProperties, ICompressSetCoderProperties) STDMETHOD(Init)(); STDMETHOD_(UInt32, Filter)(Byte *data, UInt32 size); 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) {} }; -struct CAesCbcEncoder: public CAesCbcCoder { CAesCbcEncoder(); }; -struct CAesCbcDecoder: public CAesCbcCoder { CAesCbcDecoder(); }; } |