
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@2015 ec53bebd-3082-4978-b11e-865c3cabbd6b
39 lines
569 B
C
39 lines
569 B
C
#include "krb5_locl.h"
|
|
|
|
RCSID("$Id$");
|
|
|
|
#include <stdio.h>
|
|
#include "crc.h"
|
|
|
|
static u_long table[256];
|
|
|
|
#define CRC_GEN 0xEDB88320L
|
|
|
|
void
|
|
crc_init_table(void)
|
|
{
|
|
unsigned long crc, poly;
|
|
int i, j;
|
|
|
|
poly = CRC_GEN;
|
|
for (i = 0; i < 256; i++) {
|
|
crc = i;
|
|
for (j = 8; j > 0; j--) {
|
|
if (crc & 1) {
|
|
crc = (crc >> 1) ^ poly;
|
|
} else {
|
|
crc >>= 1;
|
|
}
|
|
}
|
|
table[i] = crc;
|
|
}
|
|
}
|
|
|
|
u_int32_t
|
|
crc_update (char *p, size_t len, u_int32_t res)
|
|
{
|
|
while (len--)
|
|
res = table[(res ^ *p++) & 0xFF] ^ (res >> 8);
|
|
return res & 0xFFFFFFFF;
|
|
}
|