summaryrefslogtreecommitdiffstats
path: root/hostTools/lzma/compress/CRC.h
diff options
context:
space:
mode:
Diffstat (limited to 'hostTools/lzma/compress/CRC.h')
-rw-r--r--hostTools/lzma/compress/CRC.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/hostTools/lzma/compress/CRC.h b/hostTools/lzma/compress/CRC.h
new file mode 100644
index 0000000..cbef4b6
--- /dev/null
+++ b/hostTools/lzma/compress/CRC.h
@@ -0,0 +1,27 @@
+#ifndef __COMMON_CRC_H
+#define __COMMON_CRC_H
+
+#include "Portable.h"
+
+class CCRC
+{
+ UINT32 m_Value;
+public:
+ static UINT32 m_Table[256];
+ CCRC(): m_Value(0xFFFFFFFF){};
+ void Init() { m_Value = 0xFFFFFFFF; }
+ void Update(const void *aData, UINT32 aSize);
+ UINT32 GetDigest() const { return m_Value ^ 0xFFFFFFFF; }
+ static UINT32 CalculateDigest(const void *aData, UINT32 aSize)
+ {
+ CCRC aCRC;
+ aCRC.Update(aData, aSize);
+ return aCRC.GetDigest();
+ }
+ static bool VerifyDigest(UINT32 aDigest, const void *aData, UINT32 aSize)
+ {
+ return (CalculateDigest(aData, aSize) == aDigest);
+ }
+};
+
+#endif