Pyrogenesis HEAD
Pyrogenesis, a RTS Engine
HashSerializer.h
Go to the documentation of this file.
1/* Copyright (C) 2017 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
31public:
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
40private:
43};
44
45class CHashSerializer : public CBinarySerializer<CHashSerializerImpl>
46{
47public:
48 CHashSerializer(const ScriptInterface& scriptInterface);
49
50 size_t GetHashLength();
51 const u8* ComputeHash();
52};
53
54#endif // INCLUDED_HASHSERIALIZER
Serialize to a binary stream.
Definition: BinarySerializer.h:109
Definition: HashSerializer.h:26
u8 m_HashData[HashFunc::DIGESTSIZE]
Definition: HashSerializer.h:42
const u8 * ComputeHash()
Definition: HashSerializer.cpp:42
void Put(const char *name, const u8 *data, size_t len)
Definition: HashSerializer.h:35
size_t GetHashLength()
Definition: HashSerializer.cpp:37
HashFunc m_Hash
Definition: HashSerializer.h:41
MD5 HashFunc
Definition: HashSerializer.h:29
Definition: HashSerializer.h:46
CHashSerializer(const ScriptInterface &scriptInterface)
Definition: HashSerializer.cpp:22
const u8 * ComputeHash()
Definition: HashSerializer.cpp:32
size_t GetHashLength()
Definition: HashSerializer.cpp:27
MD5 hashing algorithm.
Definition: MD5.h:28
static const size_t DIGESTSIZE
Definition: MD5.h:30
void Update(const u8 *data, size_t len)
Definition: MD5.h:34
Abstraction around a SpiderMonkey JS::Realm.
Definition: ScriptInterface.h:72
#define UNUSED(param)
mark a function parameter as unused and avoid the corresponding compiler warning.
Definition: code_annotation.h:40
uint8_t u8
Definition: types.h:37