mirror of
https://github.com/Xevion/easy7zip.git
synced 2025-12-10 10:07:13 -06:00
15.05
This commit is contained in:
committed by
Kornel Lesiński
parent
0713a3ab80
commit
54490d51d5
@@ -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();
|
||||
};
|
||||
|
||||
}}
|
||||
|
||||
Reference in New Issue
Block a user