diff options
Diffstat (limited to 'CPP/7zip/Crypto/Zip/ZipCipher.h')
-rwxr-xr-x | CPP/7zip/Crypto/Zip/ZipCipher.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/CPP/7zip/Crypto/Zip/ZipCipher.h b/CPP/7zip/Crypto/Zip/ZipCipher.h new file mode 100755 index 00000000..d750336c --- /dev/null +++ b/CPP/7zip/Crypto/Zip/ZipCipher.h @@ -0,0 +1,59 @@ +// Crypto/ZipCipher.h + +#ifndef __CRYPTO_ZIPCIPHER_H +#define __CRYPTO_ZIPCIPHER_H + +#include "Common/MyCom.h" +#include "Common/Types.h" + +#include "../../ICoder.h" +#include "../../IPassword.h" + +#include "ZipCrypto.h" + +namespace NCrypto { +namespace NZip { + +class CEncoder : + public ICompressFilter, + public ICryptoSetPassword, + public ICryptoSetCRC, + public CMyUnknownImp +{ + CCipher _cipher; + UInt32 _crc; +public: + MY_UNKNOWN_IMP2( + ICryptoSetPassword, + ICryptoSetCRC + ) + STDMETHOD(Init)(); + STDMETHOD_(UInt32, Filter)(Byte *data, UInt32 size); + + STDMETHOD(CryptoSetPassword)(const Byte *data, UInt32 size); + STDMETHOD(CryptoSetCRC)(UInt32 crc); + HRESULT WriteHeader(ISequentialOutStream *outStream); +}; + + +class CDecoder: + public ICompressFilter, + public ICryptoSetPassword, + public CMyUnknownImp + // public CBuffer2 +{ + CCipher _cipher; +public: + + MY_UNKNOWN_IMP1(ICryptoSetPassword) + + STDMETHOD(Init)(); + STDMETHOD_(UInt32, Filter)(Byte *data, UInt32 size); + + HRESULT ReadHeader(ISequentialInStream *inStream); + STDMETHOD(CryptoSetPassword)(const Byte *data, UInt32 size); +}; + +}} + +#endif |