34 lines
658 B
C
Executable File
34 lines
658 B
C
Executable File
#include <hwo/runtime.h>
|
|
#include <hwo/bits.h>
|
|
|
|
uint8_t rt_authenticate(int32_t token) {
|
|
uint8_t sum;
|
|
|
|
if (token == 0) {
|
|
rt_ram.accesscode.code = 0;
|
|
} else {
|
|
sum = 0xE2;
|
|
sum ^= rol8( (token >> 0) & 0xff, 3 );
|
|
sum ^= rol8( (token >> 8) & 0xff, 5 );
|
|
sum ^= rol8( (token >> 16) & 0xff, 2 );
|
|
sum ^= rol8( (token >> 24) & 0xff, 1 );
|
|
|
|
if (sum) {
|
|
sum ^= rol8( (rt_ram.eeprom.serial.family),6 );
|
|
};
|
|
|
|
if (!sum) {
|
|
rt_ram.accesscode.code = token;
|
|
|
|
rt_ram.eeprom.last_auth = rt_ram.accesscode.servicepartner;
|
|
|
|
runtime_signal();
|
|
return -1;
|
|
} else {
|
|
rt_ram.accesscode.code = 0;
|
|
};
|
|
};
|
|
runtime_signal();
|
|
return 0;
|
|
};
|