3 typedef unsigned short u16;
4 typedef unsigned char bool;
8 docrc (unsigned char *p, int len, bool pad, unsigned short crcstart)
11 unsigned short crc = crcstart;
14 crc = (crc << 8) ^ crctab[(crc >> 8) ^ *p++];
15 if (pad && len2 < 128) {
18 crc = (crc << 8) ^ crctab[(crc >> 8) ^ 0x1a];
24 int main(int argc, char** argv) {
27 char *password, *message;
29 fprintf(stderr, "Usage: %s <id> <password> <message>\n", argv[0]);
32 msgid = strtol(argv[1], NULL, 16);
35 crc = docrc(((char*)&msgid)+1, 1, 0, 0);
36 crc = docrc(((char*)&msgid), 1, 0, crc);
37 crc = docrc(password, strlen(password), 0, crc);
38 crc = docrc(message, strlen(message), 0, crc);
39 printf("CRC is 0x%x\n", crc);