Create a branch for header work.
[reactos.git] / lib / cmlib / hivesum.c
1 /*
2 * PROJECT: registry manipulation library
3 * LICENSE: GPL - See COPYING in the top level directory
4 * COPYRIGHT: Copyright 2005 Filip Navara <navaraf@reactos.org>
5 * Copyright 2001 - 2005 Eric Kohl
6 */
7
8 #include "cmlib.h"
9
10 /**
11 * @name HvpHiveHeaderChecksum
12 *
13 * Compute checksum of hive header and return it.
14 */
15
16 ULONG CMAPI
17 HvpHiveHeaderChecksum(
18 PHBASE_BLOCK HiveHeader)
19 {
20 PULONG Buffer = (PULONG)HiveHeader;
21 ULONG Sum = 0;
22 ULONG i;
23
24 for (i = 0; i < 127; i++)
25 Sum ^= Buffer[i];
26 if (Sum == (ULONG)-1)
27 Sum = (ULONG)-2;
28 if (Sum == 0)
29 Sum = 1;
30
31 return Sum;
32 }