HMAC-based key derivation function based on Romulus-HMAC.
More...
#include <stddef.h>
Go to the source code of this file.
|
#define | ROMULUS_HKDF_OUTPUT_SIZE 32 |
| Default output block size for Romulus-HKDF. Key material is generated in blocks of this size.
|
|
|
int | romulus_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 Romulus-HKDF. More...
|
|
void | romulus_hkdf_extract (romulus_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 Romulus-HKDF. More...
|
|
int | romulus_hkdf_expand (romulus_hkdf_state_t *state, const unsigned char *info, size_t infolen, unsigned char *out, size_t outlen) |
| Expands key material using a Romulus-HKDF state. More...
|
|
void | romulus_hkdf_free (romulus_hkdf_state_t *state) |
| Frees all sensitive material in a Romulus-HKDF state. More...
|
|
HMAC-based key derivation function based on Romulus-HMAC.
Reference: https://tools.ietf.org/html/rfc5869
int romulus_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 Romulus-HKDF.
- Parameters
-
out | Points to the output buffer to receive the key material. |
outlen | Number of bytes of key material to generate, maximum of ROMULUS_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
- romulus_hkdf_extract(), romulus_hkdf_expand()
int romulus_hkdf_expand |
( |
romulus_hkdf_state_t * |
state, |
|
|
const unsigned char * |
info, |
|
|
size_t |
infolen, |
|
|
unsigned char * |
out, |
|
|
size_t |
outlen |
|
) |
| |
Expands key material using a Romulus-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 ROMULUS_HKDF_OUTPUT_SIZE * 255 bytes.
void romulus_hkdf_extract |
( |
romulus_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 Romulus-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
- romulus_hkdf_expand(), romulus_hkdf()
Frees all sensitive material in a Romulus-HKDF state.
- Parameters
-
state | Points to the HKDF state. |