annotate src/win32/7zip/7z/CPP/7zip/Crypto/RarAes.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/RarAes.h
rlm@1 2
rlm@1 3 #ifndef __CRYPTO_RAR_AES_H
rlm@1 4 #define __CRYPTO_RAR_AES_H
rlm@1 5
rlm@1 6 extern "C"
rlm@1 7 {
rlm@1 8 #include "../../../C/Aes.h"
rlm@1 9 }
rlm@1 10
rlm@1 11 #include "Common/Buffer.h"
rlm@1 12 #include "Common/MyCom.h"
rlm@1 13
rlm@1 14 #include "../ICoder.h"
rlm@1 15 #include "../IPassword.h"
rlm@1 16
rlm@1 17 namespace NCrypto {
rlm@1 18 namespace NRar29 {
rlm@1 19
rlm@1 20 const UInt32 kRarAesKeySize = 16;
rlm@1 21
rlm@1 22 class CDecoder:
rlm@1 23 public ICompressFilter,
rlm@1 24 public ICompressSetDecoderProperties2,
rlm@1 25 public ICryptoSetPassword,
rlm@1 26 public CMyUnknownImp
rlm@1 27 {
rlm@1 28 Byte _salt[8];
rlm@1 29 bool _thereIsSalt;
rlm@1 30 CByteBuffer buffer;
rlm@1 31 Byte aesKey[kRarAesKeySize];
rlm@1 32 Byte aesInit[AES_BLOCK_SIZE];
rlm@1 33 bool _needCalculate;
rlm@1 34
rlm@1 35 CAesCbc Aes;
rlm@1 36
rlm@1 37 bool _rar350Mode;
rlm@1 38
rlm@1 39 void Calculate();
rlm@1 40
rlm@1 41 public:
rlm@1 42
rlm@1 43 MY_UNKNOWN_IMP2(
rlm@1 44 ICryptoSetPassword,
rlm@1 45 ICompressSetDecoderProperties2)
rlm@1 46
rlm@1 47 STDMETHOD(Init)();
rlm@1 48
rlm@1 49 STDMETHOD_(UInt32, Filter)(Byte *data, UInt32 size);
rlm@1 50
rlm@1 51 STDMETHOD(CryptoSetPassword)(const Byte *aData, UInt32 aSize);
rlm@1 52
rlm@1 53 // ICompressSetDecoderProperties
rlm@1 54 STDMETHOD(SetDecoderProperties2)(const Byte *data, UInt32 size);
rlm@1 55
rlm@1 56 CDecoder();
rlm@1 57 void SetRar350Mode(bool rar350Mode) { _rar350Mode = rar350Mode; }
rlm@1 58 };
rlm@1 59
rlm@1 60 }}
rlm@1 61
rlm@1 62 #endif