hkdf.c File Reference

HKDF (HMAC-based Key Derivation Function) More...

#include "core/crypto.h"
#include "kdf/hkdf.h"
#include "mac/hmac.h"

Go to the source code of this file.

Macros

#define TRACE_LEVEL   CRYPTO_TRACE_LEVEL
 

Functions

error_t hkdf (const HashAlgo *hash, const uint8_t *ikm, size_t ikmLen, const uint8_t *salt, size_t saltLen, const uint8_t *info, size_t infoLen, uint8_t *okm, size_t okmLen)
 HKDF key derivation function. More...
 
error_t hkdfExtract (const HashAlgo *hash, const uint8_t *ikm, size_t ikmLen, const uint8_t *salt, size_t saltLen, uint8_t *prk)
 HKDF extract step. More...
 
error_t hkdfExpand (const HashAlgo *hash, const uint8_t *prk, size_t prkLen, const uint8_t *info, size_t infoLen, uint8_t *okm, size_t okmLen)
 HKDF expand step. More...
 

Detailed Description

HKDF (HMAC-based Key Derivation Function)

License

SPDX-License-Identifier: GPL-2.0-or-later

Copyright (C) 2010-2024 Oryx Embedded SARL. All rights reserved.

This file is part of CycloneCRYPTO Open.

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.

Description

HKDF is a simple HMAC-based key derivation function which can be used as a building block in various protocols and applications. Refer to RFC 5869 for more details

Author
Oryx Embedded SARL (www.oryx-embedded.com)
Version
2.4.0

Definition in file hkdf.c.

Macro Definition Documentation

◆ TRACE_LEVEL

#define TRACE_LEVEL   CRYPTO_TRACE_LEVEL

Definition at line 38 of file hkdf.c.

Function Documentation

◆ hkdf()

error_t hkdf ( const HashAlgo hash,
const uint8_t *  ikm,
size_t  ikmLen,
const uint8_t *  salt,
size_t  saltLen,
const uint8_t *  info,
size_t  infoLen,
uint8_t *  okm,
size_t  okmLen 
)

HKDF key derivation function.

Parameters
[in]hashUnderlying hash function
[in]ikminput keying material
[in]ikmLenLength in the input keying material
[in]saltOptional salt value (a non-secret random value)
[in]saltLenLength of the salt
[in]infoOptional application specific information
[in]infoLenLength of the application specific information
[out]okmoutput keying material
[in]okmLenLength of the output keying material
Returns
Error code

Definition at line 63 of file hkdf.c.

◆ hkdfExpand()

error_t hkdfExpand ( const HashAlgo hash,
const uint8_t *  prk,
size_t  prkLen,
const uint8_t *  info,
size_t  infoLen,
uint8_t *  okm,
size_t  okmLen 
)

HKDF expand step.

Parameters
[in]hashUnderlying hash function
[in]prkPseudorandom key
[in]prkLenLength of the pseudorandom key
[in]infoOptional application specific information
[in]infoLenLength of the application specific information
[out]okmoutput keying material
[in]okmLenLength of the output keying material
Returns
Error code

Definition at line 158 of file hkdf.c.

◆ hkdfExtract()

error_t hkdfExtract ( const HashAlgo hash,
const uint8_t *  ikm,
size_t  ikmLen,
const uint8_t *  salt,
size_t  saltLen,
uint8_t *  prk 
)

HKDF extract step.

Parameters
[in]hashUnderlying hash function
[in]ikminput keying material
[in]ikmLenLength in the input keying material
[in]saltOptional salt value (a non-secret random value)
[in]saltLenLength of the salt
[out]prkPseudorandom key
Returns
Error code

Definition at line 97 of file hkdf.c.