Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kornelski/7z.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'CPP/7zip/Crypto/MyAes.h')
-rw-r--r--[-rwxr-xr-x]CPP/7zip/Crypto/MyAes.h26
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(); };
}