Lightweight Cryptography Primitives
|
Hash algorithms based on the SPARKLE permutation. More...
#include <stddef.h>
Go to the source code of this file.
Data Structures | |
union | esch_256_hash_state_t |
State information for the Esch256 incremental hash mode and the XOEsch256 increment XOF mode. More... | |
union | esch_384_hash_state_t |
State information for the Esch384 incremental hash mod ande the XOEsch384 increment XOF mode. More... | |
Macros | |
#define | ESCH_256_HASH_SIZE 32 |
Size of the hash output for Esch256. | |
#define | ESCH_256_RATE 16 |
Rate at which bytes are processed by Esch256 and XOEsch256. | |
#define | ESCH_384_HASH_SIZE 48 |
Size of the hash output for Esch384. | |
#define | ESCH_384_RATE 16 |
Rate at which bytes are processed by Esch384 and XOEsch384. | |
Functions | |
int | esch_256_hash (unsigned char *out, const unsigned char *in, size_t inlen) |
Hashes a block of input data with Esch256 to generate a hash value. More... | |
int | esch_256_xof (unsigned char *out, const unsigned char *in, size_t inlen) |
Hashes a block of input data with XOEsch256 to generate an XOF output value. More... | |
void | esch_256_hash_init (esch_256_hash_state_t *state) |
Initializes the state for an Esch256 hashing or a XOEsch256 XOF operation. More... | |
void | esch_256_hash_update (esch_256_hash_state_t *state, const unsigned char *in, size_t inlen) |
Updates an Esch256 or XOEsch256 state with more input data. More... | |
void | esch_256_hash_finalize (esch_256_hash_state_t *state, unsigned char *out) |
Returns the final hash value from an Esch256 hashing operation. More... | |
void | esch_256_hash_squeeze (esch_256_hash_state_t *state, unsigned char *out, size_t outlen) |
Squeezes output data from a XOEsch256 XOF state. More... | |
int | esch_384_hash (unsigned char *out, const unsigned char *in, size_t inlen) |
Hashes a block of input data with Esch384 to generate a hash value. More... | |
int | esch_384_xof (unsigned char *out, const unsigned char *in, size_t inlen) |
Hashes a block of input data with XOEsch384 to generate an XOF output value. More... | |
void | esch_384_hash_init (esch_384_hash_state_t *state) |
Initializes the state for an Esch384 hashing or a XOEsch384 XOF operation. More... | |
void | esch_384_hash_update (esch_384_hash_state_t *state, const unsigned char *in, size_t inlen) |
Updates an Esch384 state with more input data. More... | |
void | esch_384_hash_finalize (esch_384_hash_state_t *state, unsigned char *out) |
Returns the final hash value from an Esch384 hashing operation. More... | |
void | esch_384_hash_squeeze (esch_384_hash_state_t *state, unsigned char *out, size_t outlen) |
Squeezes output data from a XOEsch384 XOF state. More... | |
Hash algorithms based on the SPARKLE permutation.
SPARKLE is a family of encryption and hash algorithms that are based around the SPARKLE permutation. There are three versions of the permutation with 256-bit, 384-bit, and 512-bit state sizes. The hash algorithms in the family are:
References: https://www.cryptolux.org/index.php/Sparkle
int esch_256_hash | ( | unsigned char * | out, |
const unsigned char * | in, | ||
size_t | inlen | ||
) |
Hashes a block of input data with Esch256 to generate a hash value.
out | Buffer to receive the hash output which must be at least ESCH_256_HASH_SIZE bytes in length. |
in | Points to the input data to be hashed. |
inlen | Length of the input data in bytes. |
void esch_256_hash_finalize | ( | esch_256_hash_state_t * | state, |
unsigned char * | out | ||
) |
Returns the final hash value from an Esch256 hashing operation.
state | State to be finalized. |
out | Points to the output buffer to receive the 32-byte hash value. |
This function is intended for generating output from the Esch256 hashing mode. Use esch_256_hash_squeeze() instead to generate XOF data.
void esch_256_hash_init | ( | esch_256_hash_state_t * | state | ) |
Initializes the state for an Esch256 hashing or a XOEsch256 XOF operation.
state | State to be initialized. |
void esch_256_hash_squeeze | ( | esch_256_hash_state_t * | state, |
unsigned char * | out, | ||
size_t | outlen | ||
) |
Squeezes output data from a XOEsch256 XOF state.
state | State to squeeze the output data from. |
out | Points to the output buffer to receive the squeezed data. |
outlen | Number of bytes of data to squeeze out of the state. |
void esch_256_hash_update | ( | esch_256_hash_state_t * | state, |
const unsigned char * | in, | ||
size_t | inlen | ||
) |
Updates an Esch256 or XOEsch256 state with more input data.
state | State to be updated. |
in | Points to the input data to be incorporated into the state. |
inlen | Length of the input data to be incorporated into the state. |
int esch_256_xof | ( | unsigned char * | out, |
const unsigned char * | in, | ||
size_t | inlen | ||
) |
Hashes a block of input data with XOEsch256 to generate an XOF output value.
out | Buffer to receive the hash output which must be at least ESCH_256_HASH_SIZE bytes in length. |
in | Points to the input data to be hashed. |
inlen | Length of the input data in bytes. |
int esch_384_hash | ( | unsigned char * | out, |
const unsigned char * | in, | ||
size_t | inlen | ||
) |
Hashes a block of input data with Esch384 to generate a hash value.
out | Buffer to receive the hash output which must be at least ESCH_384_HASH_SIZE bytes in length. |
in | Points to the input data to be hashed. |
inlen | Length of the input data in bytes. |
void esch_384_hash_finalize | ( | esch_384_hash_state_t * | state, |
unsigned char * | out | ||
) |
Returns the final hash value from an Esch384 hashing operation.
state | State to be finalized. |
out | Points to the output buffer to receive the 48-byte hash value. |
This function is intended for generating output from the Esch384 hashing mode. Use esch_384_hash_squeeze() instead to generate XOF data.
void esch_384_hash_init | ( | esch_384_hash_state_t * | state | ) |
Initializes the state for an Esch384 hashing or a XOEsch384 XOF operation.
state | State to be initialized. |
void esch_384_hash_squeeze | ( | esch_384_hash_state_t * | state, |
unsigned char * | out, | ||
size_t | outlen | ||
) |
Squeezes output data from a XOEsch384 XOF state.
state | State to squeeze the output data from. |
out | Points to the output buffer to receive the squeezed data. |
outlen | Number of bytes of data to squeeze out of the state. |
void esch_384_hash_update | ( | esch_384_hash_state_t * | state, |
const unsigned char * | in, | ||
size_t | inlen | ||
) |
Updates an Esch384 state with more input data.
state | State to be updated. |
in | Points to the input data to be incorporated into the state. |
inlen | Length of the input data to be incorporated into the state. |
int esch_384_xof | ( | unsigned char * | out, |
const unsigned char * | in, | ||
size_t | inlen | ||
) |
Hashes a block of input data with XOEsch384 to generate an XOF output value.
out | Buffer to receive the hash output which must be at least ESCH_384_HASH_SIZE bytes in length. |
in | Points to the input data to be hashed. |
inlen | Length of the input data in bytes. |