public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: "Alexey Kardashevskiy via groups.io" <aik=amd.com@groups.io>
To: devel@edk2.groups.io, wenxing.hou@intel.com
Cc: Jiewen Yao <jiewen.yao@intel.com>, Yi Li <yi1.li@intel.com>,
	Xiaoyu Lu <xiaoyu1.lu@intel.com>,
	Guomin Jiang <guomin.jiang@intel.com>
Subject: Re: [edk2-devel] [PATCH v3 06/11] CryptoPkg: Add all .inf files for BaseCryptLibMbedTls
Date: Tue, 12 Dec 2023 15:03:17 +1100	[thread overview]
Message-ID: <9982905a-11da-4c82-9923-2b9507f75059@amd.com> (raw)
In-Reply-To: <179FF92851F08A90.471@groups.io>

ah never mind, sorry for the noise. Needed to build BaseTools/Source/C 
and install some packages.


On 12/12/23 14:52, Alexey Kardashevskiy via groups.io wrote:
> Hi,
> 
> This broke build:
> 
> nice build -q --cmd-len=64436 -n 20 -t GCC5 -a X64 -p 
> OvmfPkg/OvmfPkgX64.dsc
> 
> build.py...
> /home/aik/p/o-snp/CryptoPkg/CryptoPkg.dec(32): error 000E: 
> File/directory not found in workspace
>          /home/aik/p/o-snp/CryptoPkg/Library/MbedTlsLib/mbedtls/include
> 
> What am I missing? Thanks,
> 
> 
> On 29/9/23 01:34, Wenxing Hou via groups.io wrote:
>> Add .inf files and other support files.
>>
>> REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4177
>>
>> Cc: Jiewen Yao <jiewen.yao@intel.com>
>> Cc: Yi Li <yi1.li@intel.com>
>> Cc: Xiaoyu Lu <xiaoyu1.lu@intel.com>
>> Cc: Guomin Jiang <guomin.jiang@intel.com>
>> Signed-off-by: Wenxing Hou <wenxing.hou@intel.com>
>> ---
>>   CryptoPkg/CryptoPkg.dec                       |   4 +
>>   CryptoPkg/CryptoPkgMbedTls.dsc                | 280 +++++++++++
>>   .../BaseCryptLibMbedTls/BaseCryptLib.inf      |  81 +++
>>   .../BaseCryptLibMbedTls/PeiCryptLib.inf       | 101 ++++
>>   .../BaseCryptLibMbedTls/PeiCryptLib.uni       |  25 +
>>   .../BaseCryptLibMbedTls/RuntimeCryptLib.inf   |  92 ++++
>>   .../BaseCryptLibMbedTls/RuntimeCryptLib.uni   |  22 +
>>   .../BaseCryptLibMbedTls/SecCryptLib.inf       |  84 ++++
>>   .../BaseCryptLibMbedTls/SecCryptLib.uni       |  17 +
>>   .../BaseCryptLibMbedTls/SmmCryptLib.inf       |  92 ++++
>>   .../BaseCryptLibMbedTls/SmmCryptLib.uni       |  22 +
>>   .../SysCall/ConstantTimeClock.c               |  75 +++
>>   .../BaseCryptLibMbedTls/SysCall/CrtWrapper.c  |  58 +++
>>   .../SysCall/RuntimeMemAllocation.c            | 462 ++++++++++++++++++
>>   .../SysCall/TimerWrapper.c                    | 198 ++++++++
>>   .../BaseCryptLibMbedTls/TestBaseCryptLib.inf  |  76 +++
>>   CryptoPkg/Library/Include/stdint.h            |  19 +
>>   CryptoPkg/Library/Include/stubs-32.h          |   9 +
>>   CryptoPkg/Library/MbedTlsLib/EcSm2Null.c      |   2 +-
>>   19 files changed, 1718 insertions(+), 1 deletion(-)
>>   create mode 100644 CryptoPkg/CryptoPkgMbedTls.dsc
>>   create mode 100644 
>> CryptoPkg/Library/BaseCryptLibMbedTls/BaseCryptLib.inf
>>   create mode 100644 
>> CryptoPkg/Library/BaseCryptLibMbedTls/PeiCryptLib.inf
>>   create mode 100644 
>> CryptoPkg/Library/BaseCryptLibMbedTls/PeiCryptLib.uni
>>   create mode 100644 
>> CryptoPkg/Library/BaseCryptLibMbedTls/RuntimeCryptLib.inf
>>   create mode 100644 
>> CryptoPkg/Library/BaseCryptLibMbedTls/RuntimeCryptLib.uni
>>   create mode 100644 
>> CryptoPkg/Library/BaseCryptLibMbedTls/SecCryptLib.inf
>>   create mode 100644 
>> CryptoPkg/Library/BaseCryptLibMbedTls/SecCryptLib.uni
>>   create mode 100644 
>> CryptoPkg/Library/BaseCryptLibMbedTls/SmmCryptLib.inf
>>   create mode 100644 
>> CryptoPkg/Library/BaseCryptLibMbedTls/SmmCryptLib.uni
>>   create mode 100644 
>> CryptoPkg/Library/BaseCryptLibMbedTls/SysCall/ConstantTimeClock.c
>>   create mode 100644 
>> CryptoPkg/Library/BaseCryptLibMbedTls/SysCall/CrtWrapper.c
>>   create mode 100644 
>> CryptoPkg/Library/BaseCryptLibMbedTls/SysCall/RuntimeMemAllocation.c
>>   create mode 100644 
>> CryptoPkg/Library/BaseCryptLibMbedTls/SysCall/TimerWrapper.c
>>   create mode 100644 
>> CryptoPkg/Library/BaseCryptLibMbedTls/TestBaseCryptLib.inf
>>   create mode 100644 CryptoPkg/Library/Include/stdint.h
>>   create mode 100644 CryptoPkg/Library/Include/stubs-32.h
>>
>> diff --git a/CryptoPkg/CryptoPkg.dec b/CryptoPkg/CryptoPkg.dec
>> index 0c7d16109b..a5fa81a338 100644
>> --- a/CryptoPkg/CryptoPkg.dec
>> +++ b/CryptoPkg/CryptoPkg.dec
>> @@ -27,6 +27,10 @@
>>     Library/OpensslLib/openssl/providers/implementations/include
>>     Library/OpensslLib/OpensslGen/include
>>     Library/OpensslLib/OpensslGen/providers/common/include
>> +  Library/MbedTlsLib/Include
>> +  Library/MbedTlsLib/mbedtls
>> +  Library/MbedTlsLib/mbedtls/include
>> +  Library/MbedTlsLib/mbedtls/include/mbedtls
>>   [LibraryClasses]
>>     ##  @libraryclass  Provides basic library functions for 
>> cryptographic primitives.
>> diff --git a/CryptoPkg/CryptoPkgMbedTls.dsc 
>> b/CryptoPkg/CryptoPkgMbedTls.dsc
>> new file mode 100644
>> index 0000000000..5d0ae6ff3f
>> --- /dev/null
>> +++ b/CryptoPkg/CryptoPkgMbedTls.dsc
>> @@ -0,0 +1,280 @@
>> +## @file
>> +#  Cryptographic Library Package for UEFI Security Implementation.
>> +#  PEIM, DXE Driver, and SMM Driver with all crypto services enabled.
>> +#
>> +#  Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
>> +#  SPDX-License-Identifier: BSD-2-Clause-Patent
>> +#
>> +##
>> +
>> +################################################################################
>> +#
>> +# Defines Section - statements that will be processed to create a 
>> Makefile.
>> +#
>> +################################################################################
>> +[Defines]
>> +  PLATFORM_NAME                  = CryptoPkg
>> +  PLATFORM_GUID                  = E1063286-6C8C-4c25-AEF0-67A9A5B6E6B6
>> +  PLATFORM_VERSION               = 0.98
>> +  DSC_SPECIFICATION              = 0x00010005
>> +  OUTPUT_DIRECTORY               = Build/CryptoPkgMbed
>> +  SUPPORTED_ARCHITECTURES        = IA32|X64|ARM|AARCH64|RISCV64
>> +  BUILD_TARGETS                  = DEBUG|RELEASE|NOOPT
>> +  SKUID_IDENTIFIER               = DEFAULT
>> +
>> +!ifndef CRYPTO_IMG_TYPE
>> +  DEFINE CRYPTO_IMG_TYPE         = DXE_SMM
>> +!endif
>> +
>> +!if $(CRYPTO_IMG_TYPE) IN "PEI_DEFAULT PEI_PREMEM DXE_SMM"
>> +!else
>> +  !error CRYPTO_IMG_TYPE must be set to one of PEI_DEFAULT PEI_PREMEM 
>> DXE_SMM.
>> +!endif
>> +
>> +################################################################################
>> +#
>> +# Library Class section - list of all Library Classes needed by this 
>> Platform.
>> +#
>> +################################################################################
>> +
>> +!include MdePkg/MdeLibs.dsc.inc
>> +[LibraryClasses]
>> +  BaseLib|MdePkg/Library/BaseLib/BaseLib.inf
>> +  BaseMemoryLib|MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf
>> +  PcdLib|MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf
>> +  DebugLib|MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf
>> +  
>> UefiBootServicesTableLib|MdePkg/Library/UefiBootServicesTableLib/UefiBootServicesTableLib.inf
>> +  
>> UefiDriverEntryPoint|MdePkg/Library/UefiDriverEntryPoint/UefiDriverEntryPoint.inf
>> +  BaseCryptLib|CryptoPkg/Library/BaseCryptLibNull/BaseCryptLibNull.inf
>> +  TlsLib|CryptoPkg/Library/TlsLibNull/TlsLibNull.inf
>> +  HashApiLib|CryptoPkg/Library/BaseHashApiLib/BaseHashApiLib.inf
>> +  RngLib|MdePkg/Library/BaseRngLib/BaseRngLib.inf
>> +  
>> SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf
>> +
>> +[LibraryClasses.ARM, LibraryClasses.AARCH64]
>> +  #
>> +  # It is not possible to prevent the ARM compiler for generic 
>> intrinsic functions.
>> +  # This library provides the instrinsic functions generate by a 
>> given compiler.
>> +  # [LibraryClasses.ARM, LibraryClasses.AARCH64] and NULL mean link 
>> this library
>> +  # into all ARM and AARCH64 images.
>> +  #
>> +  NULL|ArmPkg/Library/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf
>> +
>> +  # Add support for stack protector
>> +  NULL|MdePkg/Library/BaseStackCheckLib/BaseStackCheckLib.inf
>> +
>> +[LibraryClasses.common.PEIM]
>> +  PeimEntryPoint|MdePkg/Library/PeimEntryPoint/PeimEntryPoint.inf
>> +  
>> MemoryAllocationLib|MdePkg/Library/PeiMemoryAllocationLib/PeiMemoryAllocationLib.inf
>> +  
>> PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf
>> +  PeiServicesLib|MdePkg/Library/PeiServicesLib/PeiServicesLib.inf
>> +  HobLib|MdePkg/Library/PeiHobLib/PeiHobLib.inf
>> +
>> +[LibraryClasses.common.DXE_SMM_DRIVER]
>> +  
>> SmmServicesTableLib|MdePkg/Library/SmmServicesTableLib/SmmServicesTableLib.inf
>> +  
>> MemoryAllocationLib|MdePkg/Library/SmmMemoryAllocationLib/SmmMemoryAllocationLib.inf
>> +  
>> MmServicesTableLib|MdePkg/Library/MmServicesTableLib/MmServicesTableLib.inf
>> +  
>> SynchronizationLib|MdePkg/Library/BaseSynchronizationLib/BaseSynchronizationLib.inf
>> +
>> +[LibraryClasses]
>> +  
>> MemoryAllocationLib|MdePkg/Library/UefiMemoryAllocationLib/UefiMemoryAllocationLib.inf
>> +  
>> DebugLib|MdeModulePkg/Library/PeiDxeDebugLibReportStatusCode/PeiDxeDebugLibReportStatusCode.inf
>> +  
>> DebugPrintErrorLevelLib|MdePkg/Library/BaseDebugPrintErrorLevelLib/BaseDebugPrintErrorLevelLib.inf
>> +  
>> OemHookStatusCodeLib|MdeModulePkg/Library/OemHookStatusCodeLibNull/OemHookStatusCodeLibNull.inf
>> +  PrintLib|MdePkg/Library/BasePrintLib/BasePrintLib.inf
>> +  DevicePathLib|MdePkg/Library/UefiDevicePathLib/UefiDevicePathLib.inf
>> +  PcdLib|MdePkg/Library/DxePcdLib/DxePcdLib.inf
>> +  
>> TimerLib|MdePkg/Library/BaseTimerLibNullTemplate/BaseTimerLibNullTemplate.inf
>> +  
>> UefiRuntimeServicesTableLib|MdePkg/Library/UefiRuntimeServicesTableLib/UefiRuntimeServicesTableLib.inf
>> +  IoLib|MdePkg/Library/BaseIoLibIntrinsic/BaseIoLibIntrinsic.inf
>> +  MbedTlsLib|CryptoPkg/Library/MbedTlsLib/MbedTlsLib.inf
>> +  IntrinsicLib|CryptoPkg/Library/IntrinsicLib/IntrinsicLib.inf
>> +  SafeIntLib|MdePkg/Library/BaseSafeIntLib/BaseSafeIntLib.inf
>> +
>> +[LibraryClasses.ARM]
>> +  ArmSoftFloatLib|ArmPkg/Library/ArmSoftFloatLib/ArmSoftFloatLib.inf
>> +
>> +[LibraryClasses.common.PEIM]
>> +  PcdLib|MdePkg/Library/PeiPcdLib/PeiPcdLib.inf
>> +  
>> ReportStatusCodeLib|MdeModulePkg/Library/PeiReportStatusCodeLib/PeiReportStatusCodeLib.inf
>> +  BaseCryptLib|CryptoPkg/Library/BaseCryptLibMbedTls/PeiCryptLib.inf
>> +  TlsLib|CryptoPkg/Library/TlsLibNull/TlsLibNull.inf
>> +
>> +[LibraryClasses.IA32.PEIM, LibraryClasses.X64.PEIM]
>> +  
>> PeiServicesTablePointerLib|MdePkg/Library/PeiServicesTablePointerLibIdt/PeiServicesTablePointerLibIdt.inf
>> +
>> +[LibraryClasses.ARM.PEIM, LibraryClasses.AARCH64.PEIM]
>> +  
>> PeiServicesTablePointerLib|ArmPkg/Library/PeiServicesTablePointerLib/PeiServicesTablePointerLib.inf
>> +
>> +[LibraryClasses.common.DXE_DRIVER]
>> +  
>> ReportStatusCodeLib|MdeModulePkg/Library/DxeReportStatusCodeLib/DxeReportStatusCodeLib.inf
>> +  BaseCryptLib|CryptoPkg/Library/BaseCryptLibMbedTls/BaseCryptLib.inf
>> +  TlsLib|CryptoPkg/Library/TlsLibNull/TlsLibNull.inf
>> +
>> +[LibraryClasses.common.DXE_SMM_DRIVER]
>> +  
>> ReportStatusCodeLib|MdeModulePkg/Library/SmmReportStatusCodeLib/SmmReportStatusCodeLib.inf
>> +  BaseCryptLib|CryptoPkg/Library/BaseCryptLibMbedTls/SmmCryptLib.inf
>> +  TlsLib|CryptoPkg/Library/TlsLibNull/TlsLibNull.inf
>> +
>> +################################################################################
>> +#
>> +# Pcd Section - list of all EDK II PCD Entries defined by this Platform
>> +#
>> +################################################################################
>> +[PcdsFixedAtBuild]
>> +  gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x0f
>> +  gEfiMdePkgTokenSpaceGuid.PcdDebugPrintErrorLevel|0x80000000
>> +  gEfiMdePkgTokenSpaceGuid.PcdReportStatusCodePropertyMask|0x06
>> +
>> +!if $(CRYPTO_IMG_TYPE) IN "DXE_SMM"
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.HmacMd5.Family    | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.HmacSha1.Family   | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.HmacSha256.Family | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Md4.Family        | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Md5.Family        | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Pkcs.Family       | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Dh.Family         | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Random.Family     | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Rsa.Family        | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha1.Family       | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha256.Family     | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha384.Family     | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha512.Family     | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.X509.Family       | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Tdes.Family       | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Aes.Family        | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Arc4.Family       | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sm3.Family        | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Hkdf.Family       | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Tls.Family        | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.TlsSet.Family     | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.TlsGet.Family     | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.ParallelHash.Family     | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +!endif
>> +
>> +!if $(CRYPTO_IMG_TYPE) IN "PEI_DEFAULT"
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Aes.Family        | PCD_CRYPTO_SERVICE_ENABLE_FAMILY
>> +
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Rsa.Services.Pkcs1Verify             | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Rsa.Services.New                     | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Rsa.Services.SetKey                  | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Rsa.Services.Free                    | TRUE
>> +
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha1.Services.GetContextSize         | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha1.Services.Init                   | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha1.Services.Update                 | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha1.Services.Final                  | TRUE
>> +
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha256.Services.GetContextSize       | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha256.Services.Init                 | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha256.Services.Update               | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha256.Services.Final                | TRUE
>> +
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha384.Services.GetContextSize       | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha384.Services.Init                 | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha384.Services.Update               | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha384.Services.Final                | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha384.Services.HashAll              | TRUE
>> +
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sm3.Services.GetContextSize          | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sm3.Services.Init                    | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sm3.Services.Update                  | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sm3.Services.Final                   | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sm3.Services.HashAll                 | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sm3.Services.Duplicate               | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.HmacSha256.Services.New              | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.HmacSha256.Services.Free             | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.HmacSha256.Services.SetKey           | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.HmacSha256.Services.Duplicate        | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.HmacSha256.Services.Update           | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.HmacSha256.Services.Final            | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Hkdf.Services.Sha256ExtractAndExpand | TRUE
>> +!endif
>> +
>> +!if $(CRYPTO_IMG_TYPE) IN "PEI_PREMEM"
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha256.Services.GetContextSize       | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha256.Services.Init                 | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha256.Services.Update               | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha256.Services.Final                | TRUE
>> +
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha384.Services.GetContextSize       | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha384.Services.Init                 | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha384.Services.Update               | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha384.Services.Final                | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha384.Services.HashAll              | TRUE
>> +
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha512.Services.GetContextSize       | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha512.Services.Init                 | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha512.Services.Update               | TRUE
>> +  
>> gEfiCryptoPkgTokenSpaceGuid.PcdCryptoServiceFamilyEnable.Sha512.Services.Final                | TRUE
>> +!endif
>> +
>> +###################################################################################################
>> +#
>> +# Components Section - list of the modules and components that will 
>> be processed by compilation
>> +#                      tools and the EDK II tools to generate 
>> PE32/PE32+/Coff image files.
>> +#
>> +# Note: The EDK II DSC file is not used to specify how compiled 
>> binary images get placed
>> +#       into firmware volume images. This section is just a list of 
>> modules to compile from
>> +#       source into UEFI-compliant binaries.
>> +#       It is the FDF file that contains information on combining 
>> binary files into firmware
>> +#       volume images, whose concept is beyond UEFI and is described 
>> in PI specification.
>> +#       Binary modules do not need to be listed in this section, as 
>> they should be
>> +#       specified in the FDF file. For example: Shell binary 
>> (Shell_Full.efi), FAT binary (Fat.efi),
>> +#       Logo (Logo.bmp), and etc.
>> +#       There may also be modules listed in this section that are not 
>> required in the FDF file,
>> +#       When a module listed here is excluded from FDF file, then 
>> UEFI-compliant binary will be
>> +#       generated for it, but the binary will not be put into any 
>> firmware volume.
>> +#
>> +###################################################################################################
>> +
>> +!if $(CRYPTO_IMG_TYPE) IN "PEI_DEFAULT PEI_PREMEM"
>> +[Components.IA32, Components.X64, Components.ARM, Components.AARCH64]
>> +  CryptoPkg/Driver/CryptoPei.inf {
>> +    <Defines>
>> +      !if "$(CRYPTO_SERVICES)" == "ALL"
>> +        FILE_GUID = 8DF53C2E-3380-495F-A8B7-370CFE28E1C6
>> +      !elseif "$(CRYPTO_SERVICES)" == "NONE"
>> +        FILE_GUID = E5A97EE3-71CC-407F-9DA9-6BE0C8A6C7DF
>> +      !elseif "$(CRYPTO_SERVICES)" == "MIN_PEI"
>> +        FILE_GUID = 0F5827A9-35FD-4F41-8D38-9BAFCE594D31
>> +      !endif
>> +  }
>> +!endif
>> +
>> +!if $(CRYPTO_IMG_TYPE) IN "DXE_SMM"
>> +[Components.IA32, Components.X64, Components.AARCH64]
>> +  CryptoPkg/Driver/CryptoDxe.inf {
>> +    <Defines>
>> +      !if "$(CRYPTO_SERVICES)" == "ALL"
>> +        FILE_GUID = D9444B06-060D-42C5-9344-F04707BE0169
>> +      !elseif "$(CRYPTO_SERVICES)" == "NONE"
>> +        FILE_GUID = C7A340F4-A6CC-4F95-A2DA-42BEA4C3944A
>> +      !elseif "$(CRYPTO_SERVICES)" == MIN_DXE_MIN_SMM
>> +        FILE_GUID = DDF5BE9E-159A-4B77-B6D7-82B84B5763A2
>> +      !endif
>> +  }
>> +
>> +[Components.IA32, Components.X64]
>> +  CryptoPkg/Driver/CryptoSmm.inf {
>> +    <Defines>
>> +      !if "$(CRYPTO_SERVICES)" == "ALL"
>> +        FILE_GUID = A3542CE8-77F7-49DC-A834-45D37D2EC1FA
>> +      !elseif "$(CRYPTO_SERVICES)" == "NONE"
>> +        FILE_GUID = 6DCB3127-01E7-4131-A487-DC77A965A541
>> +      !elseif "$(CRYPTO_SERVICES)" == MIN_DXE_MIN_SMM
>> +        FILE_GUID = 85F7EA15-3A2B-474A-8875-180542CD6BF3
>> +      !endif
>> +  }
>> +!endif
>> +
>> +[BuildOptions]
>> +  *_*_*_CC_FLAGS = -D DISABLE_NEW_DEPRECATED_INTERFACES
>> +  MSFT:*_*_*_CC_FLAGS = /D ENABLE_MD5_DEPRECATED_INTERFACES
>> +  INTEL:*_*_*_CC_FLAGS = /D ENABLE_MD5_DEPRECATED_INTERFACES
>> +  GCC:*_*_*_CC_FLAGS = -D ENABLE_MD5_DEPRECATED_INTERFACES
>> +  RVCT:*_*_*_CC_FLAGS = -DENABLE_MD5_DEPRECATED_INTERFACES
>> +!if $(CRYPTO_IMG_TYPE) IN "DXE_SMM"
>> +  MSFT:*_*_*_DLINK_FLAGS = /ALIGN:4096
>> +  GCC:*_GCC*_*_DLINK_FLAGS = -z common-page-size=0x1000
>> +!endif
>> diff --git a/CryptoPkg/Library/BaseCryptLibMbedTls/BaseCryptLib.inf 
>> b/CryptoPkg/Library/BaseCryptLibMbedTls/BaseCryptLib.inf
>> new file mode 100644
>> index 0000000000..16def792c5
>> --- /dev/null
>> +++ b/CryptoPkg/Library/BaseCryptLibMbedTls/BaseCryptLib.inf
>> @@ -0,0 +1,81 @@
>> +## @file
>> +#  Cryptographic Library Instance for DXE_DRIVER.
>> +#
>> +#  Caution: This module requires additional review when modified.
>> +#  This library will have external input - signature.
>> +#  This external input must be validated carefully to avoid security 
>> issues such as
>> +#  buffer overflow or integer overflow.
>> +#
>> +#  Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
>> +#  SPDX-License-Identifier: BSD-2-Clause-Patent
>> +#
>> +##
>> +
>> +[Defines]
>> +  INF_VERSION                    = 0x00010005
>> +  BASE_NAME                      = BaseCryptLib
>> +  FILE_GUID                      = 693C5308-AF95-4CE5-ADE9-CA011C2FC642
>> +  MODULE_TYPE                    = DXE_DRIVER
>> +  VERSION_STRING                 = 1.0
>> +  LIBRARY_CLASS                  = BaseCryptLib|DXE_DRIVER DXE_CORE 
>> UEFI_APPLICATION UEFI_DRIVER
>> +
>> +#
>> +# The following information is for reference only and not required by 
>> the build tools.
>> +#
>> +#  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
>> +#
>> +
>> +[Sources]
>> +  InternalCryptLib.h
>> +  Cipher/CryptAeadAesGcmNull.c
>> +  Cipher/CryptAes.c
>> +  Hash/CryptSha256.c
>> +  Hash/CryptSha512.c
>> +  Hash/CryptParallelHashNull.c
>> +  Hash/CryptSm3Null.c
>> +  Hash/CryptMd5.c
>> +  Hash/CryptSha1.c
>> +  Hmac/CryptHmac.c
>> +  Kdf/CryptHkdf.c
>> +  Pk/CryptRsaBasic.c
>> +  Pk/CryptRsaExtNull.c
>> +  Pk/CryptRsaPss.c
>> +  Pk/CryptRsaPssSignNull.c
>> +  Bn/CryptBnNull.c
>> +  Pem/CryptPemNull.c
>> +  Pk/CryptDhNull.c
>> +  Pk/CryptEcNull.c
>> +  Pk/CryptPkcs1OaepNull.c
>> +  Pk/CryptPkcs5Pbkdf2Null.c
>> +  Pk/CryptPkcs7SignNull.c
>> +  Pk/CryptPkcs7VerifyNull.c
>> +  Pk/CryptPkcs7VerifyEkuNull.c
>> +  Pk/CryptX509Null.c
>> +  Pk/CryptAuthenticodeNull.c
>> +  Pk/CryptTsNull.c
>> +  Rand/CryptRandNull.c
>> +  SysCall/CrtWrapper.c
>> +  SysCall/TimerWrapper.c
>> +
>> +[Packages]
>> +  MdePkg/MdePkg.dec
>> +  CryptoPkg/CryptoPkg.dec
>> +
>> +[LibraryClasses]
>> +  BaseLib
>> +  BaseMemoryLib
>> +  MemoryAllocationLib
>> +  UefiRuntimeServicesTableLib
>> +  DebugLib
>> +  MbedTlsLib
>> +  PrintLib
>> +  IntrinsicLib
>> +  RngLib
>> +  SynchronizationLib
>> +[Protocols]
>> +  gEfiMpServiceProtocolGuid
>> +#
>> +# Remove these [BuildOptions] after this library is cleaned up
>> +#
>> +[BuildOptions]
>> +  MSFT:*_*_*_CC_FLAGS = /GL-
>> diff --git a/CryptoPkg/Library/BaseCryptLibMbedTls/PeiCryptLib.inf 
>> b/CryptoPkg/Library/BaseCryptLibMbedTls/PeiCryptLib.inf
>> new file mode 100644
>> index 0000000000..72b22a24e8
>> --- /dev/null
>> +++ b/CryptoPkg/Library/BaseCryptLibMbedTls/PeiCryptLib.inf
>> @@ -0,0 +1,101 @@
>> +## @file
>> +#  Cryptographic Library Instance for PEIM.
>> +#
>> +#  Caution: This module requires additional review when modified.
>> +#  This library will have external input - signature.
>> +#  This external input must be validated carefully to avoid security 
>> issues such as
>> +#  buffer overflow or integer overflow.
>> +#
>> +#  Note:
>> +#  HMAC-SHA256 functions, AES functions, RSA external
>> +#  functions, PKCS#7 SignedData sign functions, Diffie-Hellman 
>> functions, X.509
>> +#  certificate handler functions, authenticode signature verification 
>> functions,
>> +#  PEM handler functions, and pseudorandom number generator functions 
>> are not
>> +#  supported in this instance.
>> +#
>> +#  Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
>> +#  SPDX-License-Identifier: BSD-2-Clause-Patent
>> +#
>> +##
>> +
>> +[Defines]
>> +  INF_VERSION                    = 0x00010005
>> +  BASE_NAME                      = PeiCryptLib
>> +  MODULE_UNI_FILE                = PeiCryptLib.uni
>> +  FILE_GUID                      = 91E0A3C3-37A7-4AEE-8689-C5B0AD2C8E63
>> +  MODULE_TYPE                    = PEIM
>> +  VERSION_STRING                 = 1.0
>> +  LIBRARY_CLASS                  = BaseCryptLib|PEIM PEI_CORE
>> +
>> +#
>> +# The following information is for reference only and not required by 
>> the build tools.
>> +#
>> +#  VALID_ARCHITECTURES           = IA32 X64
>> +#
>> +
>> +[Sources]
>> +  InternalCryptLib.h
>> +  Hash/CryptMd5.c
>> +  Hash/CryptSha1.c
>> +  Hash/CryptSha256.c
>> +  Hash/CryptSm3Null.c
>> +  Hash/CryptSha512.c
>> +  Hash/CryptParallelHashNull.c
>> +  Hmac/CryptHmac.c
>> +  Kdf/CryptHkdf.c
>> +  Cipher/CryptAes.c
>> +  Cipher/CryptAeadAesGcmNull.c
>> +  Pk/CryptRsaBasic.c
>> +  Pk/CryptRsaExtNull.c
>> +  Pk/CryptRsaPss.c
>> +  Pk/CryptRsaPssSignNull.c
>> +  Bn/CryptBnNull.c
>> +  Pem/CryptPemNull.c
>> +  Pk/CryptDhNull.c
>> +  Pk/CryptEcNull.c
>> +  Pk/CryptPkcs1OaepNull.c
>> +  Pk/CryptPkcs5Pbkdf2Null.c
>> +  Pk/CryptPkcs7SignNull.c
>> +  Pk/CryptPkcs7VerifyNull.c
>> +  Pk/CryptPkcs7VerifyEkuNull.c
>> +  Pk/CryptX509Null.c
>> +  Pk/CryptAuthenticodeNull.c
>> +  Pk/CryptTsNull.c
>> +  Rand/CryptRandNull.c
>> +  SysCall/CrtWrapper.c
>> +  SysCall/ConstantTimeClock.c
>> +
>> +[Packages]
>> +  MdePkg/MdePkg.dec
>> +  CryptoPkg/CryptoPkg.dec
>> +
>> +[LibraryClasses]
>> +  BaseLib
>> +  BaseMemoryLib
>> +  MemoryAllocationLib
>> +  DebugLib
>> +  MbedTlsLib
>> +  IntrinsicLib
>> +  PrintLib
>> +  PeiServicesTablePointerLib
>> +  PeiServicesLib
>> +  SynchronizationLib
>> +
>> +[Ppis]
>> +  gEfiPeiMpServicesPpiGuid
>> +#
>> +# Remove these [BuildOptions] after this library is cleaned up
>> +#
>> +[BuildOptions]
>> +  #
>> +  # suppress the following warnings so we do not break the build with 
>> warnings-as-errors:
>> +  # C4090: 'function' : different 'const' qualifiers
>> +  # C4718: 'function call' : recursive call has no side effects, 
>> deleting
>> +  #
>> +  MSFT:*_*_*_CC_FLAGS = /wd4090 /wd4718
>> +
>> +  GCC:*_CLANG35_*_CC_FLAGS = -std=c99
>> +  GCC:*_CLANG38_*_CC_FLAGS = -std=c99
>> +  GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 
>> -Wno-error=incompatible-pointer-types
>> +
>> +  XCODE:*_*_*_CC_FLAGS = -std=c99
>> diff --git a/CryptoPkg/Library/BaseCryptLibMbedTls/PeiCryptLib.uni 
>> b/CryptoPkg/Library/BaseCryptLibMbedTls/PeiCryptLib.uni
>> new file mode 100644
>> index 0000000000..3a6845642d
>> --- /dev/null
>> +++ b/CryptoPkg/Library/BaseCryptLibMbedTls/PeiCryptLib.uni
>> @@ -0,0 +1,25 @@
>> +// /** @file
>> +// Cryptographic Library Instance for PEIM.
>> +//
>> +// Caution: This module requires additional review when modified.
>> +// This library will have external input - signature.
>> +// This external input must be validated carefully to avoid security 
>> issues such as
>> +// buffer overflow or integer overflow.
>> +//
>> +// Note: AES
>> +// functions, RSA external functions, PKCS#7 SignedData sign functions,
>> +// Diffie-Hellman functions, X.509 certificate handler functions, 
>> authenticode
>> +// signature verification functions, PEM handler functions, and 
>> pseudorandom number
>> +// generator functions are not supported in this instance.
>> +//
>> +// Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
>> +//
>> +// SPDX-License-Identifier: BSD-2-Clause-Patent
>> +//
>> +// **/
>> +
>> +
>> +#string STR_MODULE_ABSTRACT             #language en-US 
>> "Cryptographic Library Instance for PEIM"
>> +
>> +#string STR_MODULE_DESCRIPTION          #language en-US "Caution: 
>> This module requires additional review when modified. This library 
>> will have external input - signature. This external input must be 
>> validated carefully to avoid security issues such as buffer overflow 
>> or integer overflow. Note: AES functions, RSA external functions, 
>> PKCS#7 SignedData sign functions, Diffie-Hellman functions, X.509 
>> certificate handler functions, authenticode signature verification 
>> functions, PEM handler functions, and pseudorandom number generator 
>> functions are not supported in this instance."
>> +
>> diff --git a/CryptoPkg/Library/BaseCryptLibMbedTls/RuntimeCryptLib.inf 
>> b/CryptoPkg/Library/BaseCryptLibMbedTls/RuntimeCryptLib.inf
>> new file mode 100644
>> index 0000000000..9f17ef00bf
>> --- /dev/null
>> +++ b/CryptoPkg/Library/BaseCryptLibMbedTls/RuntimeCryptLib.inf
>> @@ -0,0 +1,92 @@
>> +## @file
>> +#  Cryptographic Library Instance for DXE_RUNTIME_DRIVER.
>> +#
>> +#  Caution: This module requires additional review when modified.
>> +#  This library will have external input - signature.
>> +#  This external input must be validated carefully to avoid security 
>> issues such as
>> +#  buffer overflow or integer overflow.
>> +#
>> +#  Note: SHA-384 Digest functions, SHA-512 Digest functions,
>> +#  HMAC-SHA256 functions, AES functions, RSA external
>> +#  functions, PKCS#7 SignedData sign functions, Diffie-Hellman 
>> functions, and
>> +#  authenticode signature verification functions are not supported in 
>> this instance.
>> +#
>> +#  Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
>> +#  SPDX-License-Identifier: BSD-2-Clause-Patent
>> +#
>> +##
>> +
>> +[Defines]
>> +  INF_VERSION                    = 0x00010005
>> +  BASE_NAME                      = RuntimeCryptLib
>> +  MODULE_UNI_FILE                = RuntimeCryptLib.uni
>> +  FILE_GUID                      = D263B580-D9FC-4DC4-B445-578AAEFF530E
>> +  MODULE_TYPE                    = DXE_RUNTIME_DRIVER
>> +  VERSION_STRING                 = 1.0
>> +  LIBRARY_CLASS                  = BaseCryptLib|DXE_RUNTIME_DRIVER
>> +  CONSTRUCTOR                    = RuntimeCryptLibConstructor
>> +
>> +#
>> +# The following information is for reference only and not required by 
>> the build tools.
>> +#
>> +#  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
>> +#
>> +
>> +[Sources]
>> +  InternalCryptLib.h
>> +  Hash/CryptMd5.c
>> +  Hash/CryptSha1.c
>> +  Hash/CryptSha256.c
>> +  Hash/CryptSm3Null.c
>> +  Hash/CryptSha512.c
>> +  Hash/CryptParallelHashNull.c
>> +  Hmac/CryptHmac.c
>> +  Kdf/CryptHkdf.c
>> +  Cipher/CryptAes.c
>> +  Cipher/CryptAeadAesGcmNull.c
>> +  Pk/CryptRsaBasic.c
>> +  Pk/CryptRsaExtNull.c
>> +  Pk/CryptRsaPssNull.c
>> +  Pk/CryptRsaPssSignNull.c
>> +  Bn/CryptBnNull.c
>> +  Pem/CryptPemNull.c
>> +  Pk/CryptDhNull.c
>> +  Pk/CryptEcNull.c
>> +  Pk/CryptPkcs1OaepNull.c
>> +  Pk/CryptPkcs5Pbkdf2Null.c
>> +  Pk/CryptPkcs7SignNull.c
>> +  Pk/CryptPkcs7VerifyNull.c
>> +  Pk/CryptPkcs7VerifyEkuNull.c
>> +  Pk/CryptX509Null.c
>> +  Pk/CryptAuthenticodeNull.c
>> +  Pk/CryptTsNull.c
>> +  Rand/CryptRandNull.c
>> +  SysCall/CrtWrapper.c
>> +  SysCall/TimerWrapper.c
>> +  SysCall/RuntimeMemAllocation.c
>> +
>> +[Packages]
>> +  MdePkg/MdePkg.dec
>> +  CryptoPkg/CryptoPkg.dec
>> +
>> +[LibraryClasses]
>> +  BaseLib
>> +  BaseMemoryLib
>> +  UefiRuntimeServicesTableLib
>> +  DebugLib
>> +  MbedTlsLib
>> +  IntrinsicLib
>> +  PrintLib
>> +
>> +#
>> +# Remove these [BuildOptions] after this library is cleaned up
>> +#
>> +[BuildOptions]
>> +  #
>> +  # suppress the following warnings so we do not break the build with 
>> warnings-as-errors:
>> +  #
>> +  GCC:*_CLANG35_*_CC_FLAGS = -std=c99
>> +  GCC:*_CLANG38_*_CC_FLAGS = -std=c99
>> +  GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 
>> -Wno-error=incompatible-pointer-types
>> +
>> +  XCODE:*_*_*_CC_FLAGS = -std=c99
>> diff --git a/CryptoPkg/Library/BaseCryptLibMbedTls/RuntimeCryptLib.uni 
>> b/CryptoPkg/Library/BaseCryptLibMbedTls/RuntimeCryptLib.uni
>> new file mode 100644
>> index 0000000000..b2a2f5ff21
>> --- /dev/null
>> +++ b/CryptoPkg/Library/BaseCryptLibMbedTls/RuntimeCryptLib.uni
>> @@ -0,0 +1,22 @@
>> +// /** @file
>> +// Cryptographic Library Instance for DXE_RUNTIME_DRIVER.
>> +//
>> +// Caution: This module requires additional review when modified.
>> +// This library will have external input - signature.
>> +// This external input must be validated carefully to avoid security 
>> issues such as
>> +// buffer overflow or integer overflow.
>> +//
>> +// Note: AES
>> +// functions, RSA external functions, PKCS#7 SignedData sign functions,
>> +// Diffie-Hellman functions, and authenticode signature verification 
>> functions are
>> +// not supported in this instance.
>> +//
>> +// Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
>> +//
>> +// SPDX-License-Identifier: BSD-2-Clause-Patent
>> +//
>> +// **/
>> +
>> +#string STR_MODULE_ABSTRACT             #language en-US 
>> "Cryptographic Library Instance for DXE_RUNTIME_DRIVER"
>> +
>> +#string STR_MODULE_DESCRIPTION          #language en-US "Caution: 
>> This module requires additional review when modified. This library 
>> will have external input - signature. This external input must be 
>> validated carefully to avoid security issues such as buffer overflow 
>> or integer overflow. Note: AES functions, RSA external functions, 
>> PKCS#7 SignedData sign functions, Diffie-Hellman functions, and 
>> authenticode signature verification functions are not supported in 
>> this instance."
>> diff --git a/CryptoPkg/Library/BaseCryptLibMbedTls/SecCryptLib.inf 
>> b/CryptoPkg/Library/BaseCryptLibMbedTls/SecCryptLib.inf
>> new file mode 100644
>> index 0000000000..6fc073aac6
>> --- /dev/null
>> +++ b/CryptoPkg/Library/BaseCryptLibMbedTls/SecCryptLib.inf
>> @@ -0,0 +1,84 @@
>> +## @file
>> +#  Cryptographic Library Instance for SEC.
>> +#
>> +#  Caution: This module requires additional review when modified.
>> +#  This library will have external input - signature.
>> +#  This external input must be validated carefully to avoid security 
>> issues such as
>> +#  buffer overflow or integer overflow.
>> +#
>> +#  Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
>> +#  SPDX-License-Identifier: BSD-2-Clause-Patent
>> +#
>> +##
>> +
>> +[Defines]
>> +  INF_VERSION                    = 0x00010005
>> +  BASE_NAME                      = SecCryptLib
>> +  MODULE_UNI_FILE                = SecCryptLib.uni
>> +  FILE_GUID                      = 894C367F-254A-4563-8624-798D46EAD796
>> +  MODULE_TYPE                    = BASE
>> +  VERSION_STRING                 = 1.0
>> +  LIBRARY_CLASS                  = BaseCryptLib|SEC
>> +
>> +#
>> +# The following information is for reference only and not required by 
>> the build tools.
>> +#
>> +#  VALID_ARCHITECTURES           = IA32 X64
>> +#
>> +
>> +[Sources]
>> +  InternalCryptLib.h
>> +  Hash/CryptSha512.c
>> +
>> +  Hash/CryptMd5Null.c
>> +  Hash/CryptSha1Null.c
>> +  Hash/CryptSha256Null.c
>> +  Hash/CryptSm3Null.c
>> +  Hash/CryptParallelHashNull.c
>> +  Hmac/CryptHmacNull.c
>> +  Kdf/CryptHkdfNull.c
>> +  Cipher/CryptAesNull.c
>> +  Cipher/CryptAeadAesGcmNull.c
>> +  Pk/CryptRsaBasicNull.c
>> +  Pk/CryptRsaExtNull.c
>> +  Bn/CryptBnNull.c
>> +  Pem/CryptPemNull.c
>> +  Pk/CryptDhNull.c
>> +  Pk/CryptEcNull.c
>> +  Pk/CryptPkcs1OaepNull.c
>> +  Pk/CryptPkcs5Pbkdf2Null.c
>> +  Pk/CryptPkcs7SignNull.c
>> +  Pk/CryptPkcs7VerifyNull.c
>> +  Pk/CryptPkcs7VerifyEkuNull.c
>> +  Pk/CryptX509Null.c
>> +  Pk/CryptAuthenticodeNull.c
>> +  Pk/CryptTsNull.c
>> +  Rand/CryptRandNull.c
>> +  SysCall/CrtWrapper.c
>> +  SysCall/ConstantTimeClock.c
>> +
>> +[Packages]
>> +  MdePkg/MdePkg.dec
>> +  CryptoPkg/CryptoPkg.dec
>> +
>> +[LibraryClasses]
>> +  BaseLib
>> +  BaseMemoryLib
>> +  MemoryAllocationLib
>> +  DebugLib
>> +  MbedTlsLib
>> +  IntrinsicLib
>> +  PrintLib
>> +
>> +#
>> +# Remove these [BuildOptions] after this library is cleaned up
>> +#
>> +[BuildOptions]
>> +  #
>> +  # suppress the following warnings so we do not break the build with 
>> warnings-as-errors:
>> +  #
>> +  GCC:*_CLANG35_*_CC_FLAGS = -std=c99
>> +  GCC:*_CLANG38_*_CC_FLAGS = -std=c99
>> +  GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 
>> -Wno-error=incompatible-pointer-types
>> +
>> +  XCODE:*_*_*_CC_FLAGS = -std=c99
>> diff --git a/CryptoPkg/Library/BaseCryptLibMbedTls/SecCryptLib.uni 
>> b/CryptoPkg/Library/BaseCryptLibMbedTls/SecCryptLib.uni
>> new file mode 100644
>> index 0000000000..be2fc4067f
>> --- /dev/null
>> +++ b/CryptoPkg/Library/BaseCryptLibMbedTls/SecCryptLib.uni
>> @@ -0,0 +1,17 @@
>> +// /** @file
>> +// Cryptographic Library Instance for SEC driver.
>> +//
>> +// Caution: This module requires additional review when modified.
>> +// This library will have external input - signature.
>> +// This external input must be validated carefully to avoid security 
>> issues such as
>> +// buffer overflow or integer overflow.
>> +//
>> +// Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
>> +//
>> +// SPDX-License-Identifier: BSD-2-Clause-Patent
>> +//
>> +// **/
>> +
>> +#string STR_MODULE_ABSTRACT             #language en-US 
>> "Cryptographic Library Instance for SEC driver"
>> +
>> +#string STR_MODULE_DESCRIPTION          #language en-US "Caution: 
>> This module requires additional review when modified. This library 
>> will have external input - signature. This external input must be 
>> validated carefully to avoid security issues such as buffer overflow 
>> or integer overflow. Note: AES functions, RSA external functions, 
>> PKCS#7 SignedData sign functions, Diffie-Hellman functions, and 
>> authenticode signature verification functions are not supported in 
>> this instance."
>> diff --git a/CryptoPkg/Library/BaseCryptLibMbedTls/SmmCryptLib.inf 
>> b/CryptoPkg/Library/BaseCryptLibMbedTls/SmmCryptLib.inf
>> new file mode 100644
>> index 0000000000..40c56d1b7d
>> --- /dev/null
>> +++ b/CryptoPkg/Library/BaseCryptLibMbedTls/SmmCryptLib.inf
>> @@ -0,0 +1,92 @@
>> +## @file
>> +#  Cryptographic Library Instance for SMM driver.
>> +#
>> +#  Caution: This module requires additional review when modified.
>> +#  This library will have external input - signature.
>> +#  This external input must be validated carefully to avoid security 
>> issues such as
>> +#  buffer overflow or integer overflow.
>> +#
>> +#  Note: SHA-384 Digest functions, SHA-512 Digest functions,
>> +#  RSA external functions, PKCS#7 SignedData sign functions, 
>> Diffie-Hellman functions, and
>> +#  authenticode signature verification functions are not supported in 
>> this instance.
>> +#
>> +#  Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
>> +#  SPDX-License-Identifier: BSD-2-Clause-Patent
>> +#
>> +##
>> +
>> +[Defines]
>> +  INF_VERSION                    = 0x00010005
>> +  BASE_NAME                      = SmmCryptLib
>> +  MODULE_UNI_FILE                = SmmCryptLib.uni
>> +  FILE_GUID                      = CF104633-9901-4504-AD7A-91690926A253
>> +  MODULE_TYPE                    = DXE_SMM_DRIVER
>> +  VERSION_STRING                 = 1.0
>> +  PI_SPECIFICATION_VERSION       = 0x0001000A
>> +  LIBRARY_CLASS                  = BaseCryptLib|DXE_SMM_DRIVER 
>> SMM_CORE MM_STANDALONE
>> +
>> +#
>> +# The following information is for reference only and not required by 
>> the build tools.
>> +#
>> +#  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
>> +#
>> +
>> +[Sources]
>> +  InternalCryptLib.h
>> +  Hash/CryptMd5.c
>> +  Hash/CryptSha1.c
>> +  Hash/CryptSha256.c
>> +  Hash/CryptSm3Null.c
>> +  Hash/CryptSha512.c
>> +  Hash/CryptParallelHashNull.c
>> +  Hmac/CryptHmac.c
>> +  Kdf/CryptHkdf.c
>> +  Cipher/CryptAes.c
>> +  Cipher/CryptAeadAesGcmNull.c
>> +  Pk/CryptRsaBasic.c
>> +  Pk/CryptRsaExtNull.c
>> +  Pk/CryptRsaPss.c
>> +  Pk/CryptRsaPssSignNull.c
>> +  Bn/CryptBnNull.c
>> +  Pem/CryptPemNull.c
>> +  Pk/CryptDhNull.c
>> +  Pk/CryptEcNull.c
>> +  Pk/CryptPkcs1OaepNull.c
>> +  Pk/CryptPkcs5Pbkdf2Null.c
>> +  Pk/CryptPkcs7SignNull.c
>> +  Pk/CryptPkcs7VerifyNull.c
>> +  Pk/CryptPkcs7VerifyEkuNull.c
>> +  Pk/CryptX509Null.c
>> +  Pk/CryptAuthenticodeNull.c
>> +  Pk/CryptTsNull.c
>> +  Rand/CryptRandNull.c
>> +  SysCall/CrtWrapper.c
>> +  SysCall/ConstantTimeClock.c
>> +
>> +[Packages]
>> +  MdePkg/MdePkg.dec
>> +  CryptoPkg/CryptoPkg.dec
>> +
>> +[LibraryClasses]
>> +  BaseLib
>> +  BaseMemoryLib
>> +  MemoryAllocationLib
>> +  MbedTlsLib
>> +  IntrinsicLib
>> +  PrintLib
>> +  MmServicesTableLib
>> +  SynchronizationLib
>> +
>> +#
>> +# Remove these [BuildOptions] after this library is cleaned up
>> +#
>> +[BuildOptions]
>> +  #
>> +  # suppress the following warnings so we do not break the build with 
>> warnings-as-errors:
>> +  #
>> +
>> +  XCODE:*_*_*_CC_FLAGS = -mmmx -msse -std=c99
>> +
>> +  GCC:*_CLANG35_*_CC_FLAGS = -std=c99
>> +  GCC:*_CLANG38_*_CC_FLAGS = -std=c99
>> +  GCC:*_CLANGPDB_*_CC_FLAGS = -std=c99 
>> -Wno-error=incompatible-pointer-types
>> diff --git a/CryptoPkg/Library/BaseCryptLibMbedTls/SmmCryptLib.uni 
>> b/CryptoPkg/Library/BaseCryptLibMbedTls/SmmCryptLib.uni
>> new file mode 100644
>> index 0000000000..13948c2f3d
>> --- /dev/null
>> +++ b/CryptoPkg/Library/BaseCryptLibMbedTls/SmmCryptLib.uni
>> @@ -0,0 +1,22 @@
>> +// /** @file
>> +// Cryptographic Library Instance for SMM driver.
>> +//
>> +// Caution: This module requires additional review when modified.
>> +// This library will have external input - signature.
>> +// This external input must be validated carefully to avoid security 
>> issues such as
>> +// buffer overflow or integer overflow.
>> +//
>> +// Note: AES
>> +// functions, RSA external functions, PKCS#7 SignedData sign functions,
>> +// Diffie-Hellman functions, and authenticode signature verification 
>> functions are
>> +// not supported in this instance.
>> +//
>> +// Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
>> +//
>> +// SPDX-License-Identifier: BSD-2-Clause-Patent
>> +//
>> +// **/
>> +
>> +#string STR_MODULE_ABSTRACT             #language en-US 
>> "Cryptographic Library Instance for SMM driver"
>> +
>> +#string STR_MODULE_DESCRIPTION          #language en-US "Caution: 
>> This module requires additional review when modified. This library 
>> will have external input - signature. This external input must be 
>> validated carefully to avoid security issues such as buffer overflow 
>> or integer overflow. Note: AES functions, RSA external functions, 
>> PKCS#7 SignedData sign functions, Diffie-Hellman functions, and 
>> authenticode signature verification functions are not supported in 
>> this instance."
>> diff --git 
>> a/CryptoPkg/Library/BaseCryptLibMbedTls/SysCall/ConstantTimeClock.c 
>> b/CryptoPkg/Library/BaseCryptLibMbedTls/SysCall/ConstantTimeClock.c
>> new file mode 100644
>> index 0000000000..2ec13ef9d0
>> --- /dev/null
>> +++ b/CryptoPkg/Library/BaseCryptLibMbedTls/SysCall/ConstantTimeClock.c
>> @@ -0,0 +1,75 @@
>> +/** @file
>> +  C Run-Time Libraries (CRT) Time Management Routines Wrapper 
>> Implementation
>> +  for MbedTLS-based Cryptographic Library.
>> +
>> +  This C file implements constant time value for time() and NULL for 
>> gmtime()
>> +  thus should not be used in library instances which require 
>> functionality
>> +  of following APIs which need system time support:
>> +  1)  RsaGenerateKey
>> +  2)  RsaCheckKey
>> +  3)  RsaPkcs1Sign
>> +  4)  Pkcs7Sign
>> +  5)  DhGenerateParameter
>> +  6)  DhGenerateKey
>> +
>> +Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
>> +SPDX-License-Identifier: BSD-2-Clause-Patent
>> +
>> +**/
>> +
>> +#include <Base.h>
>> +#include <Library/BaseMemoryLib.h>
>> +
>> +typedef int time_t;
>> +
>> +//
>> +// Structures Definitions
>> +//
>> +struct tm {
>> +  int     tm_sec;    /* seconds after the minute [0-60] */
>> +  int     tm_min;    /* minutes after the hour [0-59] */
>> +  int     tm_hour;   /* hours since midnight [0-23] */
>> +  int     tm_mday;   /* day of the month [1-31] */
>> +  int     tm_mon;    /* months since January [0-11] */
>> +  int     tm_year;   /* years since 1900 */
>> +  int     tm_wday;   /* days since Sunday [0-6] */
>> +  int     tm_yday;   /* days since January 1 [0-365] */
>> +  int     tm_isdst;  /* Daylight Savings Time flag */
>> +  long    tm_gmtoff; /* offset from CUT in seconds */
>> +  char    *tm_zone;  /* timezone abbreviation */
>> +};
>> +
>> +//
>> +// -- Time Management Routines --
>> +//
>> +
>> +/**time function. **/
>> +time_t
>> +time (
>> +  time_t  *timer
>> +  )
>> +{
>> +  if (timer != NULL) {
>> +    *timer = 0;
>> +  }
>> +
>> +  return 0;
>> +}
>> +
>> +/**gmtime function. **/
>> +struct tm *
>> +gmtime (
>> +  const time_t  *timer
>> +  )
>> +{
>> +  return NULL;
>> +}
>> +
>> +/**_time64 function. **/
>> +time_t
>> +_time64 (
>> +  time_t  *t
>> +  )
>> +{
>> +  return time (t);
>> +}
>> diff --git 
>> a/CryptoPkg/Library/BaseCryptLibMbedTls/SysCall/CrtWrapper.c 
>> b/CryptoPkg/Library/BaseCryptLibMbedTls/SysCall/CrtWrapper.c
>> new file mode 100644
>> index 0000000000..f1d9b9c35c
>> --- /dev/null
>> +++ b/CryptoPkg/Library/BaseCryptLibMbedTls/SysCall/CrtWrapper.c
>> @@ -0,0 +1,58 @@
>> +/** @file
>> +  C Run-Time Libraries (CRT) Wrapper Implementation for MbedTLS-based
>> +  Cryptographic Library.
>> +
>> +Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
>> +SPDX-License-Identifier: BSD-2-Clause-Patent
>> +
>> +**/
>> +
>> +#include <Base.h>
>> +#include <Library/BaseLib.h>
>> +#include <Library/DebugLib.h>
>> +#include <Library/BaseMemoryLib.h>
>> +#include <stdio.h>
>> +
>> +/**dummy mbedtls_printf function. **/
>> +int
>> +mbedtls_printf (
>> +  char const  *fmt,
>> +  ...
>> +  )
>> +{
>> +  ASSERT (FALSE);
>> +  return 0;
>> +}
>> +
>> +/**dummy mbedtls_vsnprintf function. **/
>> +int
>> +mbedtls_vsnprintf (
>> +  char        *str,
>> +  size_t      size,
>> +  const char  *format,
>> +  ...
>> +  )
>> +{
>> +  ASSERT (FALSE);
>> +  return 0;
>> +}
>> +
>> +/**strchr function. **/
>> +char *
>> +strchr (
>> +  const char  *str,
>> +  int         ch
>> +  )
>> +{
>> +  return ScanMem8 (str, AsciiStrSize (str), (char)ch);
>> +}
>> +
>> +/**strcmp function. **/
>> +int
>> +strcmp (
>> +  const char  *s1,
>> +  const char  *s2
>> +  )
>> +{
>> +  return (int)AsciiStrCmp (s1, s2);
>> +}
>> diff --git 
>> a/CryptoPkg/Library/BaseCryptLibMbedTls/SysCall/RuntimeMemAllocation.c 
>> b/CryptoPkg/Library/BaseCryptLibMbedTls/SysCall/RuntimeMemAllocation.c
>> new file mode 100644
>> index 0000000000..51992029a8
>> --- /dev/null
>> +++ 
>> b/CryptoPkg/Library/BaseCryptLibMbedTls/SysCall/RuntimeMemAllocation.c
>> @@ -0,0 +1,462 @@
>> +/** @file
>> +  Light-weight Memory Management Routines for MbedTLS-based Crypto
>> +  Library at Runtime Phase.
>> +
>> +Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
>> +SPDX-License-Identifier: BSD-2-Clause-Patent
>> +
>> +**/
>> +
>> +#include <CrtLibSupport.h>
>> +#include <Library/UefiBootServicesTableLib.h>
>> +#include <Library/UefiRuntimeLib.h>
>> +#include <Library/MemoryAllocationLib.h>
>> +#include <Guid/EventGroup.h>
>> +
>> +// ----------------------------------------------------------------
>> +// Initial version. Needs further optimizations.
>> +// ----------------------------------------------------------------
>> +
>> +//
>> +// Definitions for Runtime Memory Operations
>> +//
>> +#define RT_PAGE_SIZE   0x200
>> +#define RT_PAGE_MASK   0x1FF
>> +#define RT_PAGE_SHIFT  9
>> +
>> +#define RT_SIZE_TO_PAGES(a)  (((a) >> RT_PAGE_SHIFT) + (((a) & 
>> RT_PAGE_MASK) ? 1 : 0))
>> +#define RT_PAGES_TO_SIZE(a)  ((a) << RT_PAGE_SHIFT)
>> +
>> +//
>> +// Page Flag Definitions
>> +//
>> +#define RT_PAGE_FREE  0x00000000
>> +#define RT_PAGE_USED  0x00000001
>> +
>> +#define MIN_REQUIRED_BLOCKS  600
>> +
>> +//
>> +// Memory Page Table
>> +//
>> +typedef struct {
>> +  UINTN     StartPageOffset;    // Offset of the starting page 
>> allocated.
>> +                                // Only available for USED pages.
>> +  UINT32    PageFlag;           // Page Attributes.
>> +} RT_MEMORY_PAGE_ENTRY;
>> +
>> +typedef struct {
>> +  UINTN                   PageCount;
>> +  UINTN                   LastEmptyPageOffset;
>> +  UINT8                   *DataAreaBase;       // Pointer to data Area.
>> +  RT_MEMORY_PAGE_ENTRY    Pages[1];            // Page Table Entries.
>> +} RT_MEMORY_PAGE_TABLE;
>> +
>> +//
>> +// Global Page Table for Runtime Cryptographic Provider.
>> +//
>> +RT_MEMORY_PAGE_TABLE  *mRTPageTable = NULL;
>> +
>> +//
>> +// Event for Runtime Address Conversion.
>> +//
>> +STATIC EFI_EVENT  mVirtualAddressChangeEvent;
>> +
>> +/**
>> +  Initializes pre-allocated memory pointed by ScratchBuffer for 
>> subsequent
>> +  runtime use.
>> +
>> +  @param[in, out]  ScratchBuffer      Pointer to user-supplied memory 
>> buffer.
>> +  @param[in]       ScratchBufferSize  Size of supplied buffer in bytes.
>> +
>> +  @retval EFI_SUCCESS  Successful initialization.
>> +
>> +**/
>> +EFI_STATUS
>> +InitializeScratchMemory (
>> +  IN OUT  UINT8  *ScratchBuffer,
>> +  IN      UINTN  ScratchBufferSize
>> +  )
>> +{
>> +  UINTN  Index;
>> +  UINTN  MemorySize;
>> +
>> +  //
>> +  // Parameters Checking
>> +  //
>> +  if (ScratchBuffer == NULL) {
>> +    return EFI_INVALID_PARAMETER;
>> +  }
>> +
>> +  if (ScratchBufferSize < MIN_REQUIRED_BLOCKS * 1024) {
>> +    return EFI_BUFFER_TOO_SMALL;
>> +  }
>> +
>> +  mRTPageTable = (RT_MEMORY_PAGE_TABLE *)ScratchBuffer;
>> +
>> +  //
>> +  // Initialize Internal Page Table for Memory Management
>> +  //
>> +  SetMem (mRTPageTable, ScratchBufferSize, 0xFF);
>> +  MemorySize = ScratchBufferSize - sizeof (RT_MEMORY_PAGE_TABLE) + 
>> sizeof (RT_MEMORY_PAGE_ENTRY);
>> +
>> +  mRTPageTable->PageCount           = MemorySize / (RT_PAGE_SIZE + 
>> sizeof (RT_MEMORY_PAGE_ENTRY));
>> +  mRTPageTable->LastEmptyPageOffset = 0x0;
>> +
>> +  for (Index = 0; Index < mRTPageTable->PageCount; Index++) {
>> +    mRTPageTable->Pages[Index].PageFlag        = RT_PAGE_FREE;
>> +    mRTPageTable->Pages[Index].StartPageOffset = 0;
>> +  }
>> +
>> +  mRTPageTable->DataAreaBase = ScratchBuffer + sizeof 
>> (RT_MEMORY_PAGE_TABLE) +
>> +                               (mRTPageTable->PageCount - 1) * sizeof 
>> (RT_MEMORY_PAGE_ENTRY);
>> +
>> +  return EFI_SUCCESS;
>> +}
>> +
>> +/**
>> +  Look-up Free memory Region for object allocation.
>> +
>> +  @param[in]  AllocationSize  Bytes to be allocated.
>> +
>> +  @return  Return available page offset for object allocation.
>> +
>> +**/
>> +UINTN
>> +LookupFreeMemRegion (
>> +  IN  UINTN  AllocationSize
>> +  )
>> +{
>> +  UINTN  StartPageIndex;
>> +  UINTN  Index;
>> +  UINTN  SubIndex;
>> +  UINTN  ReqPages;
>> +
>> +  StartPageIndex = RT_SIZE_TO_PAGES (mRTPageTable->LastEmptyPageOffset);
>> +  ReqPages       = RT_SIZE_TO_PAGES (AllocationSize);
>> +  if (ReqPages > mRTPageTable->PageCount) {
>> +    //
>> +    // No enough region for object allocation.
>> +    //
>> +    return (UINTN)(-1);
>> +  }
>> +
>> +  //
>> +  // Look up the free memory region with in current memory map table.
>> +  //
>> +  for (Index = StartPageIndex; Index <= (mRTPageTable->PageCount - 
>> ReqPages); ) {
>> +    //
>> +    // Check consecutive ReqPages pages.
>> +    //
>> +    for (SubIndex = 0; SubIndex < ReqPages; SubIndex++) {
>> +      if ((mRTPageTable->Pages[SubIndex + Index].PageFlag & 
>> RT_PAGE_USED) != 0) {
>> +        break;
>> +      }
>> +    }
>> +
>> +    if (SubIndex == ReqPages) {
>> +      //
>> +      // Succeed! Return the Starting Offset.
>> +      //
>> +      return RT_PAGES_TO_SIZE (Index);
>> +    }
>> +
>> +    //
>> +    // Failed! Skip current free memory pages and adjacent Used pages
>> +    //
>> +    while ((mRTPageTable->Pages[SubIndex + Index].PageFlag & 
>> RT_PAGE_USED) != 0) {
>> +      SubIndex++;
>> +    }
>> +
>> +    Index += SubIndex;
>> +  }
>> +
>> +  //
>> +  // Look up the free memory region from the beginning of the memory 
>> table
>> +  // until the StartCursorOffset
>> +  //
>> +  if (ReqPages > StartPageIndex) {
>> +    //
>> +    // No enough region for object allocation.
>> +    //
>> +    return (UINTN)(-1);
>> +  }
>> +
>> +  for (Index = 0; Index < (StartPageIndex - ReqPages); ) {
>> +    //
>> +    // Check Consecutive ReqPages Pages.
>> +    //
>> +    for (SubIndex = 0; SubIndex < ReqPages; SubIndex++) {
>> +      if ((mRTPageTable->Pages[SubIndex + Index].PageFlag & 
>> RT_PAGE_USED) != 0) {
>> +        break;
>> +      }
>> +    }
>> +
>> +    if (SubIndex == ReqPages) {
>> +      //
>> +      // Succeed! Return the Starting Offset.
>> +      //
>> +      return RT_PAGES_TO_SIZE (Index);
>> +    }
>> +
>> +    //
>> +    // Failed! Skip current adjacent Used pages
>> +    //
>> +    while ((SubIndex < (StartPageIndex - ReqPages)) &&
>> +           ((mRTPageTable->Pages[SubIndex + Index].PageFlag & 
>> RT_PAGE_USED) != 0))
>> +    {
>> +      SubIndex++;
>> +    }
>> +
>> +    Index += SubIndex;
>> +  }
>> +
>> +  //
>> +  // No available region for object allocation!
>> +  //
>> +  return (UINTN)(-1);
>> +}
>> +
>> +/**
>> +  Allocates a buffer at runtime phase.
>> +
>> +  @param[in]  AllocationSize    Bytes to be allocated.
>> +
>> +  @return  A pointer to the allocated buffer or NULL if allocation 
>> fails.
>> +
>> +**/
>> +VOID *
>> +RuntimeAllocateMem (
>> +  IN  UINTN  AllocationSize
>> +  )
>> +{
>> +  UINT8  *AllocPtr;
>> +  UINTN  ReqPages;
>> +  UINTN  Index;
>> +  UINTN  StartPage;
>> +  UINTN  AllocOffset;
>> +
>> +  AllocPtr = NULL;
>> +  ReqPages = 0;
>> +
>> +  //
>> +  // Look for available consecutive memory region starting from 
>> LastEmptyPageOffset.
>> +  // If no proper memory region found, look up from the beginning.
>> +  // If still not found, return NULL to indicate failed allocation.
>> +  //
>> +  AllocOffset = LookupFreeMemRegion (AllocationSize);
>> +  if (AllocOffset == (UINTN)(-1)) {
>> +    return NULL;
>> +  }
>> +
>> +  //
>> +  // Allocates consecutive memory pages with length of Size. Update 
>> the page
>> +  // table status. Returns the starting address.
>> +  //
>> +  ReqPages  = RT_SIZE_TO_PAGES (AllocationSize);
>> +  AllocPtr  = mRTPageTable->DataAreaBase + AllocOffset;
>> +  StartPage = RT_SIZE_TO_PAGES (AllocOffset);
>> +  Index     = 0;
>> +  while (Index < ReqPages) {
>> +    mRTPageTable->Pages[StartPage + Index].PageFlag       |= 
>> RT_PAGE_USED;
>> +    mRTPageTable->Pages[StartPage + Index].StartPageOffset = 
>> AllocOffset;
>> +
>> +    Index++;
>> +  }
>> +
>> +  mRTPageTable->LastEmptyPageOffset = AllocOffset + RT_PAGES_TO_SIZE 
>> (ReqPages);
>> +
>> +  ZeroMem (AllocPtr, AllocationSize);
>> +
>> +  //
>> +  // Returns a VOID pointer to the allocated space
>> +  //
>> +  return AllocPtr;
>> +}
>> +
>> +/**
>> +  Frees a buffer that was previously allocated at runtime phase.
>> +
>> +  @param[in]  Buffer  Pointer to the buffer to free.
>> +
>> +**/
>> +VOID
>> +RuntimeFreeMem (
>> +  IN  VOID  *Buffer
>> +  )
>> +{
>> +  UINTN  StartOffset;
>> +  UINTN  StartPageIndex;
>> +
>> +  StartOffset    = (UINTN)Buffer - (UINTN)mRTPageTable->DataAreaBase;
>> +  StartPageIndex = RT_SIZE_TO_PAGES 
>> (mRTPageTable->Pages[RT_SIZE_TO_PAGES (StartOffset)].StartPageOffset);
>> +
>> +  while (StartPageIndex < mRTPageTable->PageCount) {
>> +    if (((mRTPageTable->Pages[StartPageIndex].PageFlag & 
>> RT_PAGE_USED) != 0) &&
>> +        (mRTPageTable->Pages[StartPageIndex].StartPageOffset == 
>> StartOffset))
>> +    {
>> +      //
>> +      // Free this page
>> +      //
>> +      mRTPageTable->Pages[StartPageIndex].PageFlag       &= 
>> ~RT_PAGE_USED;
>> +      mRTPageTable->Pages[StartPageIndex].PageFlag       |= 
>> RT_PAGE_FREE;
>> +      mRTPageTable->Pages[StartPageIndex].StartPageOffset = 0;
>> +
>> +      StartPageIndex++;
>> +    } else {
>> +      break;
>> +    }
>> +  }
>> +
>> +  return;
>> +}
>> +
>> +/**
>> +  Notification function of EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE.
>> +
>> +  This is a notification function registered on 
>> EVT_SIGNAL_VIRTUAL_ADDRESS_CHANGE
>> +  event. It converts a pointer to a new virtual address.
>> +
>> +  @param[in]  Event      The event whose notification function is 
>> being invoked.
>> +  @param[in]  Context    The pointer to the notification function's 
>> context.
>> +
>> +**/
>> +VOID
>> +EFIAPI
>> +RuntimeCryptLibAddressChangeEvent (
>> +  IN  EFI_EVENT  Event,
>> +  IN  VOID       *Context
>> +  )
>> +{
>> +  //
>> +  // Converts a pointer for runtime memory management to a new 
>> virtual address.
>> +  //
>> +  EfiConvertPointer (0x0, (VOID **)&mRTPageTable->DataAreaBase);
>> +  EfiConvertPointer (0x0, (VOID **)&mRTPageTable);
>> +}
>> +
>> +/**
>> +  Constructor routine for runtime crypt library instance.
>> +
>> +  The constructor function pre-allocates space for runtime 
>> cryptographic operation.
>> +
>> +  @param  ImageHandle   The firmware allocated handle for the EFI image.
>> +  @param  SystemTable   A pointer to the EFI System Table.
>> +
>> +  @retval EFI_SUCCESS          The construction succeeded.
>> +  @retval EFI_OUT_OF_RESOURCE  Failed to allocate memory.
>> +
>> +**/
>> +EFI_STATUS
>> +EFIAPI
>> +RuntimeCryptLibConstructor (
>> +  IN EFI_HANDLE        ImageHandle,
>> +  IN EFI_SYSTEM_TABLE  *SystemTable
>> +  )
>> +{
>> +  EFI_STATUS  Status;
>> +  VOID        *Buffer;
>> +
>> +  //
>> +  // Pre-allocates runtime space for possible cryptographic operations
>> +  //
>> +  Buffer = AllocateRuntimePool (MIN_REQUIRED_BLOCKS * 1024);
>> +  Status = InitializeScratchMemory (Buffer, MIN_REQUIRED_BLOCKS * 1024);
>> +  if (EFI_ERROR (Status)) {
>> +    return Status;
>> +  }
>> +
>> +  //
>> +  // Create address change event
>> +  //
>> +  Status = gBS->CreateEventEx (
>> +                  EVT_NOTIFY_SIGNAL,
>> +                  TPL_NOTIFY,
>> +                  RuntimeCryptLibAddressChangeEvent,
>> +                  NULL,
>> +                  &gEfiEventVirtualAddressChangeGuid,
>> +                  &mVirtualAddressChangeEvent
>> +                  );
>> +  ASSERT_EFI_ERROR (Status);
>> +
>> +  return Status;
>> +}
>> +
>> +//
>> +// -- Memory-Allocation Routines Wrapper for UEFI-MbedTLS Library --
>> +//
>> +
>> +/** Allocates memory blocks. **/
>> +VOID *
>> +malloc (
>> +  size_t  size
>> +  )
>> +{
>> +  return RuntimeAllocateMem ((UINTN)size);
>> +}
>> +
>> +/** Reallocate memory blocks. **/
>> +VOID *
>> +realloc (
>> +  VOID    *ptr,
>> +  size_t  size
>> +  )
>> +{
>> +  VOID   *NewPtr;
>> +  UINTN  StartOffset;
>> +  UINTN  StartPageIndex;
>> +  UINTN  PageCount;
>> +
>> +  if (ptr == NULL) {
>> +    return malloc (size);
>> +  }
>> +
>> +  //
>> +  // Get Original Size of ptr
>> +  //
>> +  StartOffset    = (UINTN)ptr - (UINTN)mRTPageTable->DataAreaBase;
>> +  StartPageIndex = RT_SIZE_TO_PAGES 
>> (mRTPageTable->Pages[RT_SIZE_TO_PAGES (StartOffset)].StartPageOffset);
>> +  PageCount      = 0;
>> +  while (StartPageIndex < mRTPageTable->PageCount) {
>> +    if (((mRTPageTable->Pages[StartPageIndex].PageFlag & 
>> RT_PAGE_USED) != 0) &&
>> +        (mRTPageTable->Pages[StartPageIndex].StartPageOffset == 
>> StartOffset))
>> +    {
>> +      StartPageIndex++;
>> +      PageCount++;
>> +    } else {
>> +      break;
>> +    }
>> +  }
>> +
>> +  if (size <= RT_PAGES_TO_SIZE (PageCount)) {
>> +    //
>> +    // Return the original pointer, if Caller try to reduce region size;
>> +    //
>> +    return ptr;
>> +  }
>> +
>> +  NewPtr = RuntimeAllocateMem ((UINTN)size);
>> +  if (NewPtr == NULL) {
>> +    return NULL;
>> +  }
>> +
>> +  CopyMem (NewPtr, ptr, RT_PAGES_TO_SIZE (PageCount));
>> +
>> +  RuntimeFreeMem (ptr);
>> +
>> +  return NewPtr;
>> +}
>> +
>> +/** Deallocates or frees a memory block. **/
>> +VOID
>> +free (
>> +  VOID  *ptr
>> +  )
>> +{
>> +  //
>> +  // In Standard C, free() handles a null pointer argument 
>> transparently. This
>> +  // is not true of RuntimeFreeMem() below, so protect it.
>> +  //
>> +  if (ptr != NULL) {
>> +    RuntimeFreeMem (ptr);
>> +  }
>> +}
>> diff --git 
>> a/CryptoPkg/Library/BaseCryptLibMbedTls/SysCall/TimerWrapper.c 
>> b/CryptoPkg/Library/BaseCryptLibMbedTls/SysCall/TimerWrapper.c
>> new file mode 100644
>> index 0000000000..b7cd4d3181
>> --- /dev/null
>> +++ b/CryptoPkg/Library/BaseCryptLibMbedTls/SysCall/TimerWrapper.c
>> @@ -0,0 +1,198 @@
>> +/** @file
>> +  C Run-Time Libraries (CRT) Time Management Routines Wrapper 
>> Implementation
>> +  for MbedTLS-based Cryptographic Library (used in DXE & RUNTIME).
>> +
>> +Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
>> +SPDX-License-Identifier: BSD-2-Clause-Patent
>> +
>> +**/
>> +
>> +#include <Uefi.h>
>> +#include <Library/UefiRuntimeServicesTableLib.h>
>> +#include <Library/BaseMemoryLib.h>
>> +#include <Library/MemoryAllocationLib.h>
>> +
>> +typedef int time_t;
>> +
>> +//
>> +// Structures Definitions
>> +//
>> +struct tm {
>> +  int     tm_sec;    /* seconds after the minute [0-60] */
>> +  int     tm_min;    /* minutes after the hour [0-59] */
>> +  int     tm_hour;   /* hours since midnight [0-23] */
>> +  int     tm_mday;   /* day of the month [1-31] */
>> +  int     tm_mon;    /* months since January [0-11] */
>> +  int     tm_year;   /* years since 1900 */
>> +  int     tm_wday;   /* days since Sunday [0-6] */
>> +  int     tm_yday;   /* days since January 1 [0-365] */
>> +  int     tm_isdst;  /* Daylight Savings Time flag */
>> +  long    tm_gmtoff; /* offset from CUT in seconds */
>> +  char    *tm_zone;  /* timezone abbreviation */
>> +};
>> +
>> +//
>> +// -- Time Management Routines --
>> +//
>> +
>> +#define IsLeap(y)  (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 
>> 400) == 0))
>> +#define SECSPERMIN   (60)
>> +#define SECSPERHOUR  (60 * 60)
>> +#define SECSPERDAY   (24 * SECSPERHOUR)
>> +
>> +//
>> +//  The arrays give the cumulative number of days up to the first of the
>> +//  month number used as the index (1 -> 12) for regular and leap years.
>> +//  The value at index 13 is for the whole year.
>> +//
>> +UINTN  CumulativeDays[2][14] = {
>> +  {
>> +    0,
>> +    0,
>> +    31,
>> +    31 + 28,
>> +    31 + 28 + 31,
>> +    31 + 28 + 31 + 30,
>> +    31 + 28 + 31 + 30 + 31,
>> +    31 + 28 + 31 + 30 + 31 + 30,
>> +    31 + 28 + 31 + 30 + 31 + 30 + 31,
>> +    31 + 28 + 31 + 30 + 31 + 30 + 31 + 31,
>> +    31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30,
>> +    31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31,
>> +    31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30,
>> +    31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31
>> +  },
>> +  {
>> +    0,
>> +    0,
>> +    31,
>> +    31 + 29,
>> +    31 + 29 + 31,
>> +    31 + 29 + 31 + 30,
>> +    31 + 29 + 31 + 30 + 31,
>> +    31 + 29 + 31 + 30 + 31 + 30,
>> +    31 + 29 + 31 + 30 + 31 + 30 + 31,
>> +    31 + 29 + 31 + 30 + 31 + 30 + 31 + 31,
>> +    31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30,
>> +    31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31,
>> +    31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30,
>> +    31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + 31
>> +  }
>> +};
>> +
>> +/** Get the system time as seconds elapsed since midnight, January 1, 
>> 1970. **/
>> +time_t
>> +time (
>> +  time_t  *timer
>> +  )
>> +{
>> +  EFI_STATUS  Status;
>> +  EFI_TIME    Time;
>> +  time_t      CalTime;
>> +  UINTN       Year;
>> +
>> +  //
>> +  // Get the current time and date information
>> +  //
>> +  Status = gRT->GetTime (&Time, NULL);
>> +  if (EFI_ERROR (Status) || (Time.Year < 1970)) {
>> +    return 0;
>> +  }
>> +
>> +  //
>> +  // Years Handling
>> +  // UTime should now be set to 00:00:00 on Jan 1 of the current year.
>> +  //
>> +  for (Year = 1970, CalTime = 0; Year != Time.Year; Year++) {
>> +    CalTime = CalTime + (time_t)(CumulativeDays[IsLeap (Year)][13] * 
>> SECSPERDAY);
>> +  }
>> +
>> +  //
>> +  // Add in number of seconds for current Month, Day, Hour, Minute, 
>> Seconds, and TimeZone adjustment
>> +  //
>> +  CalTime = CalTime +
>> +            (time_t)((Time.TimeZone != EFI_UNSPECIFIED_TIMEZONE) ? 
>> (Time.TimeZone * 60) : 0) +
>> +            (time_t)(CumulativeDays[IsLeap (Time.Year)][Time.Month] * 
>> SECSPERDAY) +
>> +            (time_t)(((Time.Day > 0) ? Time.Day - 1 : 0) * SECSPERDAY) +
>> +            (time_t)(Time.Hour * SECSPERHOUR) +
>> +            (time_t)(Time.Minute * 60) +
>> +            (time_t)Time.Second;
>> +
>> +  if (timer != NULL) {
>> +    *timer = CalTime;
>> +  }
>> +
>> +  return CalTime;
>> +}
>> +
>> +/** Convert a time value from type time_t to struct tm. **/
>> +struct tm *
>> +gmtime (
>> +  const time_t  *timer
>> +  )
>> +{
>> +  struct tm  *GmTime;
>> +  UINT16     DayNo;
>> +  UINT16     DayRemainder;
>> +  time_t     Year;
>> +  time_t     YearNo;
>> +  UINT16     TotalDays;
>> +  UINT16     MonthNo;
>> +
>> +  if (timer == NULL) {
>> +    return NULL;
>> +  }
>> +
>> +  GmTime = AllocateZeroPool (sizeof (struct tm));
>> +  if (GmTime == NULL) {
>> +    return NULL;
>> +  }
>> +
>> +  ZeroMem ((VOID *)GmTime, (UINTN)sizeof (struct tm));
>> +
>> +  DayNo        = (UINT16)(*timer / SECSPERDAY);
>> +  DayRemainder = (UINT16)(*timer % SECSPERDAY);
>> +
>> +  GmTime->tm_sec  = (int)(DayRemainder % SECSPERMIN);
>> +  GmTime->tm_min  = (int)((DayRemainder % SECSPERHOUR) / SECSPERMIN);
>> +  GmTime->tm_hour = (int)(DayRemainder / SECSPERHOUR);
>> +  GmTime->tm_wday = (int)((DayNo + 4) % 7);
>> +
>> +  for (Year = 1970, YearNo = 0; DayNo > 0; Year++) {
>> +    TotalDays = (UINT16)(IsLeap (Year) ? 366 : 365);
>> +    if (DayNo >= TotalDays) {
>> +      DayNo = (UINT16)(DayNo - TotalDays);
>> +      YearNo++;
>> +    } else {
>> +      break;
>> +    }
>> +  }
>> +
>> +  GmTime->tm_year = (int)(YearNo + (1970 - 1900));
>> +  GmTime->tm_yday = (int)DayNo;
>> +
>> +  for (MonthNo = 12; MonthNo > 1; MonthNo--) {
>> +    if (DayNo >= CumulativeDays[IsLeap (Year)][MonthNo]) {
>> +      DayNo = (UINT16)(DayNo - (UINT16)(CumulativeDays[IsLeap 
>> (Year)][MonthNo]));
>> +      break;
>> +    }
>> +  }
>> +
>> +  GmTime->tm_mon  = (int)MonthNo - 1;
>> +  GmTime->tm_mday = (int)DayNo + 1;
>> +
>> +  GmTime->tm_isdst  = 0;
>> +  GmTime->tm_gmtoff = 0;
>> +  GmTime->tm_zone   = NULL;
>> +
>> +  return GmTime;
>> +}
>> +
>> +/**_time64 function. **/
>> +time_t
>> +_time64 (
>> +  time_t  *t
>> +  )
>> +{
>> +  return time (t);
>> +}
>> diff --git 
>> a/CryptoPkg/Library/BaseCryptLibMbedTls/TestBaseCryptLib.inf 
>> b/CryptoPkg/Library/BaseCryptLibMbedTls/TestBaseCryptLib.inf
>> new file mode 100644
>> index 0000000000..def990b996
>> --- /dev/null
>> +++ b/CryptoPkg/Library/BaseCryptLibMbedTls/TestBaseCryptLib.inf
>> @@ -0,0 +1,76 @@
>> +## @file
>> +#  Cryptographic Library Instance for DXE_DRIVER.
>> +#
>> +#  Caution: This module requires additional review when modified.
>> +#  This library will have external input - signature.
>> +#  This external input must be validated carefully to avoid security 
>> issues such as
>> +#  buffer overflow or integer overflow.
>> +#
>> +#  Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
>> +#  SPDX-License-Identifier: BSD-2-Clause-Patent
>> +#
>> +##
>> +
>> +[Defines]
>> +  INF_VERSION                    = 0x00010005
>> +  BASE_NAME                      = BaseCryptLib
>> +  FILE_GUID                      = 9DD60CFE-9D05-41E2-8B9E-958E2A4C1913
>> +  MODULE_TYPE                    = DXE_DRIVER
>> +  VERSION_STRING                 = 1.0
>> +  LIBRARY_CLASS                  = BaseCryptLib|DXE_DRIVER DXE_CORE 
>> UEFI_APPLICATION UEFI_DRIVER
>> +
>> +#
>> +# The following information is for reference only and not required by 
>> the build tools.
>> +#
>> +#  VALID_ARCHITECTURES           = IA32 X64 ARM AARCH64
>> +#
>> +
>> +[Sources]
>> +  InternalCryptLib.h
>> +  Cipher/CryptAeadAesGcmNull.c
>> +  Cipher/CryptAes.c
>> +  Hash/CryptSha256.c
>> +  Hash/CryptSha512.c
>> +  Hash/CryptSm3Null.c
>> +  Hash/CryptMd5.c
>> +  Hash/CryptSha1.c
>> +  Hmac/CryptHmac.c
>> +  Kdf/CryptHkdf.c
>> +  Pk/CryptRsaBasic.c
>> +  Pk/CryptRsaExtNull.c
>> +  Pk/CryptRsaPss.c
>> +  Pk/CryptRsaPssSignNull.c
>> +  Bn/CryptBnNull.c
>> +  Pem/CryptPemNull.c
>> +  Pk/CryptDhNull.c
>> +  Pk/CryptEcNull.c
>> +  Pk/CryptPkcs1OaepNull.c
>> +  Pk/CryptPkcs5Pbkdf2Null.c
>> +  Pk/CryptPkcs7SignNull.c
>> +  Pk/CryptPkcs7VerifyNull.c
>> +  Pk/CryptPkcs7VerifyEkuNull.c
>> +  Pk/CryptX509Null.c
>> +  Pk/CryptAuthenticodeNull.c
>> +  Pk/CryptTsNull.c
>> +  Rand/CryptRandNull.c
>> +  SysCall/CrtWrapper.c
>> +
>> +[Packages]
>> +  MdePkg/MdePkg.dec
>> +  CryptoPkg/CryptoPkg.dec
>> +
>> +[LibraryClasses]
>> +  BaseLib
>> +  BaseMemoryLib
>> +  MemoryAllocationLib
>> +  UefiRuntimeServicesTableLib
>> +  DebugLib
>> +  MbedTlsLib
>> +  PrintLib
>> +  RngLib
>> +
>> +#
>> +# Remove these [BuildOptions] after this library is cleaned up
>> +#
>> +[BuildOptions]
>> +  MSFT:*_*_*_CC_FLAGS = /GL-
>> diff --git a/CryptoPkg/Library/Include/stdint.h 
>> b/CryptoPkg/Library/Include/stdint.h
>> new file mode 100644
>> index 0000000000..17b8c767d7
>> --- /dev/null
>> +++ b/CryptoPkg/Library/Include/stdint.h
>> @@ -0,0 +1,19 @@
>> +/** @file
>> +  Include file to support building the third-party cryptographic 
>> library.
>> +
>> +Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
>> +SPDX-License-Identifier: BSD-2-Clause-Patent
>> +
>> +**/
>> +
>> +#include <CrtLibSupport.h>
>> +
>> +typedef INT8    int8_t;
>> +typedef UINT8   uint8_t;
>> +typedef INT16   int16_t;
>> +typedef UINT16  uint16_t;
>> +typedef INT32   int32_t;
>> +typedef UINT32  uint32_t;
>> +typedef INT64   int64_t;
>> +typedef UINT64  uint64_t;
>> +typedef UINTN   uintptr_t;
>> diff --git a/CryptoPkg/Library/Include/stubs-32.h 
>> b/CryptoPkg/Library/Include/stubs-32.h
>> new file mode 100644
>> index 0000000000..786d57e8d5
>> --- /dev/null
>> +++ b/CryptoPkg/Library/Include/stubs-32.h
>> @@ -0,0 +1,9 @@
>> +/** @file
>> +  Include file to support building the third-party cryptographic 
>> library.
>> +
>> +Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
>> +SPDX-License-Identifier: BSD-2-Clause-Patent
>> +
>> +**/
>> +
>> +#include <CrtLibSupport.h>
>> diff --git a/CryptoPkg/Library/MbedTlsLib/EcSm2Null.c 
>> b/CryptoPkg/Library/MbedTlsLib/EcSm2Null.c
>> index c7d5c393a1..1c9cd72b70 100644
>> --- a/CryptoPkg/Library/MbedTlsLib/EcSm2Null.c
>> +++ b/CryptoPkg/Library/MbedTlsLib/EcSm2Null.c
>> @@ -12,7 +12,7 @@
>>   #include <mbedtls/ecdh.h>
>>   #include <mbedtls/ecdsa.h>
>>   #include <mbedtls/bignum.h>
>> -#include <library/bignum_core.h>
>> +#include <bignum_core.h>
>>   /*
>>    * Get the curve info for the internal identifier
> 

-- 
Alexey



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#112357): https://edk2.groups.io/g/devel/message/112357
Mute This Topic: https://groups.io/mt/101639981/7686176
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [rebecca@openfw.io]
-=-=-=-=-=-=-=-=-=-=-=-



  parent reply	other threads:[~2023-12-12  4:03 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-28 15:34 [edk2-devel] [PATCH v3 00/11] Add HMAC/HKDF/RSA/HASH/AES features based on Mbedtls Wenxing Hou
2023-09-28 15:34 ` [edk2-devel] [PATCH v3 01/11] CryptoPkg: Add mbedtls submodule for EDKII Wenxing Hou
2023-10-11 18:21   ` Michael D Kinney
2023-09-28 15:34 ` [edk2-devel] [PATCH v3 02/11] CryptoPkg: Add mbedtls_config and MbedTlsLib.inf Wenxing Hou
2023-09-28 15:34 ` [edk2-devel] [PATCH v3 03/11] CryptoPkg: Add HMAC functions based on Mbedtls Wenxing Hou
2023-09-28 15:34 ` [edk2-devel] [PATCH v3 04/11] CryptoPkg: Add HKDF " Wenxing Hou
2023-09-28 15:34 ` [edk2-devel] [PATCH v3 05/11] CryptoPkg: Add RSA " Wenxing Hou
2023-09-28 15:34 ` [edk2-devel] [PATCH v3 06/11] CryptoPkg: Add all .inf files for BaseCryptLibMbedTls Wenxing Hou
2023-12-12  3:52   ` Alexey Kardashevskiy via groups.io
     [not found]   ` <179FF92851F08A90.471@groups.io>
2023-12-12  4:03     ` Alexey Kardashevskiy via groups.io [this message]
2023-09-28 15:34 ` [edk2-devel] [PATCH v3 07/11] CryptoPkg: Add Null functions for building pass Wenxing Hou
2023-09-28 15:34 ` [edk2-devel] [PATCH v3 08/11] CryptoPkg: Add MD5/SHA1/SHA2 functions based on Mbedtls Wenxing Hou
2023-09-28 15:34 ` [edk2-devel] [PATCH v3 09/11] CryptoPkg: Add Mbedtls submodule in CI Wenxing Hou
2023-10-11 18:23   ` Michael D Kinney
2023-09-28 15:34 ` [edk2-devel] [PATCH v3 10/11] CryptoPkg: Add basic Readme for BaseCryptLibMbedTls Wenxing Hou
2023-09-28 15:34 ` [edk2-devel] [PATCH v3 11/11] CryptoPkg: Add CryptAes functions based on Mbedtls Add CryptAes APIS Wenxing Hou
2023-10-07 12:38 ` [edk2-devel] [PATCH v3 00/11] Add HMAC/HKDF/RSA/HASH/AES features based on Mbedtls Li, Yi
     [not found] ` <178919F6750E1B48.1188@groups.io>
2023-10-07 13:39   ` [edk2-devel] [PATCH v3 09/11] CryptoPkg: Add Mbedtls submodule in CI Wenxing Hou
2023-10-10  1:49     ` Wenxing Hou
2023-10-11  8:04       ` Li, Yi
     [not found] ` <178BD38EB7306FC4.5378@groups.io>
2023-10-12  5:50   ` [edk2-devel] [PATCH v3 00/11] Add HMAC/HKDF/RSA/HASH/AES features based on Mbedtls Li, Yi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-list from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9982905a-11da-4c82-9923-2b9507f75059@amd.com \
    --to=devel@edk2.groups.io \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox