From d97f5304139bc55d3f72b830606bca5cd217512e Mon Sep 17 00:00:00 2001 From: Ceping Sun Date: Sun, 5 Jan 2025 20:33:59 -0500 Subject: [PATCH] UefiCpuPkg: Add NULL TdxMeasurementLib instance Add NULL instance of TdxMeasurementLib. Cc: Ray Ni Cc: Jiaxin Wu Cc: Jiewen Yao Cc: Gerd Hoffmann Signed-off-by: Min Xu Signed-off-by: Ceping Sun --- .../TdxMeasurementLibNull.c | 85 +++++++++++++++++++ .../TdxMeasurementLibNull.inf | 32 +++++++ UefiCpuPkg/UefiCpuPkg.dsc | 2 + 3 files changed, 119 insertions(+) create mode 100644 UefiCpuPkg/Library/TdxMeasurementLibNull/TdxMeasurementLibNull.c create mode 100644 UefiCpuPkg/Library/TdxMeasurementLibNull/TdxMeasurementLibNull.inf diff --git a/UefiCpuPkg/Library/TdxMeasurementLibNull/TdxMeasurementLibNull.c b/UefiCpuPkg/Library/TdxMeasurementLibNull/TdxMeasurementLibNull.c new file mode 100644 index 0000000000..1a2955700f --- /dev/null +++ b/UefiCpuPkg/Library/TdxMeasurementLibNull/TdxMeasurementLibNull.c @@ -0,0 +1,85 @@ +/** @file + NULL instance of TdxMeasurementLib + Copyright (c) 2025, Intel Corporation. All rights reserved.
+ SPDX-License-Identifier: BSD-2-Clause-Patent +**/ + +#include +#include +#include + +/** + According to UEFI Spec 2.10 Section 38.4.1: + The following table shows the TPM PCR index mapping and CC event log measurement + register index interpretation for Intel TDX, where MRTD means Trust Domain Measurement + Register and RTMR means Runtime Measurement Register + // TPM PCR Index | CC Measurement Register Index | TDX-measurement register + // ------------------------------------------------------------------------ + // 0 | 0 | MRTD + // 1, 7 | 1 | RTMR[0] + // 2~6 | 2 | RTMR[1] + // 8~15 | 3 | RTMR[2] + @param[in] PCRIndex Index of the TPM PCR + @retval UINT32 Index of the CC Event Log Measurement Register Index + @retval CC_MR_INDEX_INVALID Invalid MR Index +**/ +UINT32 +EFIAPI +TdxMeasurementMapPcrToMrIndex ( + IN UINT32 PCRIndex + ) +{ + return CC_MR_INDEX_INVALID; +} + +/** + * Calculate the sha384 of input Data and extend it to RTMR register. + * + * @param RtmrIndex Index of the RTMR register + * @param DataToHash Data to be hashed + * @param DataToHashLen Length of the data + * @param Digest Hash value of the input data + * @param DigestLen Length of the hash value + * + * @retval EFI_SUCCESS Successfully hash and extend to RTMR + * @retval Others Other errors as indicated + */ +EFI_STATUS +EFIAPI +TdxMeasurementHashAndExtendToRtmr ( + IN UINT32 RtmrIndex, + IN VOID *DataToHash, + IN UINTN DataToHashLen, + OUT UINT8 *Digest, + IN UINTN DigestLen + ) +{ + return EFI_UNSUPPORTED; +} + +/** + * Build GuidHob for Tdx CC measurement event. + * + * @param RtmrIndex RTMR index + * @param EventType Event type + * @param EventData Event data + * @param EventSize Size of event data + * @param HashValue Hash value + * @param HashSize Size of hash + * + * @retval EFI_SUCCESS Successfully build the GuidHobs + * @retval Others Other error as indicated + */ +EFI_STATUS +EFIAPI +TdxMeasurementBuildGuidHob ( + UINT32 RtmrIndex, + UINT32 EventType, + UINT8 *EventData, + UINT32 EventSize, + UINT8 *HashValue, + UINT32 HashSize + ) +{ + return EFI_UNSUPPORTED; +} diff --git a/UefiCpuPkg/Library/TdxMeasurementLibNull/TdxMeasurementLibNull.inf b/UefiCpuPkg/Library/TdxMeasurementLibNull/TdxMeasurementLibNull.inf new file mode 100644 index 0000000000..c42eebcca3 --- /dev/null +++ b/UefiCpuPkg/Library/TdxMeasurementLibNull/TdxMeasurementLibNull.inf @@ -0,0 +1,32 @@ +## @file +# TdxMeasurementLib NULL instance +# +# Copyright (c) 2025, Intel Corporation. All rights reserved.
+# +# SPDX-License-Identifier: BSD-2-Clause-Patent +# +## + +[Defines] + INF_VERSION = 0x00010005 + BASE_NAME = TdxMeasurementNullLib + FILE_GUID = 975d11ff-b11e-4cf4-b453-6d93a9ea8d7b + MODULE_TYPE = BASE + VERSION_STRING = 1.0 + LIBRARY_CLASS = TdxMeasurementLib + +# +# The following information is for reference only and not required by the build tools. +# +# VALID_ARCHITECTURES = X64 +# + +[Sources] + TdxMeasurementLibNull.c + +[Packages] + MdePkg/MdePkg.dec + UefiCpuPkg/UefiCpuPkg.dec + +[LibraryClasses] + BaseLib diff --git a/UefiCpuPkg/UefiCpuPkg.dsc b/UefiCpuPkg/UefiCpuPkg.dsc index 982e024b4e..ec2b6cc722 100644 --- a/UefiCpuPkg/UefiCpuPkg.dsc +++ b/UefiCpuPkg/UefiCpuPkg.dsc @@ -62,6 +62,7 @@ PeCoffExtraActionLib|MdePkg/Library/BasePeCoffExtraActionLibNull/BasePeCoffExtraActionLibNull.inf TpmMeasurementLib|MdeModulePkg/Library/TpmMeasurementLibNull/TpmMeasurementLibNull.inf CcExitLib|UefiCpuPkg/Library/CcExitLibNull/CcExitLibNull.inf + TdxMeasurementLib|UefiCpuPkg/Library/TdxMeasurementLibNull/TdxMeasurementLibNull.inf AmdSvsmLib|UefiCpuPkg/Library/AmdSvsmLibNull/AmdSvsmLibNull.inf MicrocodeLib|UefiCpuPkg/Library/MicrocodeLib/MicrocodeLib.inf SmmCpuRendezvousLib|UefiCpuPkg/Library/SmmCpuRendezvousLib/SmmCpuRendezvousLib.inf @@ -171,6 +172,7 @@ UefiCpuPkg/Library/SmmCpuFeaturesLib/StandaloneMmCpuFeaturesLib.inf UefiCpuPkg/Library/SmmCpuSyncLib/SmmCpuSyncLib.inf UefiCpuPkg/Library/CcExitLibNull/CcExitLibNull.inf + UefiCpuPkg/Library/TdxMeasurementLibNull/TdxMeasurementLibNull.inf UefiCpuPkg/Library/AmdSvsmLibNull/AmdSvsmLibNull.inf UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationPei.inf UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationSmm.inf