diff options
author | Igor Pavlov <ipavlov@users.sourceforge.net> | 2015-06-15 03:00:00 +0300 |
---|---|---|
committer | Kornel LesiĆski <kornel@geekhood.net> | 2016-05-28 02:16:54 +0300 |
commit | 54490d51d5c6b0d794dcbad2d634d4c95fc25b6c (patch) | |
tree | c3c413656432c0ef87b2841c80e42b55ad17d4e8 /CPP/7zip/Crypto/ZipCrypto.h | |
parent | 0713a3ab803e57401f18432148b4139e5fe6e5dd (diff) |
15.0515.05
Diffstat (limited to 'CPP/7zip/Crypto/ZipCrypto.h')
-rw-r--r-- | CPP/7zip/Crypto/ZipCrypto.h | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/CPP/7zip/Crypto/ZipCrypto.h b/CPP/7zip/Crypto/ZipCrypto.h index 51b9e301..b23d4216 100644 --- a/CPP/7zip/Crypto/ZipCrypto.h +++ b/CPP/7zip/Crypto/ZipCrypto.h @@ -13,24 +13,41 @@ namespace NZip { const unsigned kHeaderSize = 12; +/* ICompressFilter::Init() does nothing for this filter. + Call to init: + Encoder: + CryptoSetPassword(); + WriteHeader(); + Decoder: + [CryptoSetPassword();] + ReadHeader(); + [CryptoSetPassword();] Init_and_GetCrcByte(); + [CryptoSetPassword();] Init_and_GetCrcByte(); +*/ + class CCipher: public ICompressFilter, public ICryptoSetPassword, public CMyUnknownImp { - UInt32 Keys[3]; - UInt32 Keys2[3]; - protected: - void UpdateKeys(Byte b); - Byte DecryptByteSpec(); + UInt32 Key0; + UInt32 Key1; + UInt32 Key2; + + UInt32 KeyMem0; + UInt32 KeyMem1; + UInt32 KeyMem2; + void RestoreKeys() { - for (int i = 0; i < 3; i++) - Keys[i] = Keys2[i]; + Key0 = KeyMem0; + Key1 = KeyMem1; + Key2 = KeyMem2; } public: + MY_UNKNOWN_IMP1(ICryptoSetPassword) STDMETHOD(Init)(); STDMETHOD(CryptoSetPassword)(const Byte *data, UInt32 size); }; @@ -38,17 +55,17 @@ public: class CEncoder: public CCipher { public: - MY_UNKNOWN_IMP1(ICryptoSetPassword) STDMETHOD_(UInt32, Filter)(Byte *data, UInt32 size); - HRESULT WriteHeader(ISequentialOutStream *outStream, UInt32 crc); + HRESULT WriteHeader_Check16(ISequentialOutStream *outStream, UInt16 crc); }; class CDecoder: public CCipher { public: - MY_UNKNOWN_IMP1(ICryptoSetPassword) + Byte _header[kHeaderSize]; STDMETHOD_(UInt32, Filter)(Byte *data, UInt32 size); HRESULT ReadHeader(ISequentialInStream *inStream); + void Init_BeforeDecode(); }; }} |