summaryrefslogtreecommitdiff
path: root/payloads/bayou/util/pbuilder/lzma/C/Common/CRC.h
diff options
context:
space:
mode:
authorStefan Reinauer <stepan@coresystems.de>2009-10-30 18:16:09 +0000
committerStefan Reinauer <stepan@openbios.org>2009-10-30 18:16:09 +0000
commit20d626572bf95cd20bfeec98e81a74a2b40366b8 (patch)
tree10202e31c07d52a43d0a4d37ce45aba3579e120c /payloads/bayou/util/pbuilder/lzma/C/Common/CRC.h
parent9ac9e94b452b5ac58b6f7c44f1356b8e212ffcec (diff)
downloadcoreboot-20d626572bf95cd20bfeec98e81a74a2b40366b8.tar.xz
drop svn:externals in the tree and add it locally.
Signed-off-by: Stefan Reinauer <stepan@coresystems.de> Acked-by: Patrick Georgi <patrick.georgi@coresystems.de> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@4898 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
Diffstat (limited to 'payloads/bayou/util/pbuilder/lzma/C/Common/CRC.h')
-rw-r--r--payloads/bayou/util/pbuilder/lzma/C/Common/CRC.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/payloads/bayou/util/pbuilder/lzma/C/Common/CRC.h b/payloads/bayou/util/pbuilder/lzma/C/Common/CRC.h
new file mode 100644
index 0000000000..c9d43d0055
--- /dev/null
+++ b/payloads/bayou/util/pbuilder/lzma/C/Common/CRC.h
@@ -0,0 +1,36 @@
+// Common/CRC.h
+
+#ifndef __COMMON_CRC_H
+#define __COMMON_CRC_H
+
+#include <stddef.h>
+#include "Types.h"
+
+class CCRC
+{
+ UInt32 _value;
+public:
+ static UInt32 Table[256];
+ static void InitTable();
+
+ CCRC(): _value(0xFFFFFFFF){};
+ void Init() { _value = 0xFFFFFFFF; }
+ void UpdateByte(Byte v);
+ void UpdateUInt16(UInt16 v);
+ void UpdateUInt32(UInt32 v);
+ void UpdateUInt64(UInt64 v);
+ void Update(const void *data, size_t size);
+ UInt32 GetDigest() const { return _value ^ 0xFFFFFFFF; }
+ static UInt32 CalculateDigest(const void *data, size_t size)
+ {
+ CCRC crc;
+ crc.Update(data, size);
+ return crc.GetDigest();
+ }
+ static bool VerifyDigest(UInt32 digest, const void *data, size_t size)
+ {
+ return (CalculateDigest(data, size) == digest);
+ }
+};
+
+#endif