Mercurial > vba-linux
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 |