mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-11-26 23:47:21 +00:00
55 lines
770 B
C
55 lines
770 B
C
|
/// \file
|
||
|
/// \brief \b [Internal] Generates and validates checksums
|
||
|
///
|
||
|
/// \note I didn't write this, but took it from http://www.flounder.com/checksum.htm
|
||
|
///
|
||
|
|
||
|
#ifndef __CHECKSUM_H
|
||
|
#define __CHECKSUM_H
|
||
|
|
||
|
#include "RakMemoryOverride.h"
|
||
|
|
||
|
/// Generates and validates checksums
|
||
|
class CheckSum : public RakNet::RakMemoryOverride
|
||
|
{
|
||
|
|
||
|
public:
|
||
|
|
||
|
/// Default constructor
|
||
|
|
||
|
CheckSum()
|
||
|
{
|
||
|
Clear();
|
||
|
}
|
||
|
|
||
|
void Clear()
|
||
|
{
|
||
|
sum = 0;
|
||
|
r = 55665;
|
||
|
c1 = 52845;
|
||
|
c2 = 22719;
|
||
|
}
|
||
|
|
||
|
void Add ( unsigned int w );
|
||
|
|
||
|
|
||
|
void Add ( unsigned short w );
|
||
|
|
||
|
void Add ( unsigned char* b, unsigned int length );
|
||
|
|
||
|
void Add ( unsigned char b );
|
||
|
|
||
|
unsigned int Get ()
|
||
|
{
|
||
|
return sum;
|
||
|
}
|
||
|
|
||
|
protected:
|
||
|
unsigned short r;
|
||
|
unsigned short c1;
|
||
|
unsigned short c2;
|
||
|
unsigned int sum;
|
||
|
};
|
||
|
|
||
|
#endif
|