Lightweight Cryptography Primitives
 All Data Structures Files Functions Variables Typedefs Macros Pages
Data Structures | Macros | Functions
xoodyak-hkdf.h File Reference

HMAC-based key derivation function based on Xoodyak-HMAC. More...

#include <stddef.h>

Go to the source code of this file.

Data Structures

struct  xoodyak_hkdf_state_t
 State for incremental generation of key material from Xoodyak-HKDF. More...
 

Macros

#define XOODYAK_HKDF_OUTPUT_SIZE   32
 Default output block size for Xoodyak-HKDF. Key material is generated in blocks of this size.
 

Functions

int xoodyak_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 Xoodyak-HKDF. More...
 
void xoodyak_hkdf_extract (xoodyak_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 Xoodyak-HKDF. More...
 
int xoodyak_hkdf_expand (xoodyak_hkdf_state_t *state, const unsigned char *info, size_t infolen, unsigned char *out, size_t outlen)
 Expands key material using a Xoodyak-HKDF state. More...
 
void xoodyak_hkdf_free (xoodyak_hkdf_state_t *state)
 Frees all sensitive material in a Xoodyak-HKDF state. More...
 

Detailed Description

HMAC-based key derivation function based on Xoodyak-HMAC.

Reference: https://tools.ietf.org/html/rfc5869

Function Documentation

int xoodyak_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 Xoodyak-HKDF.

Parameters
outPoints to the output buffer to receive the key material.
outlenNumber of bytes of key material to generate, maximum of XOODYAK_HKDF_OUTPUT_SIZE * 255 bytes.
keyPoints to the bytes of the key.
keylenNumber of bytes in the key.
saltPoints to the bytes of the salt.
saltlenNumber of bytes in the salt.
infoPoints to the bytes of the informational data.
infolenNumber of bytes in the informational data.
Returns
Zero on success or -1 if outlen is out of range.
See Also
xoodyak_hkdf_extract(), xoodyak_hkdf_expand()
int xoodyak_hkdf_expand ( xoodyak_hkdf_state_t state,
const unsigned char *  info,
size_t  infolen,
unsigned char *  out,
size_t  outlen 
)

Expands key material using a Xoodyak-HKDF state.

Parameters
stateHKDF state to use to expand key material.
infoPoints to the bytes of the informational data.
infolenNumber of bytes in the informational data.
outPoints to the output buffer to receive the key material.
outlenNumber 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 XOODYAK_HKDF_OUTPUT_SIZE * 255 bytes.
void xoodyak_hkdf_extract ( xoodyak_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 Xoodyak-HKDF.

Parameters
stateHKDF state to be initialized.
keyPoints to the bytes of the key.
keylenNumber of bytes in the key.
saltPoints to the bytes of the salt.
saltlenNumber of bytes in the salt.
See Also
xoodyak_hkdf_expand(), xoodyak_hkdf()
void xoodyak_hkdf_free ( xoodyak_hkdf_state_t state)

Frees all sensitive material in a Xoodyak-HKDF state.

Parameters
statePoints to the HKDF state.