Pyrogenesis  trunk
HashSerializer.h
Go to the documentation of this file.
1 /* Copyright (C) 2010 Wildfire Games.
2  * This file is part of 0 A.D.
3  *
4  * 0 A.D. is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * 0 A.D. is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with 0 A.D. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 #ifndef INCLUDED_HASHSERIALIZER
19 #define INCLUDED_HASHSERIALIZER
20 
21 #include "BinarySerializer.h"
22 
23 #include "maths/MD5.h"
24 
26 {
27  // We don't care about cryptographic strength, just about detection of
28  // unintended changes and about performance, so MD5 is an adequate choice
29  typedef MD5 HashFunc;
30 
31 public:
32  size_t GetHashLength();
33  const u8* ComputeHash();
34 
35  void Put(const char* UNUSED(name), const u8* data, size_t len)
36  {
37  m_Hash.Update(data, len);
38  }
39 
40 private:
41  HashFunc m_Hash;
43 };
44 
45 class CHashSerializer : public CBinarySerializer<CHashSerializerImpl>
46 {
47 public:
48  CHashSerializer(ScriptInterface& scriptInterface);
49 
50  size_t GetHashLength();
51  const u8* ComputeHash();
52 };
53 
54 #endif // INCLUDED_HASHSERIALIZER
#define UNUSED(param)
mark a function parameter as unused and avoid the corresponding compiler warning. ...
Definition: code_annotation.h:38
HashFunc m_Hash
Definition: HashSerializer.h:41
u8 m_HashData[HashFunc::DIGESTSIZE]
Definition: HashSerializer.h:42
static const size_t DIGESTSIZE
Definition: MD5.h:30
MD5 HashFunc
Definition: HashSerializer.h:29
Definition: HashSerializer.h:45
uint8_t u8
Definition: types.h:37
void Update(const u8 *data, size_t len)
Definition: MD5.h:34
Definition: HashSerializer.h:25
void Put(const char *name, const u8 *data, size_t len)
Definition: HashSerializer.h:35
MD5 hashing algorithm.
Definition: MD5.h:27
size_t GetHashLength()
Definition: HashSerializer.cpp:37
const u8 * ComputeHash()
Definition: HashSerializer.cpp:42
Abstraction around a SpiderMonkey JSContext.
Definition: ScriptInterface.h:71
Serialize to a binary stream.
Definition: BinarySerializer.h:110