85 lines
2.2 KiB
C
85 lines
2.2 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
|
|
|
|
#include <stdlib.h>
|
|
#include <stdint.h>
|
|
|
|
/*
|
|
* 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;
|
|
|
|
/*
|
|
* Global (de)initialization routines
|
|
*/
|
|
void slunkcrypt_startup(void);
|
|
void slunkcrypt_cleanup(void);
|
|
|
|
/*
|
|
* 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
|