19 #include <crypto++/sha.h>
23 using namespace VSFileSystem;
32 savefile = name+
".save";
36 std::cout<<
"Error opening save file "<<savefile<<std::endl;
42 savefile = name+
".xml";
45 std::cout<<
"Error opening save file "<<savefile<<std::endl;
54 vector< string >saves;
68 const int block_size = Hash.OptimalBlockSize();
69 unsigned char *hashbuf =
new unsigned char[block_size];
70 const char *buf = buffer.c_str();
72 unsigned int offset = 0;
73 while ( offset < buffer.length() ) {
74 memcpy( hashbuf, buf+offset, block_size );
76 Hash.Update( hashbuf, block_size );
80 if ( ( nb = (buffer.length()-offset) ) ) {
81 memcpy( hashbuf, buf+offset, nb );
82 Hash.Update( hashbuf, nb );
98 for (
unsigned int i = 0;
i < length;
i++)
114 cerr<<
"!!! ERROR = couldn't compute hash digest on "<<filename<<
" file !!!"<<endl;
119 const int block_size = Hash.OptimalBlockSize();
120 unsigned char *
buffer =
new unsigned char[block_size];
122 while ( ( nb = f.
Read( buffer, block_size ) ) > 0 )
123 Hash.Update( buffer, nb );
124 Hash.Final( digest );
144 unsigned char *local_digest =
new unsigned char[Hash.DigestSize()];
147 ret =
HashCompute( filename.c_str(), local_digest, type );
150 delete[] local_digest;
153 if ( memcmp( hashdigest, local_digest, Hash.DigestSize() ) ) {
154 cerr<<
"HashDigest does not match : '";
158 cerr<<
"' for file "<<filename<<endl;
159 delete[] local_digest;
162 cerr<<
"HashDigest MATCH : '";
166 cerr<<
"' for file "<<filename<<endl;
168 delete[] local_digest;
185 if ( ( ret =
HashCompute( filename.c_str(), hashdigest, type ) ) < 0 || ret ) {
186 cerr<<
"!!! ERROR = couldn't get "<<filename<<
" HashDigest (not found or error) !!!"<<endl;
189 cerr<<
"-- FILE HASH : "<<filename<<
" = "<<hashdigest<<
" --"<<endl;
191 cerr<<
"-- FILE HASH : "<<filename<<
" = "<<hashdigest<<
" --"<<endl;