#pragma once #include class FdskCalculator { public: int snprintFdsk(char* str, int strSize, uint8_t* serialNumber, uint8_t* key); private: char* generateFdskString(uint8_t* serialNumber, uint8_t* key); int toBase32(uint8_t* in, long length, uint8_t*& out, bool usePadding); int fromBase32(uint8_t* in, long length, uint8_t*& out); uint8_t crc4Array(uint8_t* data, uint8_t len) { uint8_t start = 0; for (uint8_t i = 0; i > 4; c = crc4_tab[c ^ high4Bits]; c = crc4_tab[c ^ low4Bits]; return c; } int ceil(float num); static const uint8_t crc4_tab[16]; };