/** @file\r
HMAC-SHA256 KDF Wrapper Implementation over OpenSSL.\r
\r
-Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2018 - 2022, Intel Corporation. All rights reserved.<BR>\r
SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
/**\r
Derive HMAC-based Extract-and-Expand Key Derivation Function (HKDF).\r
\r
+ @param[in] Md Message Digest.\r
@param[in] Key Pointer to the user-supplied key.\r
@param[in] KeySize Key size in bytes.\r
@param[in] Salt Pointer to the salt(non-secret) value.\r
\r
**/\r
BOOLEAN\r
-EFIAPI\r
-HkdfSha256ExtractAndExpand (\r
- IN CONST UINT8 *Key,\r
- IN UINTN KeySize,\r
- IN CONST UINT8 *Salt,\r
- IN UINTN SaltSize,\r
- IN CONST UINT8 *Info,\r
- IN UINTN InfoSize,\r
- OUT UINT8 *Out,\r
- IN UINTN OutSize\r
+HkdfMdExtractAndExpand (\r
+ IN CONST EVP_MD *Md,\r
+ IN CONST UINT8 *Key,\r
+ IN UINTN KeySize,\r
+ IN CONST UINT8 *Salt,\r
+ IN UINTN SaltSize,\r
+ IN CONST UINT8 *Info,\r
+ IN UINTN InfoSize,\r
+ OUT UINT8 *Out,\r
+ IN UINTN OutSize\r
)\r
{\r
EVP_PKEY_CTX *pHkdfCtx;\r
\r
Result = EVP_PKEY_derive_init (pHkdfCtx) > 0;\r
if (Result) {\r
- Result = EVP_PKEY_CTX_set_hkdf_md (pHkdfCtx, EVP_sha256 ()) > 0;\r
+ Result = EVP_PKEY_CTX_set_hkdf_md (pHkdfCtx, Md) > 0;\r
}\r
\r
if (Result) {\r
pHkdfCtx = NULL;\r
return Result;\r
}\r
+\r
+/**\r
+ Derive HMAC-based Extract key Derivation Function (HKDF).\r
+\r
+ @param[in] Md message digest.\r
+ @param[in] Key Pointer to the user-supplied key.\r
+ @param[in] KeySize key size in bytes.\r
+ @param[in] Salt Pointer to the salt(non-secret) value.\r
+ @param[in] SaltSize salt size in bytes.\r
+ @param[out] PrkOut Pointer to buffer to receive hkdf value.\r
+ @param[in] PrkOutSize size of hkdf bytes to generate.\r
+\r
+ @retval true Hkdf generated successfully.\r
+ @retval false Hkdf generation failed.\r
+\r
+**/\r
+BOOLEAN\r
+HkdfMdExtract (\r
+ IN CONST EVP_MD *Md,\r
+ IN CONST UINT8 *Key,\r
+ IN UINTN KeySize,\r
+ IN CONST UINT8 *Salt,\r
+ IN UINTN SaltSize,\r
+ OUT UINT8 *PrkOut,\r
+ UINTN PrkOutSize\r
+ )\r
+{\r
+ EVP_PKEY_CTX *pHkdfCtx;\r
+ BOOLEAN Result;\r
+\r
+ if ((Key == NULL) || (Salt == NULL) || (PrkOut == NULL) ||\r
+ (KeySize > INT_MAX) || (SaltSize > INT_MAX) ||\r
+ (PrkOutSize > INT_MAX))\r
+ {\r
+ return FALSE;\r
+ }\r
+\r
+ pHkdfCtx = EVP_PKEY_CTX_new_id (EVP_PKEY_HKDF, NULL);\r
+ if (pHkdfCtx == NULL) {\r
+ return FALSE;\r
+ }\r
+\r
+ Result = EVP_PKEY_derive_init (pHkdfCtx) > 0;\r
+ if (Result) {\r
+ Result = EVP_PKEY_CTX_set_hkdf_md (pHkdfCtx, Md) > 0;\r
+ }\r
+\r
+ if (Result) {\r
+ Result =\r
+ EVP_PKEY_CTX_hkdf_mode (\r
+ pHkdfCtx,\r
+ EVP_PKEY_HKDEF_MODE_EXTRACT_ONLY\r
+ ) > 0;\r
+ }\r
+\r
+ if (Result) {\r
+ Result = EVP_PKEY_CTX_set1_hkdf_salt (\r
+ pHkdfCtx,\r
+ Salt,\r
+ (uint32_t)SaltSize\r
+ ) > 0;\r
+ }\r
+\r
+ if (Result) {\r
+ Result = EVP_PKEY_CTX_set1_hkdf_key (\r
+ pHkdfCtx,\r
+ Key,\r
+ (uint32_t)KeySize\r
+ ) > 0;\r
+ }\r
+\r
+ if (Result) {\r
+ Result = EVP_PKEY_derive (pHkdfCtx, PrkOut, &PrkOutSize) > 0;\r
+ }\r
+\r
+ EVP_PKEY_CTX_free (pHkdfCtx);\r
+ pHkdfCtx = NULL;\r
+ return Result;\r
+}\r
+\r
+/**\r
+ Derive SHA256 HMAC-based Expand Key Derivation Function (HKDF).\r
+\r
+ @param[in] Md Message Digest.\r
+ @param[in] Prk Pointer to the user-supplied key.\r
+ @param[in] PrkSize Key size in bytes.\r
+ @param[in] Info Pointer to the application specific info.\r
+ @param[in] InfoSize Info size in bytes.\r
+ @param[out] Out Pointer to buffer to receive hkdf value.\r
+ @param[in] OutSize Size of hkdf bytes to generate.\r
+\r
+ @retval TRUE Hkdf generated successfully.\r
+ @retval FALSE Hkdf generation failed.\r
+\r
+**/\r
+BOOLEAN\r
+HkdfMdExpand (\r
+ IN CONST EVP_MD *Md,\r
+ IN CONST UINT8 *Prk,\r
+ IN UINTN PrkSize,\r
+ IN CONST UINT8 *Info,\r
+ IN UINTN InfoSize,\r
+ OUT UINT8 *Out,\r
+ IN UINTN OutSize\r
+ )\r
+{\r
+ EVP_PKEY_CTX *pHkdfCtx;\r
+ BOOLEAN Result;\r
+\r
+ if ((Prk == NULL) || (Info == NULL) || (Out == NULL) ||\r
+ (PrkSize > INT_MAX) || (InfoSize > INT_MAX) || (OutSize > INT_MAX))\r
+ {\r
+ return FALSE;\r
+ }\r
+\r
+ pHkdfCtx = EVP_PKEY_CTX_new_id (EVP_PKEY_HKDF, NULL);\r
+ if (pHkdfCtx == NULL) {\r
+ return FALSE;\r
+ }\r
+\r
+ Result = EVP_PKEY_derive_init (pHkdfCtx) > 0;\r
+ if (Result) {\r
+ Result = EVP_PKEY_CTX_set_hkdf_md (pHkdfCtx, Md) > 0;\r
+ }\r
+\r
+ if (Result) {\r
+ Result = EVP_PKEY_CTX_hkdf_mode (pHkdfCtx, EVP_PKEY_HKDEF_MODE_EXPAND_ONLY) > 0;\r
+ }\r
+\r
+ if (Result) {\r
+ Result = EVP_PKEY_CTX_set1_hkdf_key (pHkdfCtx, Prk, (UINT32)PrkSize) > 0;\r
+ }\r
+\r
+ if (Result) {\r
+ Result = EVP_PKEY_CTX_add1_hkdf_info (pHkdfCtx, Info, (UINT32)InfoSize) > 0;\r
+ }\r
+\r
+ if (Result) {\r
+ Result = EVP_PKEY_derive (pHkdfCtx, Out, &OutSize) > 0;\r
+ }\r
+\r
+ EVP_PKEY_CTX_free (pHkdfCtx);\r
+ pHkdfCtx = NULL;\r
+ return Result;\r
+}\r
+\r
+/**\r
+ Derive HMAC-based Extract-and-Expand Key Derivation Function (HKDF).\r
+\r
+ @param[in] Key Pointer to the user-supplied key.\r
+ @param[in] KeySize Key size in bytes.\r
+ @param[in] Salt Pointer to the salt(non-secret) value.\r
+ @param[in] SaltSize Salt size in bytes.\r
+ @param[in] Info Pointer to the application specific info.\r
+ @param[in] InfoSize Info size in bytes.\r
+ @param[out] Out Pointer to buffer to receive hkdf value.\r
+ @param[in] OutSize Size of hkdf bytes to generate.\r
+\r
+ @retval TRUE Hkdf generated successfully.\r
+ @retval FALSE Hkdf generation failed.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+HkdfSha256ExtractAndExpand (\r
+ IN CONST UINT8 *Key,\r
+ IN UINTN KeySize,\r
+ IN CONST UINT8 *Salt,\r
+ IN UINTN SaltSize,\r
+ IN CONST UINT8 *Info,\r
+ IN UINTN InfoSize,\r
+ OUT UINT8 *Out,\r
+ IN UINTN OutSize\r
+ )\r
+{\r
+ return HkdfMdExtractAndExpand (EVP_sha256 (), Key, KeySize, Salt, SaltSize, Info, InfoSize, Out, OutSize);\r
+}\r
+\r
+/**\r
+ Derive SHA256 HMAC-based Extract key Derivation Function (HKDF).\r
+\r
+ @param[in] Key Pointer to the user-supplied key.\r
+ @param[in] KeySize key size in bytes.\r
+ @param[in] Salt Pointer to the salt(non-secret) value.\r
+ @param[in] SaltSize salt size in bytes.\r
+ @param[out] PrkOut Pointer to buffer to receive hkdf value.\r
+ @param[in] PrkOutSize size of hkdf bytes to generate.\r
+\r
+ @retval true Hkdf generated successfully.\r
+ @retval false Hkdf generation failed.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+HkdfSha256Extract (\r
+ IN CONST UINT8 *Key,\r
+ IN UINTN KeySize,\r
+ IN CONST UINT8 *Salt,\r
+ IN UINTN SaltSize,\r
+ OUT UINT8 *PrkOut,\r
+ UINTN PrkOutSize\r
+ )\r
+{\r
+ return HkdfMdExtract (\r
+ EVP_sha256 (),\r
+ Key,\r
+ KeySize,\r
+ Salt,\r
+ SaltSize,\r
+ PrkOut,\r
+ PrkOutSize\r
+ );\r
+}\r
+\r
+/**\r
+ Derive SHA256 HMAC-based Expand Key Derivation Function (HKDF).\r
+\r
+ @param[in] Prk Pointer to the user-supplied key.\r
+ @param[in] PrkSize Key size in bytes.\r
+ @param[in] Info Pointer to the application specific info.\r
+ @param[in] InfoSize Info size in bytes.\r
+ @param[out] Out Pointer to buffer to receive hkdf value.\r
+ @param[in] OutSize Size of hkdf bytes to generate.\r
+\r
+ @retval TRUE Hkdf generated successfully.\r
+ @retval FALSE Hkdf generation failed.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+HkdfSha256Expand (\r
+ IN CONST UINT8 *Prk,\r
+ IN UINTN PrkSize,\r
+ IN CONST UINT8 *Info,\r
+ IN UINTN InfoSize,\r
+ OUT UINT8 *Out,\r
+ IN UINTN OutSize\r
+ )\r
+{\r
+ return HkdfMdExpand (EVP_sha256 (), Prk, PrkSize, Info, InfoSize, Out, OutSize);\r
+}\r
+\r
+/**\r
+ Derive SHA384 HMAC-based Extract-and-Expand Key Derivation Function (HKDF).\r
+\r
+ @param[in] Key Pointer to the user-supplied key.\r
+ @param[in] KeySize Key size in bytes.\r
+ @param[in] Salt Pointer to the salt(non-secret) value.\r
+ @param[in] SaltSize Salt size in bytes.\r
+ @param[in] Info Pointer to the application specific info.\r
+ @param[in] InfoSize Info size in bytes.\r
+ @param[out] Out Pointer to buffer to receive hkdf value.\r
+ @param[in] OutSize Size of hkdf bytes to generate.\r
+\r
+ @retval TRUE Hkdf generated successfully.\r
+ @retval FALSE Hkdf generation failed.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+HkdfSha384ExtractAndExpand (\r
+ IN CONST UINT8 *Key,\r
+ IN UINTN KeySize,\r
+ IN CONST UINT8 *Salt,\r
+ IN UINTN SaltSize,\r
+ IN CONST UINT8 *Info,\r
+ IN UINTN InfoSize,\r
+ OUT UINT8 *Out,\r
+ IN UINTN OutSize\r
+ )\r
+{\r
+ return HkdfMdExtractAndExpand (EVP_sha384 (), Key, KeySize, Salt, SaltSize, Info, InfoSize, Out, OutSize);\r
+}\r
+\r
+/**\r
+ Derive SHA384 HMAC-based Extract key Derivation Function (HKDF).\r
+\r
+ @param[in] Key Pointer to the user-supplied key.\r
+ @param[in] KeySize key size in bytes.\r
+ @param[in] Salt Pointer to the salt(non-secret) value.\r
+ @param[in] SaltSize salt size in bytes.\r
+ @param[out] PrkOut Pointer to buffer to receive hkdf value.\r
+ @param[in] PrkOutSize size of hkdf bytes to generate.\r
+\r
+ @retval true Hkdf generated successfully.\r
+ @retval false Hkdf generation failed.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+HkdfSha384Extract (\r
+ IN CONST UINT8 *Key,\r
+ IN UINTN KeySize,\r
+ IN CONST UINT8 *Salt,\r
+ IN UINTN SaltSize,\r
+ OUT UINT8 *PrkOut,\r
+ UINTN PrkOutSize\r
+ )\r
+{\r
+ return HkdfMdExtract (\r
+ EVP_sha384 (),\r
+ Key,\r
+ KeySize,\r
+ Salt,\r
+ SaltSize,\r
+ PrkOut,\r
+ PrkOutSize\r
+ );\r
+}\r
+\r
+/**\r
+ Derive SHA384 HMAC-based Expand Key Derivation Function (HKDF).\r
+\r
+ @param[in] Prk Pointer to the user-supplied key.\r
+ @param[in] PrkSize Key size in bytes.\r
+ @param[in] Info Pointer to the application specific info.\r
+ @param[in] InfoSize Info size in bytes.\r
+ @param[out] Out Pointer to buffer to receive hkdf value.\r
+ @param[in] OutSize Size of hkdf bytes to generate.\r
+\r
+ @retval TRUE Hkdf generated successfully.\r
+ @retval FALSE Hkdf generation failed.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+HkdfSha384Expand (\r
+ IN CONST UINT8 *Prk,\r
+ IN UINTN PrkSize,\r
+ IN CONST UINT8 *Info,\r
+ IN UINTN InfoSize,\r
+ OUT UINT8 *Out,\r
+ IN UINTN OutSize\r
+ )\r
+{\r
+ return HkdfMdExpand (EVP_sha384 (), Prk, PrkSize, Info, InfoSize, Out, OutSize);\r
+}\r
/** @file\r
HMAC-SHA256 KDF Wrapper Implementation which does not provide real capabilities.\r
\r
-Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2018 - 2022, Intel Corporation. All rights reserved.<BR>\r
SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
ASSERT (FALSE);\r
return FALSE;\r
}\r
+\r
+/**\r
+ Derive SHA256 HMAC-based Extract key Derivation Function (HKDF).\r
+\r
+ @param[in] Key Pointer to the user-supplied key.\r
+ @param[in] KeySize key size in bytes.\r
+ @param[in] Salt Pointer to the salt(non-secret) value.\r
+ @param[in] SaltSize salt size in bytes.\r
+ @param[out] PrkOut Pointer to buffer to receive hkdf value.\r
+ @param[in] PrkOutSize size of hkdf bytes to generate.\r
+\r
+ @retval true Hkdf generated successfully.\r
+ @retval false Hkdf generation failed.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+HkdfSha256Extract (\r
+ IN CONST UINT8 *Key,\r
+ IN UINTN KeySize,\r
+ IN CONST UINT8 *Salt,\r
+ IN UINTN SaltSize,\r
+ OUT UINT8 *PrkOut,\r
+ UINTN PrkOutSize\r
+ )\r
+{\r
+ ASSERT (FALSE);\r
+ return FALSE;\r
+}\r
+\r
+/**\r
+ Derive SHA256 HMAC-based Expand Key Derivation Function (HKDF).\r
+\r
+ @param[in] Prk Pointer to the user-supplied key.\r
+ @param[in] PrkSize Key size in bytes.\r
+ @param[in] Info Pointer to the application specific info.\r
+ @param[in] InfoSize Info size in bytes.\r
+ @param[out] Out Pointer to buffer to receive hkdf value.\r
+ @param[in] OutSize Size of hkdf bytes to generate.\r
+\r
+ @retval TRUE Hkdf generated successfully.\r
+ @retval FALSE Hkdf generation failed.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+HkdfSha256Expand (\r
+ IN CONST UINT8 *Prk,\r
+ IN UINTN PrkSize,\r
+ IN CONST UINT8 *Info,\r
+ IN UINTN InfoSize,\r
+ OUT UINT8 *Out,\r
+ IN UINTN OutSize\r
+ )\r
+{\r
+ ASSERT (FALSE);\r
+ return FALSE;\r
+}\r
+\r
+/**\r
+ Derive SHA384 HMAC-based Extract-and-Expand Key Derivation Function (HKDF).\r
+\r
+ @param[in] Key Pointer to the user-supplied key.\r
+ @param[in] KeySize Key size in bytes.\r
+ @param[in] Salt Pointer to the salt(non-secret) value.\r
+ @param[in] SaltSize Salt size in bytes.\r
+ @param[in] Info Pointer to the application specific info.\r
+ @param[in] InfoSize Info size in bytes.\r
+ @param[out] Out Pointer to buffer to receive hkdf value.\r
+ @param[in] OutSize Size of hkdf bytes to generate.\r
+\r
+ @retval TRUE Hkdf generated successfully.\r
+ @retval FALSE Hkdf generation failed.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+HkdfSha384ExtractAndExpand (\r
+ IN CONST UINT8 *Key,\r
+ IN UINTN KeySize,\r
+ IN CONST UINT8 *Salt,\r
+ IN UINTN SaltSize,\r
+ IN CONST UINT8 *Info,\r
+ IN UINTN InfoSize,\r
+ OUT UINT8 *Out,\r
+ IN UINTN OutSize\r
+ )\r
+{\r
+ ASSERT (FALSE);\r
+ return FALSE;\r
+}\r
+\r
+/**\r
+ Derive SHA384 HMAC-based Extract key Derivation Function (HKDF).\r
+\r
+ @param[in] Key Pointer to the user-supplied key.\r
+ @param[in] KeySize key size in bytes.\r
+ @param[in] Salt Pointer to the salt(non-secret) value.\r
+ @param[in] SaltSize salt size in bytes.\r
+ @param[out] PrkOut Pointer to buffer to receive hkdf value.\r
+ @param[in] PrkOutSize size of hkdf bytes to generate.\r
+\r
+ @retval true Hkdf generated successfully.\r
+ @retval false Hkdf generation failed.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+HkdfSha384Extract (\r
+ IN CONST UINT8 *Key,\r
+ IN UINTN KeySize,\r
+ IN CONST UINT8 *Salt,\r
+ IN UINTN SaltSize,\r
+ OUT UINT8 *PrkOut,\r
+ UINTN PrkOutSize\r
+ )\r
+{\r
+ ASSERT (FALSE);\r
+ return FALSE;\r
+}\r
+\r
+/**\r
+ Derive SHA384 HMAC-based Expand Key Derivation Function (HKDF).\r
+\r
+ @param[in] Prk Pointer to the user-supplied key.\r
+ @param[in] PrkSize Key size in bytes.\r
+ @param[in] Info Pointer to the application specific info.\r
+ @param[in] InfoSize Info size in bytes.\r
+ @param[out] Out Pointer to buffer to receive hkdf value.\r
+ @param[in] OutSize Size of hkdf bytes to generate.\r
+\r
+ @retval TRUE Hkdf generated successfully.\r
+ @retval FALSE Hkdf generation failed.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+HkdfSha384Expand (\r
+ IN CONST UINT8 *Prk,\r
+ IN UINTN PrkSize,\r
+ IN CONST UINT8 *Info,\r
+ IN UINTN InfoSize,\r
+ OUT UINT8 *Out,\r
+ IN UINTN OutSize\r
+ )\r
+{\r
+ ASSERT (FALSE);\r
+ return FALSE;\r
+}\r
/** @file\r
HMAC-SHA256 KDF Wrapper Implementation which does not provide real capabilities.\r
\r
-Copyright (c) 2018 - 2019, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2018 - 2022, Intel Corporation. All rights reserved.<BR>\r
SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
ASSERT (FALSE);\r
return FALSE;\r
}\r
+\r
+/**\r
+ Derive SHA256 HMAC-based Extract key Derivation Function (HKDF).\r
+\r
+ @param[in] Key Pointer to the user-supplied key.\r
+ @param[in] KeySize key size in bytes.\r
+ @param[in] Salt Pointer to the salt(non-secret) value.\r
+ @param[in] SaltSize salt size in bytes.\r
+ @param[out] PrkOut Pointer to buffer to receive hkdf value.\r
+ @param[in] PrkOutSize size of hkdf bytes to generate.\r
+\r
+ @retval true Hkdf generated successfully.\r
+ @retval false Hkdf generation failed.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+HkdfSha256Extract (\r
+ IN CONST UINT8 *Key,\r
+ IN UINTN KeySize,\r
+ IN CONST UINT8 *Salt,\r
+ IN UINTN SaltSize,\r
+ OUT UINT8 *PrkOut,\r
+ UINTN PrkOutSize\r
+ )\r
+{\r
+ ASSERT (FALSE);\r
+ return FALSE;\r
+}\r
+\r
+/**\r
+ Derive SHA256 HMAC-based Expand Key Derivation Function (HKDF).\r
+\r
+ @param[in] Prk Pointer to the user-supplied key.\r
+ @param[in] PrkSize Key size in bytes.\r
+ @param[in] Info Pointer to the application specific info.\r
+ @param[in] InfoSize Info size in bytes.\r
+ @param[out] Out Pointer to buffer to receive hkdf value.\r
+ @param[in] OutSize Size of hkdf bytes to generate.\r
+\r
+ @retval TRUE Hkdf generated successfully.\r
+ @retval FALSE Hkdf generation failed.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+HkdfSha256Expand (\r
+ IN CONST UINT8 *Prk,\r
+ IN UINTN PrkSize,\r
+ IN CONST UINT8 *Info,\r
+ IN UINTN InfoSize,\r
+ OUT UINT8 *Out,\r
+ IN UINTN OutSize\r
+ )\r
+{\r
+ ASSERT (FALSE);\r
+ return FALSE;\r
+}\r
+\r
+/**\r
+ Derive SHA384 HMAC-based Extract-and-Expand Key Derivation Function (HKDF).\r
+\r
+ @param[in] Key Pointer to the user-supplied key.\r
+ @param[in] KeySize Key size in bytes.\r
+ @param[in] Salt Pointer to the salt(non-secret) value.\r
+ @param[in] SaltSize Salt size in bytes.\r
+ @param[in] Info Pointer to the application specific info.\r
+ @param[in] InfoSize Info size in bytes.\r
+ @param[out] Out Pointer to buffer to receive hkdf value.\r
+ @param[in] OutSize Size of hkdf bytes to generate.\r
+\r
+ @retval TRUE Hkdf generated successfully.\r
+ @retval FALSE Hkdf generation failed.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+HkdfSha384ExtractAndExpand (\r
+ IN CONST UINT8 *Key,\r
+ IN UINTN KeySize,\r
+ IN CONST UINT8 *Salt,\r
+ IN UINTN SaltSize,\r
+ IN CONST UINT8 *Info,\r
+ IN UINTN InfoSize,\r
+ OUT UINT8 *Out,\r
+ IN UINTN OutSize\r
+ )\r
+{\r
+ ASSERT (FALSE);\r
+ return FALSE;\r
+}\r
+\r
+/**\r
+ Derive SHA384 HMAC-based Extract key Derivation Function (HKDF).\r
+\r
+ @param[in] Key Pointer to the user-supplied key.\r
+ @param[in] KeySize key size in bytes.\r
+ @param[in] Salt Pointer to the salt(non-secret) value.\r
+ @param[in] SaltSize salt size in bytes.\r
+ @param[out] PrkOut Pointer to buffer to receive hkdf value.\r
+ @param[in] PrkOutSize size of hkdf bytes to generate.\r
+\r
+ @retval true Hkdf generated successfully.\r
+ @retval false Hkdf generation failed.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+HkdfSha384Extract (\r
+ IN CONST UINT8 *Key,\r
+ IN UINTN KeySize,\r
+ IN CONST UINT8 *Salt,\r
+ IN UINTN SaltSize,\r
+ OUT UINT8 *PrkOut,\r
+ UINTN PrkOutSize\r
+ )\r
+{\r
+ ASSERT (FALSE);\r
+ return FALSE;\r
+}\r
+\r
+/**\r
+ Derive SHA384 HMAC-based Expand Key Derivation Function (HKDF).\r
+\r
+ @param[in] Prk Pointer to the user-supplied key.\r
+ @param[in] PrkSize Key size in bytes.\r
+ @param[in] Info Pointer to the application specific info.\r
+ @param[in] InfoSize Info size in bytes.\r
+ @param[out] Out Pointer to buffer to receive hkdf value.\r
+ @param[in] OutSize Size of hkdf bytes to generate.\r
+\r
+ @retval TRUE Hkdf generated successfully.\r
+ @retval FALSE Hkdf generation failed.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+HkdfSha384Expand (\r
+ IN CONST UINT8 *Prk,\r
+ IN UINTN PrkSize,\r
+ IN CONST UINT8 *Info,\r
+ IN UINTN InfoSize,\r
+ OUT UINT8 *Out,\r
+ IN UINTN OutSize\r
+ )\r
+{\r
+ ASSERT (FALSE);\r
+ return FALSE;\r
+}\r