Nano cryptocurrency C library with P2PoW/DPoW support  1.0.0
f_util.h File Reference
#include <stdint.h>
#include "mbedtls/sha256.h"
#include "mbedtls/aes.h"
#include "mbedtls/ecdsa.h"
#include "errors.h"

Go to the source code of this file.

Macros

#define F_ENTROPY_TYPE_PARANOIC   (uint32_t)1477682819
 
#define F_ENTROPY_TYPE_EXCELENT   (uint32_t)1476885281
 
#define F_ENTROPY_TYPE_GOOD   (uint32_t)1472531015
 
#define F_ENTROPY_TYPE_NOT_ENOUGH   (uint32_t)1471001808
 
#define F_ENTROPY_TYPE_NOT_RECOMENDED   (uint32_t)1470003345
 
#define ENTROPY_BEGIN   f_verify_system_entropy_begin();
 
#define ENTROPY_END   f_verify_system_entropy_finish();
 
#define F_PASS_MUST_HAVE_AT_LEAST_NONE   (int)0
 
#define F_PASS_MUST_HAVE_AT_LEAST_ONE_NUMBER   (int)1
 
#define F_PASS_MUST_HAVE_AT_LEAST_ONE_SYMBOL   (int)2
 
#define F_PASS_MUST_HAVE_AT_LEAST_ONE_UPPER_CASE   (int)4
 
#define F_PASS_MUST_HAVE_AT_LEAST_ONE_LOWER_CASE   (int)8
 
#define F_PASS_IS_TOO_LONG   (int)256
 
#define F_PASS_IS_TOO_SHORT   (int)512
 
#define F_PASS_IS_OUT_OVF   (int)1024
 
#define F_GET_CH_MODE_NO_ECHO   (int)(1<<16)
 
#define F_GET_CH_MODE_ANY_KEY   (int)(1<<17)
 
#define CLEAR_AND_FREE(ptr, size)   free(memset(ptr, 0, size));
 

Typedefs

typedef void(* rnd_fn) (void *, size_t)
 
typedef int(* fn_det) (void *, unsigned char *, size_t)
 
typedef enum err_ecdsa_secret_key_valid_e ERR_ECDSA_SECRET_KEY_VALID
 
typedef enum err_ecdsa_public_key_valid_e ERR_ECDSA_PUBLIC_KEY_VALID
 

Enumerations

enum  err_ecdsa_secret_key_valid_e {
  ERR_KEY_SK_SIZE_ZERO = 476, ERR_KEY_WRONG_SIZE, ERR_SK_MALLOC, ERR_SK_READ_BINARY,
  ERR_SK_CHECK
}
 
enum  err_ecdsa_public_key_valid_e { ERR_KEY_PK_SIZE_ZERO = 501, ERR_PK_MALLOC, ERR_PK_CHECK }
 

Functions

int f_verify_system_entropy (uint32_t, void *, size_t, int)
 
int f_pass_must_have_at_least (char *, size_t, size_t, size_t, int)
 
int f_passwd_comp_safe (char *, char *, size_t, size_t, size_t)
 
char * f_get_entropy_name (uint32_t)
 
uint32_t f_sel_to_entropy_level (int)
 
int f_str_to_hex (uint8_t *, char *)
 
void f_random_attach (rnd_fn)
 
void f_random (void *, size_t)
 
int get_console_passwd (char *, size_t)
 
int f_get_char_no_block (int)
 
int f_convert_to_long_int (unsigned long int *, char *, size_t)
 
int f_convert_to_unsigned_int (unsigned int *, char *, size_t)
 
int f_convert_to_long_int0x (unsigned long int *, char *, size_t)
 
int f_convert_to_long_int0 (unsigned long int *, char *, size_t)
 
int f_convert_to_long_int_std (unsigned long int *, char *, size_t)
 
void * f_is_random_attached ()
 
void f_random_detach ()
 
int f_convert_to_unsigned_int0x (unsigned int *val, char *value, size_t value_sz)
 
int f_convert_to_unsigned_int0 (unsigned int *val, char *value, size_t value_sz)
 
int f_convert_to_unsigned_int_std (unsigned int *val, char *value, size_t value_sz)
 
int f_convert_to_double (double *, const char *)
 
uint32_t crc32_init (unsigned char *, size_t, uint32_t)
 
int f_reverse (unsigned char *, size_t)
 
f_md_hmac_sha512 f_hmac_sha512 (unsigned char *, const unsigned char *, size_t, const unsigned char *, size_t)
 
ERR_ECDSA_SECRET_KEY_VALID f_ecdsa_secret_key_valid (mbedtls_ecp_group_id, unsigned char *, size_t)
 
ERR_ECDSA_PUBLIC_KEY_VALID f_ecdsa_public_key_valid (mbedtls_ecp_group_id, unsigned char *, size_t)
 
f_ecdsa_key_pair_err f_gen_ecdsa_key_pair (f_ecdsa_key_pair *, int, fn_det, void *)
 
int f_uncompress_elliptic_curve (uint8_t *, size_t, size_t *, mbedtls_ecp_group_id, uint8_t *, size_t)
 
uint8_t * f_ripemd160 (const uint8_t *, size_t)
 
int f_url_encode (char *, size_t, size_t *, uint8_t *, size_t)
 
int f_encode_to_base64_dynamic (char **, size_t *, void *, size_t)
 
int f_base64_decode_dynamic (void **, size_t *, const char *, size_t)
 
int f_base64url_encode_dynamic (void **, size_t *, void *, size_t)
 
int f_encode_to_base64 (char *, size_t, size_t *, void *, size_t)
 
int f_base64url_encode (char *, size_t, size_t *, void *, size_t)
 
int f_base64url_decode (void *, size_t, size_t *, const char *, size_t)
 
int f_url_base64_to_base64_dynamic (char **, size_t *, const char *, size_t)
 
int f_url_decode (void *, size_t, size_t *, const char *, size_t)
 

Detailed Description

This ABI is a utility for myNanoEmbedded library and sub routines are implemented here.

Definition in file f_util.h.

Macro Definition Documentation

◆ CLEAR_AND_FREE

#define CLEAR_AND_FREE (   ptr,
  size 
)    free(memset(ptr, 0, size));

Definition at line 642 of file f_util.h.

◆ ENTROPY_BEGIN

#define ENTROPY_BEGIN   f_verify_system_entropy_begin();

Begins and prepares a entropy function.

See also
f_verify_system_entropy()

Definition at line 154 of file f_util.h.

◆ ENTROPY_END

#define ENTROPY_END   f_verify_system_entropy_finish();

Ends a entropy function.

See also
f_verify_system_entropy()

Definition at line 161 of file f_util.h.

◆ F_ENTROPY_TYPE_EXCELENT

#define F_ENTROPY_TYPE_EXCELENT   (uint32_t)1476885281

Type of the excelent entropy used for verifier.

Slow

Definition at line 126 of file f_util.h.

◆ F_ENTROPY_TYPE_GOOD

#define F_ENTROPY_TYPE_GOOD   (uint32_t)1472531015

Type of the good entropy used for verifier.

Not so slow

Definition at line 133 of file f_util.h.

◆ F_ENTROPY_TYPE_NOT_ENOUGH

#define F_ENTROPY_TYPE_NOT_ENOUGH   (uint32_t)1471001808

Type of the moderate entropy used for verifier.

Fast

Definition at line 140 of file f_util.h.

◆ F_ENTROPY_TYPE_NOT_RECOMENDED

#define F_ENTROPY_TYPE_NOT_RECOMENDED   (uint32_t)1470003345

Type of the not recommended entropy used for verifier.

Very fast

Definition at line 147 of file f_util.h.

◆ F_ENTROPY_TYPE_PARANOIC

#define F_ENTROPY_TYPE_PARANOIC   (uint32_t)1477682819

Type of the very excelent entropy used for verifier.

Very slow

Definition at line 119 of file f_util.h.

◆ F_GET_CH_MODE_ANY_KEY

#define F_GET_CH_MODE_ANY_KEY   (int)(1<<17)
See also
f_get_char_no_block()

Definition at line 381 of file f_util.h.

◆ F_GET_CH_MODE_NO_ECHO

#define F_GET_CH_MODE_NO_ECHO   (int)(1<<16)
See also
f_get_char_no_block()

Definition at line 375 of file f_util.h.

◆ F_PASS_IS_OUT_OVF

#define F_PASS_IS_OUT_OVF   (int)1024

Password is overflow and cannot be stored.

Definition at line 209 of file f_util.h.

◆ F_PASS_IS_TOO_LONG

#define F_PASS_IS_TOO_LONG   (int)256

Password is too long.

Definition at line 197 of file f_util.h.

◆ F_PASS_IS_TOO_SHORT

#define F_PASS_IS_TOO_SHORT   (int)512

Password is too short.

Definition at line 203 of file f_util.h.

◆ F_PASS_MUST_HAVE_AT_LEAST_NONE

#define F_PASS_MUST_HAVE_AT_LEAST_NONE   (int)0

Password does not need any criteria to pass.

Definition at line 167 of file f_util.h.

◆ F_PASS_MUST_HAVE_AT_LEAST_ONE_LOWER_CASE

#define F_PASS_MUST_HAVE_AT_LEAST_ONE_LOWER_CASE   (int)8

Password must have at least one lower case.

Definition at line 191 of file f_util.h.

◆ F_PASS_MUST_HAVE_AT_LEAST_ONE_NUMBER

#define F_PASS_MUST_HAVE_AT_LEAST_ONE_NUMBER   (int)1

Password must have at least one number.

Definition at line 173 of file f_util.h.

◆ F_PASS_MUST_HAVE_AT_LEAST_ONE_SYMBOL

#define F_PASS_MUST_HAVE_AT_LEAST_ONE_SYMBOL   (int)2

Password must have at least one symbol.

Definition at line 179 of file f_util.h.

◆ F_PASS_MUST_HAVE_AT_LEAST_ONE_UPPER_CASE

#define F_PASS_MUST_HAVE_AT_LEAST_ONE_UPPER_CASE   (int)4

Password must have at least one upper case.

Definition at line 185 of file f_util.h.

Typedef Documentation

◆ ERR_ECDSA_PUBLIC_KEY_VALID

Typedef of err_ecdsa_public_key_valid_e.

◆ ERR_ECDSA_SECRET_KEY_VALID

Typedef of err_ecdsa_secret_key_valid_e.

◆ fn_det

typedef int(* fn_det) (void *, unsigned char *, size_t)

Definition at line 545 of file f_util.h.

◆ rnd_fn

rnd_fn

Pointer caller for random function.

Definition at line 340 of file f_util.h.

Enumeration Type Documentation

◆ err_ecdsa_public_key_valid_e

ECDSA public key error checker enumerator.

Enumerator
ERR_KEY_PK_SIZE_ZERO 

Public key size is zero.

ERR_PK_MALLOC 

Error alloc memory for check.

ERR_PK_CHECK 

Error binary read.

Definition at line 593 of file f_util.h.

◆ err_ecdsa_secret_key_valid_e

ECDSA secret key error checker enumerator.

Enumerator
ERR_KEY_SK_SIZE_ZERO 

Key size is zero.

ERR_KEY_WRONG_SIZE 

Error key wrong size.

ERR_SK_MALLOC 

Error alloc memory for check.

ERR_SK_READ_BINARY 

Error binary read.

ERR_SK_CHECK 

Secret key invalid.

Definition at line 576 of file f_util.h.

Function Documentation

◆ crc32_init()

uint32_t crc32_init ( unsigned char *  p,
size_t  len,
uint32_t  crcinit 
)

Performs a CRC32 of a given data.

Parameters
[in]pPointer of the data
[in]lenSize of data in pointer p
[in]crcinitInit vector of the CRC32
Return values
CRC32hash

◆ f_base64_decode_dynamic()

int f_base64_decode_dynamic ( void **  ,
size_t *  ,
const char *  ,
size_t   
)

◆ f_base64url_decode()

int f_base64url_decode ( void *  ,
size_t  ,
size_t *  ,
const char *  ,
size_t   
)

◆ f_base64url_encode()

int f_base64url_encode ( char *  ,
size_t  ,
size_t *  ,
void *  ,
size_t   
)

◆ f_base64url_encode_dynamic()

int f_base64url_encode_dynamic ( void **  ,
size_t *  ,
void *  ,
size_t   
)

◆ f_convert_to_double()

int f_convert_to_double ( double *  val,
const char *  value 
)

Convert any valid number im value and converts it to double val

Parameters
[out]valValue converted to double
[in]valueValue in string to be converted
Return values
0On Success, Otherwise error

◆ f_convert_to_long_int()

int f_convert_to_long_int ( unsigned long int *  val,
char *  value,
size_t  value_sz 
)

Converts a string value to unsigned long int.

Parameters
[out]valValue stored in a unsigned long int variable
[in]valueInput value to be parsed to unsigned long int
[in]value_szMax size allowed in value string.
Return values
0On Success, Otherwise error
See also
f_convert_to_unsigned_int()

◆ f_convert_to_long_int0()

int f_convert_to_long_int0 ( unsigned long int *  val,
char *  value,
size_t  value_sz 
)

Converts a octal value in ASCII string to unsigned long int.

Parameters
[out]valValue stored in a unsigned long int variable
[in]valueInput value to be parsed to unsigned long int
[in]value_szMax size allowed in value string.
Return values
0On Success, Otherwise error
See also
f_convert_to_long_int0x()

◆ f_convert_to_long_int0x()

int f_convert_to_long_int0x ( unsigned long int *  val,
char *  value,
size_t  value_sz 
)

Converts a hex value in ASCII string to unsigned long int.

Parameters
[out]valValue stored in a unsigned long int variable
[in]valueInput value to be parsed to unsigned long int
[in]value_szMax size allowed in value string.
Return values
0On Success, Otherwise error
See also
f_convert_to_long_int0()

◆ f_convert_to_long_int_std()

int f_convert_to_long_int_std ( unsigned long int *  val,
char *  value,
size_t  value_sz 
)

Converts a actal/decimal/hexadecimal into ASCII string to unsigned long int.

Parameters
[out]valValue stored in a unsigned long int variable
[in]valueInput value to be parsed to unsigned long int
  • If a string contains only numbers, it will be parsed to unsigned long int decimal
  • If a string begins with 0 it will be parsed to octal EX.: 010(octal) = 08(decimal)
  • If a string contais 0x or 0X it will be parsed to hexadecimal. EX.: 0x10(hexadecimal) = 16 (decimal)
[in]value_szMax size allowed in value string.
Return values
0On Success, Otherwise error
See also
f_convert_to_long_int()

◆ f_convert_to_unsigned_int()

int f_convert_to_unsigned_int ( unsigned int *  val,
char *  value,
size_t  value_sz 
)

Converts a string value to unsigned int.

Parameters
[out]valValue stored in a unsigned int variable
[in]valueInput value to be parsed to unsigned int
[in]value_szMax size allowed in value string.
Return values
0On Success, Otherwise error
See also
f_convert_to_long_int()

◆ f_convert_to_unsigned_int0()

int f_convert_to_unsigned_int0 ( unsigned int *  val,
char *  value,
size_t  value_sz 
)

Converts a octal value in ASCII string to unsigned int.

Parameters
[out]valValue stored in a unsigned int variable
[in]valueInput value to be parsed to unsigned int
[in]value_szMax size allowed in value string.
Return values
0On Success, Otherwise error
See also
f_convert_to_unsigned_int0x()

◆ f_convert_to_unsigned_int0x()

int f_convert_to_unsigned_int0x ( unsigned int *  val,
char *  value,
size_t  value_sz 
)

Converts a hex value in ASCII string to unsigned int.

Parameters
[out]valValue stored in a unsigned int variable
[in]valueInput value to be parsed to unsigned int
[in]value_szMax size allowed in value string.
Return values
0On Success, Otherwise error
See also
f_convert_to_unsigned_int0()

◆ f_convert_to_unsigned_int_std()

int f_convert_to_unsigned_int_std ( unsigned int *  val,
char *  value,
size_t  value_sz 
)

Converts a actal/decimal/hexadecimal into ASCII string to unsigned int.

Parameters
[out]valValue stored in a unsigned int variable
[in]valueInput value to be parsed to unsigned int
  • If a string contains only numbers, it will be parsed to unsigned int decimal
  • If a string begins with 0 it will be parsed to octal EX.: 010(octal) = 08(decimal)
  • If a string contais 0x or 0X it will be parsed to hexadecimal. EX.: 0x10(hexadecimal) = 16 (decimal)
[in]value_szMax size allowed in value string.
Return values
0On Success, Otherwise error
See also
f_convert_to_unsigned_int()

◆ f_ecdsa_public_key_valid()

ERR_ECDSA_PUBLIC_KEY_VALID f_ecdsa_public_key_valid ( mbedtls_ecp_group_id  gid,
unsigned char *  public_key,
size_t  public_key_len 
)

Checks is ECDSA public key is valid.

Parameters
[in]gidInput EC group id
[in]public_keyPublic key
[in]public_key_lenSize of public key
Return values
ERROR_SUCCESS(0) if success or non zero if error

◆ f_ecdsa_secret_key_valid()

ERR_ECDSA_SECRET_KEY_VALID f_ecdsa_secret_key_valid ( mbedtls_ecp_group_id  gid,
unsigned char *  secret_key,
size_t  secret_key_len 
)

Checks is ECDSA secret key is valid.

Parameters
[in]gidInput EC group id
[in]secret_keySecret key
[in]secret_key_lenSize of secret key
Return values
ERROR_SUCCESS(0) if success or non zero if error

◆ f_encode_to_base64()

int f_encode_to_base64 ( char *  ,
size_t  ,
size_t *  ,
void *  ,
size_t   
)

◆ f_encode_to_base64_dynamic()

int f_encode_to_base64_dynamic ( char **  ,
size_t *  ,
void *  ,
size_t   
)

◆ f_gen_ecdsa_key_pair()

f_ecdsa_key_pair_err f_gen_ecdsa_key_pair ( f_ecdsa_key_pair *  ,
int  ,
fn_det  ,
void *   
)

◆ f_get_char_no_block()

int f_get_char_no_block ( int  mode)

Reads a char from console.

Waits a char and returns its value

Parameters
[in]modeMode and/or character to be returned
  • F_GET_CH_MODE_NO_ECHO No echo is on the console string
  • F_GET_CH_MODE_ANY_KEY Returns any key pressed<br>

Example:

key=f_get_char_no_block(F_GET_CH_MODE_NO_ECHO|'c'); // Waits 'c' char key and returns value 0x00000063 without echo 'c' on the screen
Return values
keycode: On Success, Negative value on error

◆ f_get_entropy_name()

char * f_get_entropy_name ( uint32_t  val)

Returns a entropy name given a index/ASCII index or entropy value.

Parameters
[in]valIndex/ASCII index or entropy value

Return values:

  • NULL If no entropy index/ASCII/entropy found in val
  • F_ENTROPY_TYPE_* name if found in index/ASCII or entropy value

◆ f_hmac_sha512()

f_md_hmac_sha512 f_hmac_sha512 ( unsigned char *  result,
const unsigned char *  key,
size_t  key_len,
const unsigned char *  data,
size_t  data_len 
)

Calculates SHA512 HMAC.

Parameters
[out]resultOutput result
[in]keyPointer of the key address
[in]key_lenSize of key
[in]dataData pointer address
[in]data_lenSize of data
Return values
ERROR_SUCCESS(0) if success or non zero if error

◆ f_is_random_attached()

void * f_is_random_attached ( )

Verifies if system random function is attached in myNanoEmbedded API.

Return values
NULLif not attached, Otherwise returns the pointer of random number genarator function
See also
f_random_attach()

◆ f_pass_must_have_at_least()

int f_pass_must_have_at_least ( char *  password,
size_t  n,
size_t  min,
size_t  max,
int  must_have 
)

Checks if a given password has enought requirements to be parsed to a function.

Parameters
[in]passwordPassword string
[in]nMax buffer string permitted to store password including NULL char
[in]minMinimum size allowed in password string
[in]maxMaximum size allowed in password
[in]must_haveMust have a type:
  • F_PASS_MUST_HAVE_AT_LEAST_NONE Not need any special characters or number
  • F_PASS_MUST_HAVE_AT_LEAST_ONE_NUMBER Must have at least one number
  • F_PASS_MUST_HAVE_AT_LEAST_ONE_SYMBOL Must have at least one symbol
  • F_PASS_MUST_HAVE_AT_LEAST_ONE_UPPER_CASE Must have at least one upper case
  • F_PASS_MUST_HAVE_AT_LEAST_ONE_LOWER_CASE Must have at least one lower case

Return values:

  • 0 (zero): If password is passed in the test
  • F_PASS_IS_OUT_OVF: If password lenght exceeds n value
  • F_PASS_IS_TOO_SHORT: If password length is less than min value
  • F_PASS_IS_TOO_LONG: If password length is greater tham m value
  • F_PASS_MUST_HAVE_AT_LEAST_ONE_UPPER_CASE: If password is required in must_have type upper case characters
  • F_PASS_MUST_HAVE_AT_LEAST_ONE_LOWER_CASE: If password is required in must_have type lower case characters
  • F_PASS_MUST_HAVE_AT_LEAST_ONE_SYMBOL: If password is required in must_have type to have symbol(s)
  • F_PASS_MUST_HAVE_AT_LEAST_ONE_NUMBER: if password is required in must_have type to have number(s)

◆ f_passwd_comp_safe()

int f_passwd_comp_safe ( char *  pass1,
char *  pass2,
size_t  n,
size_t  min,
size_t  max 
)

Compares two passwords values with safe buffer.

Parameters
[in]pass1First password to compare with pass2
[in]pass2Second password to compare with pass1
[in]nSize of Maximum buffer of both pass1 and pass2
[in]minMinimun value of both pass1 and pass2
[in]maxMaximum value of both pass1 and pass2
Return values
0If pass1 is equal to pass2, otherwise value is less than 0 (zero) if password does not match

◆ f_random()

void f_random ( void *  random,
size_t  random_sz 
)

Random function to be called to generate a random data with random_sz

Parameters
[out]randomRandom data to be parsed
[in]random_szSize of random data to be filled
See also
f_random_attach()

◆ f_random_attach()

void f_random_attach ( rnd_fn  fn)

Attachs a function to be called by f_random()

Parameters
[in]fnA function to be called
See also
rnd_fn()

◆ f_random_detach()

void f_random_detach ( )

Detaches system random numeber genarator from myNanoEmbedded API.

See also
f_random_attach()

◆ f_reverse()

int f_reverse ( unsigned char *  val,
size_t  val_sz 
)

Reverse bytes.

Parameters
[in]valPointer to be reversed
[in]val_szSize of val
Return values
ERROR_SUCCESS(0) if success or non zero if error

◆ f_ripemd160()

uint8_t* f_ripemd160 ( const uint8_t *  ,
size_t   
)

◆ f_sel_to_entropy_level()

uint32_t f_sel_to_entropy_level ( int  sel)

Return a given entropy number given a number encoded ASCII or index number.

Parameters
[in]selASCII or index value

Return values:

  • 0 (zero): If no entropy number found in sel
  • F_ENTROPY_TYPE_PARANOIC
  • F_ENTROPY_TYPE_EXCELENT
  • F_ENTROPY_TYPE_GOOD
  • F_ENTROPY_TYPE_NOT_ENOUGH
  • F_ENTROPY_TYPE_NOT_RECOMENDED

◆ f_str_to_hex()

int f_str_to_hex ( uint8_t *  hex_stream,
char *  str 
)

Converts a str string buffer to raw hex_stream value stream.

Parameters
[out]hexRaw hex value
[in]strString buffer terminated with NULL char
Return values
0On Success, otherwise Error

◆ f_uncompress_elliptic_curve()

int f_uncompress_elliptic_curve ( uint8_t *  ,
size_t  ,
size_t *  ,
mbedtls_ecp_group_id  ,
uint8_t *  ,
size_t   
)

◆ f_url_base64_to_base64_dynamic()

int f_url_base64_to_base64_dynamic ( char **  ,
size_t *  ,
const char *  ,
size_t   
)

◆ f_url_decode()

int f_url_decode ( void *  ,
size_t  ,
size_t *  ,
const char *  ,
size_t   
)

◆ f_url_encode()

int f_url_encode ( char *  ,
size_t  ,
size_t *  ,
uint8_t *  ,
size_t   
)

◆ f_verify_system_entropy()

int f_verify_system_entropy ( uint32_t  type,
void *  rand,
size_t  rand_sz,
int  turn_on_wdt 
)

Take a random number generator function and returns random value only if randomized data have a desired entropy value.

Parameters
[in]typeEntropy type. Entropy type values are:
  • F_ENTROPY_TYPE_PARANOIC Highest level entropy recommended for generate a Nano SEED with a paranoic entropy. Very slow
  • F_ENTROPY_TYPE_EXCELENT Gives a very excellent entropy for generating Nano SEED. Slow
  • F_ENTROPY_TYPE_GOOD Good entropy type for generating Nano SEED. Normal.
  • F_ENTROPY_TYPE_NOT_ENOUGH Moderate entropy for generating Nano SEED. Usually fast to create a temporary Nano SEED. Fast
  • F_ENTROPY_TYPE_NOT_RECOMENDED Fast but not recommended for generating Nano SEED.
[out]randRandom data with a satisfied type of entropy
[in]rand_szSize of random data output
[in]turn_on_wdtFor ESP32, Arduino platform and other microcontrollers only. Turns on/off WATCH DOG (0: OFF, NON ZERO: ON). For Raspberry PI and Linux native is ommited.

This implementation is based on topic in Definition 7.12 in MIT opencourseware (7.3 A Statistical Definition of Entropy - 2005)
Many thanks to Professor Z. S. Spakovszky for this amazing topic

Return values
0On Success, otherwise Error

◆ get_console_passwd()

int get_console_passwd ( char *  pass,
size_t  pass_sz 
)

Reads a password from console.

Parameters
[out]passPassword to be parsed to pointer
[in]pass_szSize of buffer pass
Return values
0On Success, otherwise Error