Forgotten :(
[uccvend-snackrom.git] / ROM2 / mic.c
1 #include "mic.h"
2 #include "types.h"
3 #include "vend.h"
4 #include "xmodem.h"
5
6 void mic_set_secret(char newsecret[16]) {
7         my_strncpy(mic_secret, newsecret, 16);
8 }
9
10 bool mic_verify(void* msg) {
11         char *message, *p;
12         message = (char*)msg;
13         p = message;
14         while (*p != '\0' && *p != '|') p++;
15         if (*p == '\0') return 0;
16         u16 crc1 = docrc((char*)&current_challenge, 2, 0, 0);
17         crc1 = docrc(mic_secret, 16, 0, crc1);
18         crc1 = docrc(message, p-message, 0, crc1);
19         u16 crc2;
20         p++;
21         if (*(p) == '\0' ||
22                 *(p+1) == '\0' ||
23                 *(p+2) == '\0' ||
24                 *(p+3) == '\0' ||
25                 *(p+4) != '\0')
26                 return 0;
27         crc2 = hex2u8(*p, *(p+1)) << 8;
28         crc2 |= hex2u8(*(p+2), *(p+3));
29
30         if (crc1 != crc2) return 0;
31
32         current_challenge++;
33         return 1;
34 }

UCC git Repository :: git.ucc.asn.au