TianoCore EDK2 master
Loading...
Searching...
No Matches
CryptHkdf.c File Reference
#include "InternalCryptLib.h"
#include <openssl/evp.h>
#include <openssl/kdf.h>

Go to the source code of this file.

Functions

STATIC BOOLEAN HkdfMdExtractAndExpand (IN CONST EVP_MD *Md, IN CONST UINT8 *Key, IN UINTN KeySize, IN CONST UINT8 *Salt, IN UINTN SaltSize, IN CONST UINT8 *Info, IN UINTN InfoSize, OUT UINT8 *Out, IN UINTN OutSize)
 
STATIC BOOLEAN HkdfMdExtract (IN CONST EVP_MD *Md, IN CONST UINT8 *Key, IN UINTN KeySize, IN CONST UINT8 *Salt, IN UINTN SaltSize, OUT UINT8 *PrkOut, UINTN PrkOutSize)
 
STATIC BOOLEAN HkdfMdExpand (IN CONST EVP_MD *Md, IN CONST UINT8 *Prk, IN UINTN PrkSize, IN CONST UINT8 *Info, IN UINTN InfoSize, OUT UINT8 *Out, IN UINTN OutSize)
 
BOOLEAN EFIAPI HkdfSha256ExtractAndExpand (IN CONST UINT8 *Key, IN UINTN KeySize, IN CONST UINT8 *Salt, IN UINTN SaltSize, IN CONST UINT8 *Info, IN UINTN InfoSize, OUT UINT8 *Out, IN UINTN OutSize)
 
BOOLEAN EFIAPI HkdfSha256Extract (IN CONST UINT8 *Key, IN UINTN KeySize, IN CONST UINT8 *Salt, IN UINTN SaltSize, OUT UINT8 *PrkOut, UINTN PrkOutSize)
 
BOOLEAN EFIAPI HkdfSha256Expand (IN CONST UINT8 *Prk, IN UINTN PrkSize, IN CONST UINT8 *Info, IN UINTN InfoSize, OUT UINT8 *Out, IN UINTN OutSize)
 
BOOLEAN EFIAPI HkdfSha384ExtractAndExpand (IN CONST UINT8 *Key, IN UINTN KeySize, IN CONST UINT8 *Salt, IN UINTN SaltSize, IN CONST UINT8 *Info, IN UINTN InfoSize, OUT UINT8 *Out, IN UINTN OutSize)
 
BOOLEAN EFIAPI HkdfSha384Extract (IN CONST UINT8 *Key, IN UINTN KeySize, IN CONST UINT8 *Salt, IN UINTN SaltSize, OUT UINT8 *PrkOut, UINTN PrkOutSize)
 
BOOLEAN EFIAPI HkdfSha384Expand (IN CONST UINT8 *Prk, IN UINTN PrkSize, IN CONST UINT8 *Info, IN UINTN InfoSize, OUT UINT8 *Out, IN UINTN OutSize)
 

Detailed Description

HMAC-SHA256 KDF Wrapper Implementation over OpenSSL.

Copyright (c) 2018 - 2022, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent

Definition in file CryptHkdf.c.

Function Documentation

◆ HkdfMdExpand()

STATIC BOOLEAN HkdfMdExpand ( IN CONST EVP_MD *  Md,
IN CONST UINT8 *  Prk,
IN UINTN  PrkSize,
IN CONST UINT8 *  Info,
IN UINTN  InfoSize,
OUT UINT8 *  Out,
IN UINTN  OutSize 
)

Derive SHA256 HMAC-based Expand Key Derivation Function (HKDF).

Parameters
[in]MdMessage Digest.
[in]PrkPointer to the user-supplied key.
[in]PrkSizeKey size in bytes.
[in]InfoPointer to the application specific info.
[in]InfoSizeInfo size in bytes.
[out]OutPointer to buffer to receive hkdf value.
[in]OutSizeSize of hkdf bytes to generate.
Return values
TRUEHkdf generated successfully.
FALSEHkdf generation failed.

Definition at line 181 of file CryptHkdf.c.

◆ HkdfMdExtract()

STATIC BOOLEAN HkdfMdExtract ( IN CONST EVP_MD *  Md,
IN CONST UINT8 *  Key,
IN UINTN  KeySize,
IN CONST UINT8 *  Salt,
IN UINTN  SaltSize,
OUT UINT8 *  PrkOut,
UINTN  PrkOutSize 
)

Derive HMAC-based Extract key Derivation Function (HKDF).

Parameters
[in]Mdmessage digest.
[in]KeyPointer to the user-supplied key.
[in]KeySizekey size in bytes.
[in]SaltPointer to the salt(non-secret) value.
[in]SaltSizesalt size in bytes.
[out]PrkOutPointer to buffer to receive hkdf value.
[in]PrkOutSizesize of hkdf bytes to generate.
Return values
trueHkdf generated successfully.
falseHkdf generation failed.

Definition at line 101 of file CryptHkdf.c.

◆ HkdfMdExtractAndExpand()

STATIC BOOLEAN HkdfMdExtractAndExpand ( IN CONST EVP_MD *  Md,
IN CONST UINT8 *  Key,
IN UINTN  KeySize,
IN CONST UINT8 *  Salt,
IN UINTN  SaltSize,
IN CONST UINT8 *  Info,
IN UINTN  InfoSize,
OUT UINT8 *  Out,
IN UINTN  OutSize 
)

Derive HMAC-based Extract-and-Expand Key Derivation Function (HKDF).

Parameters
[in]MdMessage Digest.
[in]KeyPointer to the user-supplied key.
[in]KeySizeKey size in bytes.
[in]SaltPointer to the salt(non-secret) value.
[in]SaltSizeSalt size in bytes.
[in]InfoPointer to the application specific info.
[in]InfoSizeInfo size in bytes.
[out]OutPointer to buffer to receive hkdf value.
[in]OutSizeSize of hkdf bytes to generate.
Return values
TRUEHkdf generated successfully.
FALSEHkdf generation failed.

Definition at line 32 of file CryptHkdf.c.

◆ HkdfSha256Expand()

BOOLEAN EFIAPI HkdfSha256Expand ( IN CONST UINT8 *  Prk,
IN UINTN  PrkSize,
IN CONST UINT8 *  Info,
IN UINTN  InfoSize,
OUT UINT8 *  Out,
IN UINTN  OutSize 
)

Derive SHA256 HMAC-based Expand Key Derivation Function (HKDF).

Parameters
[in]PrkPointer to the user-supplied key.
[in]PrkSizeKey size in bytes.
[in]InfoPointer to the application specific info.
[in]InfoSizeInfo size in bytes.
[out]OutPointer to buffer to receive hkdf value.
[in]OutSizeSize of hkdf bytes to generate.
Return values
TRUEHkdf generated successfully.
FALSEHkdf generation failed.

Definition at line 315 of file CryptHkdf.c.

◆ HkdfSha256Extract()

BOOLEAN EFIAPI HkdfSha256Extract ( IN CONST UINT8 *  Key,
IN UINTN  KeySize,
IN CONST UINT8 *  Salt,
IN UINTN  SaltSize,
OUT UINT8 *  PrkOut,
UINTN  PrkOutSize 
)

Derive SHA256 HMAC-based Extract key Derivation Function (HKDF).

Parameters
[in]KeyPointer to the user-supplied key.
[in]KeySizekey size in bytes.
[in]SaltPointer to the salt(non-secret) value.
[in]SaltSizesalt size in bytes.
[out]PrkOutPointer to buffer to receive hkdf value.
[in]PrkOutSizesize of hkdf bytes to generate.
Return values
trueHkdf generated successfully.
falseHkdf generation failed.

Definition at line 279 of file CryptHkdf.c.

◆ HkdfSha256ExtractAndExpand()

BOOLEAN EFIAPI HkdfSha256ExtractAndExpand ( IN CONST UINT8 *  Key,
IN UINTN  KeySize,
IN CONST UINT8 *  Salt,
IN UINTN  SaltSize,
IN CONST UINT8 *  Info,
IN UINTN  InfoSize,
OUT UINT8 *  Out,
IN UINTN  OutSize 
)

Derive HMAC-based Extract-and-Expand Key Derivation Function (HKDF).

Parameters
[in]KeyPointer to the user-supplied key.
[in]KeySizeKey size in bytes.
[in]SaltPointer to the salt(non-secret) value.
[in]SaltSizeSalt size in bytes.
[in]InfoPointer to the application specific info.
[in]InfoSizeInfo size in bytes.
[out]OutPointer to buffer to receive hkdf value.
[in]OutSizeSize of hkdf bytes to generate.
Return values
TRUEHkdf generated successfully.
FALSEHkdf generation failed.

Definition at line 249 of file CryptHkdf.c.

◆ HkdfSha384Expand()

BOOLEAN EFIAPI HkdfSha384Expand ( IN CONST UINT8 *  Prk,
IN UINTN  PrkSize,
IN CONST UINT8 *  Info,
IN UINTN  InfoSize,
OUT UINT8 *  Out,
IN UINTN  OutSize 
)

Derive SHA384 HMAC-based Expand Key Derivation Function (HKDF).

Parameters
[in]PrkPointer to the user-supplied key.
[in]PrkSizeKey size in bytes.
[in]InfoPointer to the application specific info.
[in]InfoSizeInfo size in bytes.
[out]OutPointer to buffer to receive hkdf value.
[in]OutSizeSize of hkdf bytes to generate.
Return values
TRUEHkdf generated successfully.
FALSEHkdf generation failed.

Definition at line 411 of file CryptHkdf.c.

◆ HkdfSha384Extract()

BOOLEAN EFIAPI HkdfSha384Extract ( IN CONST UINT8 *  Key,
IN UINTN  KeySize,
IN CONST UINT8 *  Salt,
IN UINTN  SaltSize,
OUT UINT8 *  PrkOut,
UINTN  PrkOutSize 
)

Derive SHA384 HMAC-based Extract key Derivation Function (HKDF).

Parameters
[in]KeyPointer to the user-supplied key.
[in]KeySizekey size in bytes.
[in]SaltPointer to the salt(non-secret) value.
[in]SaltSizesalt size in bytes.
[out]PrkOutPointer to buffer to receive hkdf value.
[in]PrkOutSizesize of hkdf bytes to generate.
Return values
trueHkdf generated successfully.
falseHkdf generation failed.

Definition at line 375 of file CryptHkdf.c.

◆ HkdfSha384ExtractAndExpand()

BOOLEAN EFIAPI HkdfSha384ExtractAndExpand ( IN CONST UINT8 *  Key,
IN UINTN  KeySize,
IN CONST UINT8 *  Salt,
IN UINTN  SaltSize,
IN CONST UINT8 *  Info,
IN UINTN  InfoSize,
OUT UINT8 *  Out,
IN UINTN  OutSize 
)

Derive SHA384 HMAC-based Extract-and-Expand Key Derivation Function (HKDF).

Parameters
[in]KeyPointer to the user-supplied key.
[in]KeySizeKey size in bytes.
[in]SaltPointer to the salt(non-secret) value.
[in]SaltSizeSalt size in bytes.
[in]InfoPointer to the application specific info.
[in]InfoSizeInfo size in bytes.
[out]OutPointer to buffer to receive hkdf value.
[in]OutSizeSize of hkdf bytes to generate.
Return values
TRUEHkdf generated successfully.
FALSEHkdf generation failed.

Definition at line 345 of file CryptHkdf.c.