00001
00022
#ifndef CHECKSUM_HEADER
00023
#define CHECKSUM_HEADER
00024
00025
#include <windows.h>
00026
#include <vector>
00027
00028
#include "crcmodel.h"
00029
00031
#ifndef CRCCHECKSUMWIDTH
00032
#define CRCCHECKSUMWIDTH 16
00033
#endif
00034
00036
#ifndef POLY
00037
#define POLY 0x1021
00038
#endif
00039
00041
#ifndef INITREGISTER
00042
#define INITREGISTER 0xffff
00043
#endif
00044
00046
#ifndef BREFLECTINPUT
00047
#define BREFLECTINPUT false
00048
#endif
00049
00051
#ifndef BREFLECTOUTPUT
00052
#define BREFLECTOUTPUT false
00053
#endif
00054
00056
#ifndef BXOROUT
00057
#define BXOROUT 0
00058
#endif
00059
00060
00061
typedef WORD CHECKSUM_TYPE;
00062
00067 class CChecksum
00068 {
00069
public:
00070
00074 CChecksum()
00075 {
00076
m_sData.
cm_width= CRCCHECKSUMWIDTH;
00077
m_sData.
cm_poly= POLY;
00078
m_sData.
cm_init= INITREGISTER;
00079
m_sData.
cm_refin= BREFLECTINPUT;
00080
m_sData.
cm_refot= BREFLECTOUTPUT;
00081
m_sData.
cm_xorot= BXOROUT;
00082
m_sData.
cm_reg= INITREGISTER;
00083 }
00084
00085
virtual ~
CChecksum() {};
00086
00087
00092 CHECKSUM_TYPE
CalcCheckSum(
const std::vector<unsigned char>& block );
00093
00094
protected:
00095
private:
00097 cm_t m_sData;
00098 };
00099
00100
#endif