SlunkCrypt/libslunkcrypt/include/slunkcrypt.h

108 lines
2.9 KiB
C

/******************************************************************************/
/* SlunkCrypt, by LoRd_MuldeR <MuldeR2@GMX.de> */
/* This work has been released under the CC0 1.0 Universal license! */
/******************************************************************************/
#ifndef INC_SLUNKCRYPT_H
#define INC_SLUNKCRYPT_H
/*
* Build options
*/
#ifndef SLUNKCRYPT_SHARED
#define SLUNKCRYPT_SHARED 0
#endif
#ifndef SLUNKCRYPT_EXPORT
#define SLUNKCRYPT_EXPORT 0
#endif
/*
* Win32 DLL support
*/
#if defined(_MSC_VER) && SLUNKCRYPT_SHARED
#if SLUNKCRYPT_EXPORT
#define SLUNKCRYPT_API __declspec(dllexport)
#else
#define SLUNKCRYPT_API __declspec(dllimport)
#endif
#else
#define SLUNKCRYPT_API
#endif
#include <stdlib.h>
#include <stdint.h>
/*
* 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;
/*
* Version info
*/
SLUNKCRYPT_API extern const uint16_t SLUNKCRYPT_VERSION_MAJOR;
SLUNKCRYPT_API extern const uint16_t SLUNKCRYPT_VERSION_MINOR;
SLUNKCRYPT_API extern const uint16_t SLUNKCRYPT_VERSION_PATCH;
/*
* Build date and time
*/
SLUNKCRYPT_API extern const char *const SLUNKCRYPT_BUILD;
/*
* Abort flag
*/
SLUNKCRYPT_API extern volatile int g_slunkcrypt_abort_flag;
/*
* Global (de)initialization routines
*/
SLUNKCRYPT_API void slunkcrypt_startup(void);
SLUNKCRYPT_API void slunkcrypt_cleanup(void);
/*
* Seed generator
*/
SLUNKCRYPT_API int slunkcrypt_generate_seed(uint64_t* const seed);
/*
* Allocate, reset or free state
*/
SLUNKCRYPT_API slunkcrypt_t slunkcrypt_alloc(const uint64_t salt, const uint8_t *const passwd, const size_t passwd_len);
SLUNKCRYPT_API int slunkcrypt_reset(const slunkcrypt_t context, const uint64_t salt, const uint8_t *const passwd, const size_t passwd_len);
SLUNKCRYPT_API void slunkcrypt_free(const slunkcrypt_t context);
/*
* Encryption routines
*/
SLUNKCRYPT_API int slunkcrypt_encrypt(const slunkcrypt_t context, const uint8_t *const input, uint8_t* const output, size_t length);
SLUNKCRYPT_API int slunkcrypt_encrypt_inplace(const slunkcrypt_t context, uint8_t *const buffer, size_t length);
/*
* Decryption routines
*/
SLUNKCRYPT_API int slunkcrypt_decrypt(const slunkcrypt_t context, const uint8_t *const input, uint8_t *const output, size_t length);
SLUNKCRYPT_API int slunkcrypt_decrypt_inplace(const slunkcrypt_t context, uint8_t* const buffer, size_t length);
/*
* Auxiliary functions
*/
SLUNKCRYPT_API int slunkcrypt_random_bytes(uint8_t* const buffer, const size_t length);
SLUNKCRYPT_API void slunkcrypt_bzero(void* const ptr, const size_t length);
#endif