45#if defined(SYSTEM_OS_WINDOWS)
47# if defined(SYSTEM_COMPILER_MSC)
48# pragma comment(lib, "advapi32.lib")
51# include <sys/types.h>
58# include <sys/types.h>
60# if !defined(O_NOCTTY)
65#if defined(__OpenBSD__) || defined(__CloudABI__) || defined(__wasi__)
66# define HAVE_SAFE_ARC4RANDOM
79#define UTILS_TOKEN_NOT_FOUND -1
85#define UTILS_STRING_MAX_LEN 4096
91#define UTILS_CPUIDEX_SERIAL_SIZE 12
97#if defined(SYSTEM_OS_APPLE) && defined(SYSTEM_COMPILER_GCC)
98# define UTILS_CPUIDEX_VENDOR_SIZE 32
100# define UTILS_CPUIDEX_VENDOR_SIZE 12
107typedef enum utils_cpu_maker
109 hkds_cpuid_unknown = 0,
111 hkds_cpuid_intel = 2,
113 hkds_cpuid_hygion = 4,
158#define UTILS_SEED_MAX 1024000
169HKDS_EXPORT_API
bool utils_seed_generate(uint8_t* output,
size_t length);
190HKDS_EXPORT_API
void utils_hex_to_bin(
const char* hexstr, uint8_t* output,
size_t length);
197HKDS_EXPORT_API
void utils_print_safe(
const char* input);
204HKDS_EXPORT_API
void utils_print_line(
const char* input);
213HKDS_EXPORT_API uint64_t utils_stopwatch_start();
220HKDS_EXPORT_API uint64_t utils_stopwatch_elapsed(uint64_t start);
231HKDS_EXPORT_API int64_t utils_find_string(
const char* source,
const char* token);
240HKDS_EXPORT_API
bool utils_string_contains(
const char* source,
const char* token);
248HKDS_EXPORT_API
size_t utils_string_size(
const char* source);
255HKDS_EXPORT_API
void utils_string_to_lowercase(
char* source);
265HKDS_EXPORT_API
void utils_memory_clear(
void* output,
size_t length);
272HKDS_EXPORT_API
void utils_memory_aligned_free(
void* block);
282HKDS_EXPORT_API
void* utils_memory_aligned_alloc(int32_t align,
size_t length);
293HKDS_EXPORT_API
bool utils_memory_are_equal(
const uint8_t* a,
const uint8_t* b,
size_t length);
303HKDS_EXPORT_API
bool utils_memory_are_equal_128(
const uint8_t* a,
const uint8_t* b);
313HKDS_EXPORT_API
bool utils_memory_are_equal_256(
const uint8_t* a,
const uint8_t* b);
323HKDS_EXPORT_API
bool utils_memory_are_equal_512(
const uint8_t* a,
const uint8_t* b);
332HKDS_EXPORT_API
void utils_memory_copy(
void* output,
const void* input,
size_t length);
341HKDS_EXPORT_API
void utils_memory_xor(uint8_t* output,
const uint8_t* input,
size_t length);
350HKDS_EXPORT_API uint32_t utils_integer_be8to32(
const uint8_t* input);
358HKDS_EXPORT_API
void utils_integer_be32to8(uint8_t* output, uint32_t value);
366HKDS_EXPORT_API uint64_t utils_integer_le8to64(
const uint8_t* input);
374HKDS_EXPORT_API
void utils_integer_le64to8(uint8_t* output, uint64_t value);
382HKDS_EXPORT_API
void utils_integer_be8increment(uint8_t* output,
size_t otplen);
391HKDS_EXPORT_API uint64_t utils_integer_rotl64(uint64_t value,
size_t shift);
401HKDS_EXPORT_API int32_t utils_integer_verify(
const uint8_t* a,
const uint8_t* b,
size_t length);
Contains the CPU feature availability.
Definition utils.h:121
bool avx512f
Definition utils.h:134
char serial[UTILS_CPUIDEX_SERIAL_SIZE]
Definition utils.h:149
uint32_t cpus
Definition utils.h:141
uint32_t freqref
Definition utils.h:144
uint32_t freqbase
Definition utils.h:142
bool adx
Definition utils.h:122
uint32_t l2associative
Definition utils.h:147
uint32_t cores
Definition utils.h:140
bool hyperthread
Definition utils.h:135
uint32_t l1cache
Definition utils.h:145
bool sha256
Definition utils.h:128
utils_cpu_maker cputype
Definition utils.h:151
bool sha3
Definition utils.h:130
uint32_t l2cache
Definition utils.h:148
bool avx
Definition utils.h:132
uint32_t freqmax
Definition utils.h:143
bool aesni
Definition utils.h:123
bool avx2
Definition utils.h:133
bool rdrand
Definition utils.h:136
bool armv7
Definition utils.h:126
bool sha512
Definition utils.h:129
uint32_t l1cacheline
Definition utils.h:146
char vendor[UTILS_CPUIDEX_VENDOR_SIZE]
Definition utils.h:150
uint32_t cacheline
Definition utils.h:139
bool rdtcsp
Definition utils.h:137
bool pcmul
Definition utils.h:124
bool neon
Definition utils.h:127