while others dislike them being extra commits, let's clean them up once and for all for the existing code. If it's ugly, let it only be ugly once :-) Signed-off-by: Stefan Reinauer <stepan@coresystems.de> Acked-by: Stefan Reinauer <stepan@coresystems.de> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5507 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
		
			
				
	
	
		
			37 lines
		
	
	
		
			778 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			778 B
		
	
	
	
		
			C++
		
	
	
	
	
	
| // 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
 |