mirror of
https://foundry.openuru.org/gitblit/r/CWE-ou-minkata.git
synced 2025-07-20 04:09:16 +00:00
Allow computing md5 hashes from hsStream derived classes
(cherry picked from commit e43cb685365bfc4498b681168bab0b1357ae208c)
This commit is contained in:
@ -90,33 +90,45 @@ plMD5Checksum::plMD5Checksum( const char *fileName )
|
|||||||
CalcFromFile( fileName );
|
CalcFromFile( fileName );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
plMD5Checksum::plMD5Checksum( hsStream* stream )
|
||||||
|
{
|
||||||
|
CalcFromStream(stream);
|
||||||
|
}
|
||||||
|
|
||||||
void plMD5Checksum::Clear()
|
void plMD5Checksum::Clear()
|
||||||
{
|
{
|
||||||
memset( fChecksum, 0, sizeof( fChecksum ) );
|
memset( fChecksum, 0, sizeof( fChecksum ) );
|
||||||
fValid = false;
|
fValid = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void plMD5Checksum::CalcFromFile( const char *fileName)
|
void plMD5Checksum::CalcFromFile( const char *fileName )
|
||||||
{
|
{
|
||||||
FILE *fp;
|
hsUNIXStream s;
|
||||||
fValid = false;
|
fValid = false;
|
||||||
|
|
||||||
if( fp = fopen(fileName, "rb" ) )
|
if( s.Open(fileName) )
|
||||||
{
|
{
|
||||||
unsigned loadLen = 1024 * 1024;
|
CalcFromStream(&s);
|
||||||
Start();
|
s.Close();
|
||||||
|
|
||||||
UInt8 *buf = TRACKED_NEW UInt8[loadLen];
|
|
||||||
|
|
||||||
while(int read = fread(buf, sizeof(UInt8), loadLen, fp))
|
|
||||||
AddTo( read, buf );
|
|
||||||
delete[] buf;
|
|
||||||
|
|
||||||
Finish();
|
|
||||||
fclose(fp);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void plMD5Checksum::CalcFromStream( hsStream* stream )
|
||||||
|
{
|
||||||
|
UInt32 sPos = stream->GetPosition();
|
||||||
|
unsigned loadLen = 1024 * 1024;
|
||||||
|
Start();
|
||||||
|
|
||||||
|
UInt8 *buf = TRACKED_NEW UInt8[loadLen];
|
||||||
|
|
||||||
|
while(int read = stream->Read(loadLen, buf))
|
||||||
|
AddTo( read, buf );
|
||||||
|
delete[] buf;
|
||||||
|
|
||||||
|
Finish();
|
||||||
|
stream->SetPosition(sPos);
|
||||||
|
}
|
||||||
|
|
||||||
void plMD5Checksum::Start( void )
|
void plMD5Checksum::Start( void )
|
||||||
{
|
{
|
||||||
MD5_Init( &fContext );
|
MD5_Init( &fContext );
|
||||||
|
@ -58,6 +58,8 @@ public:
|
|||||||
SumStorage GetChecksum() { return fSum; }
|
SumStorage GetChecksum() { return fSum; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class hsStream;
|
||||||
|
|
||||||
class plMD5Checksum
|
class plMD5Checksum
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
@ -74,11 +76,13 @@ class plMD5Checksum
|
|||||||
plMD5Checksum();
|
plMD5Checksum();
|
||||||
plMD5Checksum( const plMD5Checksum &rhs );
|
plMD5Checksum( const plMD5Checksum &rhs );
|
||||||
plMD5Checksum( const char *fileName );
|
plMD5Checksum( const char *fileName );
|
||||||
|
plMD5Checksum( hsStream* stream );
|
||||||
|
|
||||||
hsBool IsValid( void ) const { return fValid; }
|
hsBool IsValid( void ) const { return fValid; }
|
||||||
void Clear();
|
void Clear();
|
||||||
|
|
||||||
void CalcFromFile( const char *fileName );
|
void CalcFromFile( const char *fileName );
|
||||||
|
void CalcFromStream( hsStream* stream );
|
||||||
|
|
||||||
void Start( void );
|
void Start( void );
|
||||||
void AddTo( UInt32 size, const UInt8 *buffer );
|
void AddTo( UInt32 size, const UInt8 *buffer );
|
||||||
|
Reference in New Issue
Block a user