/******************************************************************************/ /* SlunkCrypt, by LoRd_MuldeR */ /* This work has been released under the CC0 1.0 Universal license! */ /******************************************************************************/ #ifndef INC_SLUNKCRYPT_H #define INC_SLUNKCRYPT_H #include #include /* * Version info */ extern const uint16_t SLUNKCRYPT_VERSION_MAJOR; extern const uint16_t SLUNKCRYPT_VERSION_MINOR; extern const uint16_t SLUNKCRYPT_VERSION_PATCH; /* * Build date and time */ extern const char *const SLUNKCRYPT_BUILD; /* * Abort flag */ extern volatile int g_slunkcrypt_abort_flag; /* * Opaque handle to internal state */ typedef uintptr_t slunkcrypt_t; #define SLUNKCRYPT_NULL ((slunkcrypt_t)NULL) /* * Error codes */ static const int SLUNKCRYPT_SUCCESS = 0; static const int SLUNKCRYPT_FAILURE = -1; static const int SLUNKCRYPT_ABORTED = -2; /* * Limits */ static const size_t SLUNKCRYPT_PWDLEN_MIN = 5U; static const size_t SLUNKCRYPT_PWDLEN_MAX = 512U; /* * Seed generator */ int slunkcrypt_generate_seed(uint64_t* const seed); /* * Allocate, reset or free state */ slunkcrypt_t slunkcrypt_alloc(const uint64_t salt, const uint8_t *const passwd, const size_t passwd_len); int slunkcrypt_reset(const slunkcrypt_t context, const uint64_t salt, const uint8_t *const passwd, const size_t passwd_len); void slunkcrypt_free(const slunkcrypt_t context); /* * Encryption routines */ int slunkcrypt_encrypt(const slunkcrypt_t context, const uint8_t *const input, uint8_t* const output, size_t length); int slunkcrypt_encrypt_inplace(const slunkcrypt_t context, uint8_t *const buffer, size_t length); /* * Decryption routines */ int slunkcrypt_decrypt(const slunkcrypt_t context, const uint8_t *const input, uint8_t *const output, size_t length); int slunkcrypt_decrypt_inplace(const slunkcrypt_t context, uint8_t* const buffer, size_t length); /* * Auxiliary functions */ int slunkcrypt_random_bytes(uint8_t* const buffer, const size_t length); void slunkcrypt_bzero(void* const ptr, const size_t length); #endif