Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
1805 yogev_ezra 1
#include "kosSyst.h"
2
#include "CRC32.h"
3
 
4
 
5
 
6
CCRC32::CCRC32()
7
{
8
        Dword i, mask, j, k;
9
 
10
        for ( i=0xEDB8; i >= 0x8320; i-- )
11
        {
12
                mask = i;
13
                for ( j=0; j<8; j++ )
14
                {
15
                        k = mask;
16
                        mask >>= 1;
17
                        if ( k & 1 )
18
                        {
19
                                mask ^= 0xEDB88320;
20
                        }
21
                        this->table[i & 0xFF] = mask;
22
                }
23
        }
24
}
25
 
26
 
27
Dword CCRC32::InitCRC32()
28
{
29
        return 0xFFFFFFFF;
30
}
31
 
32
 
33
Dword CCRC32::FinalizeCRC32(Dword d)
34
{
35
        return ~d;
36
}
37
 
38
 
39
void CCRC32::DoCRC32(Byte *buffer, Dword length, Dword *CRC32value)
40
{
41
        Dword result, i;
42
        Byte mask;
43
 
44
        result = *CRC32value;
45
 
46
        for ( i=0; i
47
        {
48
                mask = (Byte)( ( result ^ buffer[i] ) & 0xFF );
49
                result = ( result >>= 8 ) ^ this->table[mask];
50
        }
51
        *CRC32value = result;
52
}
53
 
54
 
55
Dword CCRC32::GetCRC32(Byte *buffer, Dword length)
56
{
57
        Dword result;
58
 
59
        result = 0xFFFFFFFF;
60
 
61
        this->DoCRC32( buffer, length, &result );
62
 
63
        return ~result;
64
}