HMAC-based key derivation function based on SPARKLE-HMAC.
More...
#include <stddef.h>
Go to the source code of this file.
|
#define | ESCH_256_HKDF_OUTPUT_SIZE 32 |
| Default output block size for Ecsh256-HKDF. Key material is generated in blocks of this size.
|
|
#define | ESCH_384_HKDF_OUTPUT_SIZE 48 |
| Default output block size for Ecsh384-HKDF. Key material is generated in blocks of this size.
|
|
|
int | esch_256_hkdf (unsigned char *out, size_t outlen, const unsigned char *key, size_t keylen, const unsigned char *salt, size_t saltlen, const unsigned char *info, size_t infolen) |
| Derives key material using Esch256-HKDF. More...
|
|
void | esch_256_hkdf_extract (esch_256_hkdf_state_t *state, const unsigned char *key, size_t keylen, const unsigned char *salt, size_t saltlen) |
| Extracts entropy from a key and salt for Esch256-HKDF. More...
|
|
int | esch_256_hkdf_expand (esch_256_hkdf_state_t *state, const unsigned char *info, size_t infolen, unsigned char *out, size_t outlen) |
| Expands key material using a Esch256-HKDF state. More...
|
|
void | esch_256_hkdf_free (esch_256_hkdf_state_t *state) |
| Frees all sensitive material in a Esch256-HKDF state. More...
|
|
int | esch_384_hkdf (unsigned char *out, size_t outlen, const unsigned char *key, size_t keylen, const unsigned char *salt, size_t saltlen, const unsigned char *info, size_t infolen) |
| Derives key material using Esch384-HKDF. More...
|
|
void | esch_384_hkdf_extract (esch_384_hkdf_state_t *state, const unsigned char *key, size_t keylen, const unsigned char *salt, size_t saltlen) |
| Extracts entropy from a key and salt for Esch384-HKDF. More...
|
|
int | esch_384_hkdf_expand (esch_384_hkdf_state_t *state, const unsigned char *info, size_t infolen, unsigned char *out, size_t outlen) |
| Expands key material using a Esch384-HKDF state. More...
|
|
void | esch_384_hkdf_free (esch_384_hkdf_state_t *state) |
| Frees all sensitive material in a Esch384-HKDF state. More...
|
|
HMAC-based key derivation function based on SPARKLE-HMAC.
Reference: https://tools.ietf.org/html/rfc5869
int esch_256_hkdf |
( |
unsigned char * |
out, |
|
|
size_t |
outlen, |
|
|
const unsigned char * |
key, |
|
|
size_t |
keylen, |
|
|
const unsigned char * |
salt, |
|
|
size_t |
saltlen, |
|
|
const unsigned char * |
info, |
|
|
size_t |
infolen |
|
) |
| |
Derives key material using Esch256-HKDF.
- Parameters
-
out | Points to the output buffer to receive the key material. |
outlen | Number of bytes of key material to generate, maximum of ESCH_256_HKDF_OUTPUT_SIZE * 255 bytes. |
key | Points to the bytes of the key. |
keylen | Number of bytes in the key. |
salt | Points to the bytes of the salt. |
saltlen | Number of bytes in the salt. |
info | Points to the bytes of the informational data. |
infolen | Number of bytes in the informational data. |
- Returns
- Zero on success or -1 if outlen is out of range.
- See Also
- esch_256_hkdf_extract(), esch_256_hkdf_expand()
int esch_256_hkdf_expand |
( |
esch_256_hkdf_state_t * |
state, |
|
|
const unsigned char * |
info, |
|
|
size_t |
infolen, |
|
|
unsigned char * |
out, |
|
|
size_t |
outlen |
|
) |
| |
Expands key material using a Esch256-HKDF state.
- Parameters
-
state | HKDF state to use to expand key material. |
info | Points to the bytes of the informational data. |
infolen | Number of bytes in the informational data. |
out | Points to the output buffer to receive the key material. |
outlen | Number of bytes of key material to generate. |
- Returns
- Zero on success or -1 if too many bytes have been generated so far. There is a limit of ESCH_256_HKDF_OUTPUT_SIZE * 255 bytes.
void esch_256_hkdf_extract |
( |
esch_256_hkdf_state_t * |
state, |
|
|
const unsigned char * |
key, |
|
|
size_t |
keylen, |
|
|
const unsigned char * |
salt, |
|
|
size_t |
saltlen |
|
) |
| |
Extracts entropy from a key and salt for Esch256-HKDF.
- Parameters
-
state | HKDF state to be initialized. |
key | Points to the bytes of the key. |
keylen | Number of bytes in the key. |
salt | Points to the bytes of the salt. |
saltlen | Number of bytes in the salt. |
- See Also
- esch_256_hkdf_expand(), esch_256_hkdf()
Frees all sensitive material in a Esch256-HKDF state.
- Parameters
-
state | Points to the HKDF state. |
int esch_384_hkdf |
( |
unsigned char * |
out, |
|
|
size_t |
outlen, |
|
|
const unsigned char * |
key, |
|
|
size_t |
keylen, |
|
|
const unsigned char * |
salt, |
|
|
size_t |
saltlen, |
|
|
const unsigned char * |
info, |
|
|
size_t |
infolen |
|
) |
| |
Derives key material using Esch384-HKDF.
- Parameters
-
out | Points to the output buffer to receive the key material. |
outlen | Number of bytes of key material to generate, maximum of ESCH_384_HKDF_OUTPUT_SIZE * 255 bytes. |
key | Points to the bytes of the key. |
keylen | Number of bytes in the key. |
salt | Points to the bytes of the salt. |
saltlen | Number of bytes in the salt. |
info | Points to the bytes of the informational data. |
infolen | Number of bytes in the informational data. |
- Returns
- Zero on success or -1 if outlen is out of range.
- See Also
- esch_384_hkdf_extract(), esch_384_hkdf_expand()
int esch_384_hkdf_expand |
( |
esch_384_hkdf_state_t * |
state, |
|
|
const unsigned char * |
info, |
|
|
size_t |
infolen, |
|
|
unsigned char * |
out, |
|
|
size_t |
outlen |
|
) |
| |
Expands key material using a Esch384-HKDF state.
- Parameters
-
state | HKDF state to use to expand key material. |
info | Points to the bytes of the informational data. |
infolen | Number of bytes in the informational data. |
out | Points to the output buffer to receive the key material. |
outlen | Number of bytes of key material to generate. |
- Returns
- Zero on success or -1 if too many bytes have been generated so far. There is a limit of ESCH_384_HKDF_OUTPUT_SIZE * 255 bytes.
void esch_384_hkdf_extract |
( |
esch_384_hkdf_state_t * |
state, |
|
|
const unsigned char * |
key, |
|
|
size_t |
keylen, |
|
|
const unsigned char * |
salt, |
|
|
size_t |
saltlen |
|
) |
| |
Extracts entropy from a key and salt for Esch384-HKDF.
- Parameters
-
state | HKDF state to be initialized. |
key | Points to the bytes of the key. |
keylen | Number of bytes in the key. |
salt | Points to the bytes of the salt. |
saltlen | Number of bytes in the salt. |
- See Also
- esch_384_hkdf_expand(), esch_384_hkdf()
Frees all sensitive material in a Esch384-HKDF state.
- Parameters
-
state | Points to the HKDF state. |