1*f6dc9357SAndroid Build Coastguard Worker // OutStreamWithSha1.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_OUT_STREAM_WITH_SHA1_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_OUT_STREAM_WITH_SHA1_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "../../../../C/Sha1.h" 7*f6dc9357SAndroid Build Coastguard Worker 8*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/MyBuffer2.h" 9*f6dc9357SAndroid Build Coastguard Worker #include "../../../Common/MyCom.h" 10*f6dc9357SAndroid Build Coastguard Worker 11*f6dc9357SAndroid Build Coastguard Worker #include "../../IStream.h" 12*f6dc9357SAndroid Build Coastguard Worker 13*f6dc9357SAndroid Build Coastguard Worker Z7_CLASS_IMP_NOQIB_1( 14*f6dc9357SAndroid Build Coastguard Worker COutStreamWithSha1 15*f6dc9357SAndroid Build Coastguard Worker , ISequentialOutStream 16*f6dc9357SAndroid Build Coastguard Worker ) 17*f6dc9357SAndroid Build Coastguard Worker bool _calculate; 18*f6dc9357SAndroid Build Coastguard Worker CMyComPtr<ISequentialOutStream> _stream; 19*f6dc9357SAndroid Build Coastguard Worker CAlignedBuffer1 _sha; 20*f6dc9357SAndroid Build Coastguard Worker UInt64 _size; 21*f6dc9357SAndroid Build Coastguard Worker Sha()22*f6dc9357SAndroid Build Coastguard Worker CSha1 *Sha() { return (CSha1 *)(void *)(Byte *)_sha; } 23*f6dc9357SAndroid Build Coastguard Worker public: COutStreamWithSha1()24*f6dc9357SAndroid Build Coastguard Worker COutStreamWithSha1(): _sha(sizeof(CSha1)) {} SetStream(ISequentialOutStream * stream)25*f6dc9357SAndroid Build Coastguard Worker void SetStream(ISequentialOutStream *stream) { _stream = stream; } ReleaseStream()26*f6dc9357SAndroid Build Coastguard Worker void ReleaseStream() { _stream.Release(); } 27*f6dc9357SAndroid Build Coastguard Worker void Init(bool calculate = true) 28*f6dc9357SAndroid Build Coastguard Worker { 29*f6dc9357SAndroid Build Coastguard Worker _calculate = calculate; 30*f6dc9357SAndroid Build Coastguard Worker _size = 0; 31*f6dc9357SAndroid Build Coastguard Worker Sha1_Init(Sha()); 32*f6dc9357SAndroid Build Coastguard Worker } InitSha1()33*f6dc9357SAndroid Build Coastguard Worker void InitSha1() { Sha1_Init(Sha()); } GetSize()34*f6dc9357SAndroid Build Coastguard Worker UInt64 GetSize() const { return _size; } Final(Byte * digest)35*f6dc9357SAndroid Build Coastguard Worker void Final(Byte *digest) { Sha1_Final(Sha(), digest); } 36*f6dc9357SAndroid Build Coastguard Worker }; 37*f6dc9357SAndroid Build Coastguard Worker 38*f6dc9357SAndroid Build Coastguard Worker 39*f6dc9357SAndroid Build Coastguard Worker Z7_CLASS_IMP_NOQIB_1( 40*f6dc9357SAndroid Build Coastguard Worker CInStreamWithSha1 41*f6dc9357SAndroid Build Coastguard Worker , ISequentialInStream 42*f6dc9357SAndroid Build Coastguard Worker ) 43*f6dc9357SAndroid Build Coastguard Worker CMyComPtr<ISequentialInStream> _stream; 44*f6dc9357SAndroid Build Coastguard Worker CAlignedBuffer1 _sha; 45*f6dc9357SAndroid Build Coastguard Worker UInt64 _size; 46*f6dc9357SAndroid Build Coastguard Worker 47*f6dc9357SAndroid Build Coastguard Worker CSha1 *Sha() { return (CSha1 *)(void *)(Byte *)_sha; } 48*f6dc9357SAndroid Build Coastguard Worker public: 49*f6dc9357SAndroid Build Coastguard Worker CInStreamWithSha1(): _sha(sizeof(CSha1)) {} 50*f6dc9357SAndroid Build Coastguard Worker void SetStream(ISequentialInStream *stream) { _stream = stream; } 51*f6dc9357SAndroid Build Coastguard Worker void Init() 52*f6dc9357SAndroid Build Coastguard Worker { 53*f6dc9357SAndroid Build Coastguard Worker _size = 0; 54*f6dc9357SAndroid Build Coastguard Worker Sha1_Init(Sha()); 55*f6dc9357SAndroid Build Coastguard Worker } 56*f6dc9357SAndroid Build Coastguard Worker void ReleaseStream() { _stream.Release(); } 57*f6dc9357SAndroid Build Coastguard Worker UInt64 GetSize() const { return _size; } 58*f6dc9357SAndroid Build Coastguard Worker void Final(Byte *digest) { Sha1_Final(Sha(), digest); } 59*f6dc9357SAndroid Build Coastguard Worker }; 60*f6dc9357SAndroid Build Coastguard Worker 61*f6dc9357SAndroid Build Coastguard Worker #endif 62