/* Copyright (c) 2014 IOnU Security Inc. All rights reserved Created April 2014 by Kendrick Webster K2Client/util.h - miscellaneous utility and low-level support functions */ #pragma once #include "Hash.h" #include "constants.h" /* logging */ typedef enum { LOG_FATAL, LOG_ERROR, LOG_WARNING, LOG_INFORMATIONAL, LOG_DEBUG, LOG_VERBOSE } log_level_t; void initialize_logging(void); void finalize_logging(void); void set_log_level(log_level_t level); // ok to call at any time (w.r.t. initialize_logging et. al.) void log_printf(log_level_t lev, const char* fmt, ...); #define log_fatal(...) log_printf(LOG_FATAL, __VA_ARGS__) #define log_error(...) log_printf(LOG_ERROR, __VA_ARGS__) #define log_warn(...) log_printf(LOG_WARNING, __VA_ARGS__) #define log_info(...) log_printf(LOG_INFORMATIONAL, __VA_ARGS__) #define log_debug(...) log_printf(LOG_DEBUG, __VA_ARGS__) #define log_verbose(...) log_printf(LOG_VERBOSE, __VA_ARGS__) /* random number generator, thread safe and fast */ void seed_random(void); /* hash an entropy source (high-resolution clock, etc.) into the entropy pool */ void seed_random_with_bytes(void* buf, size_t len); /* hash a buffer into the RNG entropy pool */ unsigned int get_random(unsigned int modulus); /* returns number between 0 and (modulus - 1), note: slight bias (see implementation) */ void get_random_bytes(void* buf, size_t len); /* fills bytes of with randomness */ /* misc */ #define TRUE 1 #define FALSE 0 int safe_strcpy(char* d, unsigned int n, const char* s); /* returns TRUE if string was truncated */