annotate src/win32/7zip/7z/CPP/7zip/Crypto/ZipCrypto.h @ 1:f9f4f1b99eed

importing src directory
author Robert McIntyre <rlm@mit.edu>
date Sat, 03 Mar 2012 10:31:27 -0600
parents
children
rev   line source
rlm@1 1 // Crypto/ZipCrypto.h
rlm@1 2
rlm@1 3 #ifndef __CRYPTO_ZIP_CRYPTO_H
rlm@1 4 #define __CRYPTO_ZIP_CRYPTO_H
rlm@1 5
rlm@1 6 #include "Common/MyCom.h"
rlm@1 7
rlm@1 8 #include "../ICoder.h"
rlm@1 9 #include "../IPassword.h"
rlm@1 10
rlm@1 11 namespace NCrypto {
rlm@1 12 namespace NZip {
rlm@1 13
rlm@1 14 const unsigned kHeaderSize = 12;
rlm@1 15
rlm@1 16 class CCipher
rlm@1 17 {
rlm@1 18 UInt32 Keys[3];
rlm@1 19
rlm@1 20 void UpdateKeys(Byte b);
rlm@1 21 Byte DecryptByteSpec();
rlm@1 22 public:
rlm@1 23 void SetPassword(const Byte *password, UInt32 passwordLen);
rlm@1 24 Byte DecryptByte(Byte b);
rlm@1 25 Byte EncryptByte(Byte b);
rlm@1 26 void DecryptHeader(Byte *buf);
rlm@1 27 void EncryptHeader(Byte *buf);
rlm@1 28 };
rlm@1 29
rlm@1 30 class CEncoder :
rlm@1 31 public ICompressFilter,
rlm@1 32 public ICryptoSetPassword,
rlm@1 33 public ICryptoSetCRC,
rlm@1 34 public CMyUnknownImp
rlm@1 35 {
rlm@1 36 CCipher _cipher;
rlm@1 37 UInt32 _crc;
rlm@1 38 public:
rlm@1 39 MY_UNKNOWN_IMP2(
rlm@1 40 ICryptoSetPassword,
rlm@1 41 ICryptoSetCRC
rlm@1 42 )
rlm@1 43 STDMETHOD(Init)();
rlm@1 44 STDMETHOD_(UInt32, Filter)(Byte *data, UInt32 size);
rlm@1 45
rlm@1 46 STDMETHOD(CryptoSetPassword)(const Byte *data, UInt32 size);
rlm@1 47 STDMETHOD(CryptoSetCRC)(UInt32 crc);
rlm@1 48 HRESULT WriteHeader(ISequentialOutStream *outStream);
rlm@1 49 };
rlm@1 50
rlm@1 51
rlm@1 52 class CDecoder:
rlm@1 53 public ICompressFilter,
rlm@1 54 public ICryptoSetPassword,
rlm@1 55 public CMyUnknownImp
rlm@1 56 {
rlm@1 57 CCipher _cipher;
rlm@1 58 public:
rlm@1 59 MY_UNKNOWN_IMP1(ICryptoSetPassword)
rlm@1 60
rlm@1 61 STDMETHOD(Init)();
rlm@1 62 STDMETHOD_(UInt32, Filter)(Byte *data, UInt32 size);
rlm@1 63 STDMETHOD(CryptoSetPassword)(const Byte *data, UInt32 size);
rlm@1 64
rlm@1 65 HRESULT ReadHeader(ISequentialInStream *inStream);
rlm@1 66 };
rlm@1 67
rlm@1 68
rlm@1 69 }}
rlm@1 70
rlm@1 71 #endif