Monero
Classes | Macros | Typedefs | Enumerations | Functions
argon2.h File Reference
#include <stdint.h>
#include <stddef.h>
#include <limits.h>
Include dependency graph for argon2.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  Argon2_Context
 

Macros

#define ARGON2_MIN_LANES   UINT32_C(1)
 
#define ARGON2_MAX_LANES   UINT32_C(0xFFFFFF)
 
#define ARGON2_MIN_THREADS   UINT32_C(1)
 
#define ARGON2_MAX_THREADS   UINT32_C(0xFFFFFF)
 
#define ARGON2_SYNC_POINTS   UINT32_C(4)
 
#define ARGON2_MIN_OUTLEN   UINT32_C(4)
 
#define ARGON2_MAX_OUTLEN   UINT32_C(0xFFFFFFFF)
 
#define ARGON2_MIN_MEMORY   (2 * ARGON2_SYNC_POINTS) /* 2 blocks per slice */
 
#define ARGON2_MIN(a, b)   ((a) < (b) ? (a) : (b))
 
#define ARGON2_MAX_MEMORY_BITS   ARGON2_MIN(UINT32_C(32), (sizeof(void *) * CHAR_BIT - 10 - 1))
 
#define ARGON2_MAX_MEMORY   ARGON2_MIN(UINT32_C(0xFFFFFFFF), UINT64_C(1) << ARGON2_MAX_MEMORY_BITS)
 
#define ARGON2_MIN_TIME   UINT32_C(1)
 
#define ARGON2_MAX_TIME   UINT32_C(0xFFFFFFFF)
 
#define ARGON2_MIN_PWD_LENGTH   UINT32_C(0)
 
#define ARGON2_MAX_PWD_LENGTH   UINT32_C(0xFFFFFFFF)
 
#define ARGON2_MIN_AD_LENGTH   UINT32_C(0)
 
#define ARGON2_MAX_AD_LENGTH   UINT32_C(0xFFFFFFFF)
 
#define ARGON2_MIN_SALT_LENGTH   UINT32_C(8)
 
#define ARGON2_MAX_SALT_LENGTH   UINT32_C(0xFFFFFFFF)
 
#define ARGON2_MIN_SECRET   UINT32_C(0)
 
#define ARGON2_MAX_SECRET   UINT32_C(0xFFFFFFFF)
 
#define ARGON2_DEFAULT_FLAGS   UINT32_C(0)
 
#define ARGON2_FLAG_CLEAR_PASSWORD   (UINT32_C(1) << 0)
 
#define ARGON2_FLAG_CLEAR_SECRET   (UINT32_C(1) << 1)
 

Typedefs

typedef enum Argon2_ErrorCodes argon2_error_codes
 
typedef int(* allocate_fptr) (uint8_t **memory, size_t bytes_to_allocate)
 
typedef void(* deallocate_fptr) (uint8_t *memory, size_t bytes_to_allocate)
 
typedef struct Argon2_Context argon2_context
 
typedef enum Argon2_type argon2_type
 
typedef enum Argon2_version argon2_version
 
typedef struct Argon2_instance_t argon2_instance_t
 
typedef struct Argon2_position_t argon2_position_t
 
typedef void randomx_argon2_impl(const argon2_instance_t *instance, argon2_position_t position)
 

Enumerations

enum  Argon2_ErrorCodes {
  ARGON2_OK = 0, ARGON2_OUTPUT_PTR_NULL = -1, ARGON2_OUTPUT_TOO_SHORT = -2, ARGON2_OUTPUT_TOO_LONG = -3,
  ARGON2_PWD_TOO_SHORT = -4, ARGON2_PWD_TOO_LONG = -5, ARGON2_SALT_TOO_SHORT = -6, ARGON2_SALT_TOO_LONG = -7,
  ARGON2_AD_TOO_SHORT = -8, ARGON2_AD_TOO_LONG = -9, ARGON2_SECRET_TOO_SHORT = -10, ARGON2_SECRET_TOO_LONG = -11,
  ARGON2_TIME_TOO_SMALL = -12, ARGON2_TIME_TOO_LARGE = -13, ARGON2_MEMORY_TOO_LITTLE = -14, ARGON2_MEMORY_TOO_MUCH = -15,
  ARGON2_LANES_TOO_FEW = -16, ARGON2_LANES_TOO_MANY = -17, ARGON2_PWD_PTR_MISMATCH = -18, ARGON2_SALT_PTR_MISMATCH = -19,
  ARGON2_SECRET_PTR_MISMATCH = -20, ARGON2_AD_PTR_MISMATCH = -21, ARGON2_MEMORY_ALLOCATION_ERROR = -22, ARGON2_FREE_MEMORY_CBK_NULL = -23,
  ARGON2_ALLOCATE_MEMORY_CBK_NULL = -24, ARGON2_INCORRECT_PARAMETER = -25, ARGON2_INCORRECT_TYPE = -26, ARGON2_OUT_PTR_MISMATCH = -27,
  ARGON2_THREADS_TOO_FEW = -28, ARGON2_THREADS_TOO_MANY = -29, ARGON2_MISSING_ARGS = -30, ARGON2_ENCODING_FAIL = -31,
  ARGON2_DECODING_FAIL = -32, ARGON2_THREAD_FAIL = -33, ARGON2_DECODING_LENGTH_FAIL = -34, ARGON2_VERIFY_MISMATCH = -35
}
 
enum  Argon2_type { Argon2_d = 0, Argon2_i = 1, Argon2_id = 2 }
 
enum  Argon2_version { ARGON2_VERSION_10 = 0x10, ARGON2_VERSION_13 = 0x13, ARGON2_VERSION_NUMBER = ARGON2_VERSION_13 }
 

Functions

void randomx_argon2_fill_segment_ref (const argon2_instance_t *instance, argon2_position_t position)
 
randomx_argon2_implrandomx_argon2_impl_ssse3 ()
 
randomx_argon2_implrandomx_argon2_impl_avx2 ()
 

Macro Definition Documentation

◆ ARGON2_DEFAULT_FLAGS

#define ARGON2_DEFAULT_FLAGS   UINT32_C(0)

◆ ARGON2_FLAG_CLEAR_PASSWORD

#define ARGON2_FLAG_CLEAR_PASSWORD   (UINT32_C(1) << 0)

◆ ARGON2_FLAG_CLEAR_SECRET

#define ARGON2_FLAG_CLEAR_SECRET   (UINT32_C(1) << 1)

◆ ARGON2_MAX_AD_LENGTH

#define ARGON2_MAX_AD_LENGTH   UINT32_C(0xFFFFFFFF)

◆ ARGON2_MAX_LANES

#define ARGON2_MAX_LANES   UINT32_C(0xFFFFFF)

◆ ARGON2_MAX_MEMORY

#define ARGON2_MAX_MEMORY   ARGON2_MIN(UINT32_C(0xFFFFFFFF), UINT64_C(1) << ARGON2_MAX_MEMORY_BITS)

◆ ARGON2_MAX_MEMORY_BITS

#define ARGON2_MAX_MEMORY_BITS   ARGON2_MIN(UINT32_C(32), (sizeof(void *) * CHAR_BIT - 10 - 1))

◆ ARGON2_MAX_OUTLEN

#define ARGON2_MAX_OUTLEN   UINT32_C(0xFFFFFFFF)

◆ ARGON2_MAX_PWD_LENGTH

#define ARGON2_MAX_PWD_LENGTH   UINT32_C(0xFFFFFFFF)

◆ ARGON2_MAX_SALT_LENGTH

#define ARGON2_MAX_SALT_LENGTH   UINT32_C(0xFFFFFFFF)

◆ ARGON2_MAX_SECRET

#define ARGON2_MAX_SECRET   UINT32_C(0xFFFFFFFF)

◆ ARGON2_MAX_THREADS

#define ARGON2_MAX_THREADS   UINT32_C(0xFFFFFF)

◆ ARGON2_MAX_TIME

#define ARGON2_MAX_TIME   UINT32_C(0xFFFFFFFF)

◆ ARGON2_MIN

#define ARGON2_MIN (   a,
  b 
)    ((a) < (b) ? (a) : (b))

◆ ARGON2_MIN_AD_LENGTH

#define ARGON2_MIN_AD_LENGTH   UINT32_C(0)

◆ ARGON2_MIN_LANES

#define ARGON2_MIN_LANES   UINT32_C(1)

◆ ARGON2_MIN_MEMORY

#define ARGON2_MIN_MEMORY   (2 * ARGON2_SYNC_POINTS) /* 2 blocks per slice */

◆ ARGON2_MIN_OUTLEN

#define ARGON2_MIN_OUTLEN   UINT32_C(4)

◆ ARGON2_MIN_PWD_LENGTH

#define ARGON2_MIN_PWD_LENGTH   UINT32_C(0)

◆ ARGON2_MIN_SALT_LENGTH

#define ARGON2_MIN_SALT_LENGTH   UINT32_C(8)

◆ ARGON2_MIN_SECRET

#define ARGON2_MIN_SECRET   UINT32_C(0)

◆ ARGON2_MIN_THREADS

#define ARGON2_MIN_THREADS   UINT32_C(1)

◆ ARGON2_MIN_TIME

#define ARGON2_MIN_TIME   UINT32_C(1)

◆ ARGON2_SYNC_POINTS

#define ARGON2_SYNC_POINTS   UINT32_C(4)

Typedef Documentation

◆ allocate_fptr

typedef int(* allocate_fptr) (uint8_t **memory, size_t bytes_to_allocate)

◆ argon2_context

◆ argon2_error_codes

◆ argon2_instance_t

◆ argon2_position_t

◆ argon2_type

typedef enum Argon2_type argon2_type

◆ argon2_version

◆ deallocate_fptr

typedef void(* deallocate_fptr) (uint8_t *memory, size_t bytes_to_allocate)

◆ randomx_argon2_impl

typedef void randomx_argon2_impl(const argon2_instance_t *instance, argon2_position_t position)

Enumeration Type Documentation

◆ Argon2_ErrorCodes

Enumerator
ARGON2_OK 
ARGON2_OUTPUT_PTR_NULL 
ARGON2_OUTPUT_TOO_SHORT 
ARGON2_OUTPUT_TOO_LONG 
ARGON2_PWD_TOO_SHORT 
ARGON2_PWD_TOO_LONG 
ARGON2_SALT_TOO_SHORT 
ARGON2_SALT_TOO_LONG 
ARGON2_AD_TOO_SHORT 
ARGON2_AD_TOO_LONG 
ARGON2_SECRET_TOO_SHORT 
ARGON2_SECRET_TOO_LONG 
ARGON2_TIME_TOO_SMALL 
ARGON2_TIME_TOO_LARGE 
ARGON2_MEMORY_TOO_LITTLE 
ARGON2_MEMORY_TOO_MUCH 
ARGON2_LANES_TOO_FEW 
ARGON2_LANES_TOO_MANY 
ARGON2_PWD_PTR_MISMATCH 
ARGON2_SALT_PTR_MISMATCH 
ARGON2_SECRET_PTR_MISMATCH 
ARGON2_AD_PTR_MISMATCH 
ARGON2_MEMORY_ALLOCATION_ERROR 
ARGON2_FREE_MEMORY_CBK_NULL 
ARGON2_ALLOCATE_MEMORY_CBK_NULL 
ARGON2_INCORRECT_PARAMETER 
ARGON2_INCORRECT_TYPE 
ARGON2_OUT_PTR_MISMATCH 
ARGON2_THREADS_TOO_FEW 
ARGON2_THREADS_TOO_MANY 
ARGON2_MISSING_ARGS 
ARGON2_ENCODING_FAIL 
ARGON2_DECODING_FAIL 
ARGON2_THREAD_FAIL 
ARGON2_DECODING_LENGTH_FAIL 
ARGON2_VERIFY_MISMATCH 

◆ Argon2_type

Enumerator
Argon2_d 
Argon2_i 
Argon2_id 

◆ Argon2_version

Enumerator
ARGON2_VERSION_10 
ARGON2_VERSION_13 
ARGON2_VERSION_NUMBER 

Function Documentation

◆ randomx_argon2_fill_segment_ref()

void randomx_argon2_fill_segment_ref ( const argon2_instance_t instance,
argon2_position_t  position 
)

◆ randomx_argon2_impl_avx2()

randomx_argon2_impl* randomx_argon2_impl_avx2 ( )

◆ randomx_argon2_impl_ssse3()

randomx_argon2_impl* randomx_argon2_impl_ssse3 ( )