Jiewen: I see this patch removes some old definitions. Is there any impact on this change?
Thanks Liming > -----Original Message----- > From: devel@edk2.groups.io <devel@edk2.groups.io> On Behalf Of Yao, Jiewen > Sent: Wednesday, December 18, 2019 3:17 PM > To: devel@edk2.groups.io > Cc: Kinney, Michael D <michael.d.kin...@intel.com>; Gao, Liming > <liming....@intel.com> > Subject: [edk2-devel] [PATCH] MdePkg/Tcg: Add new definition in TCG PFP spec. > > REF: https://bugzilla.tianocore.org/show_bug.cgi?id=2428 > > The latest TCG PFP specification (TCG PC Client Platform Firmware Profile > Specification, Revision 1.05) added new data structure. For example, > the SPDM device measurement. This patch adds the new content. > > Cc: Michael D Kinney <michael.d.kin...@intel.com> > Cc: Liming Gao <liming....@intel.com> > Signed-off-by: Jiewen Yao <jiewen....@intel.com> > --- > .../IndustryStandard/UefiTcgPlatform.h | 182 +++++++++++++++++- > 1 file changed, 173 insertions(+), 9 deletions(-) > > diff --git a/MdePkg/Include/IndustryStandard/UefiTcgPlatform.h > b/MdePkg/Include/IndustryStandard/UefiTcgPlatform.h > index 3f1d444aed..84023c4347 100644 > --- a/MdePkg/Include/IndustryStandard/UefiTcgPlatform.h > +++ b/MdePkg/Include/IndustryStandard/UefiTcgPlatform.h > @@ -1,7 +1,8 @@ > /** @file > - TCG EFI Platform Definition in TCG_EFI_Platform_1_20_Final > + TCG EFI Platform Definition in TCG_EFI_Platform_1_20_Final and > + TCG PC Client Platform Firmware Profile Specification, Revision 1.05 > > - Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR> > + Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR> > SPDX-License-Identifier: BSD-2-Clause-Patent > > **/ > @@ -21,6 +22,7 @@ > #define EV_NO_ACTION ((TCG_EVENTTYPE) 0x00000003) > #define EV_SEPARATOR ((TCG_EVENTTYPE) 0x00000004) > #define EV_ACTION ((TCG_EVENTTYPE) 0x00000005) > +#define EV_EVENT_TAG ((TCG_EVENTTYPE) 0x00000006) > #define EV_S_CRTM_CONTENTS ((TCG_EVENTTYPE) 0x00000007) > #define EV_S_CRTM_VERSION ((TCG_EVENTTYPE) 0x00000008) > #define EV_CPU_MICROCODE ((TCG_EVENTTYPE) 0x00000009) > @@ -45,8 +47,12 @@ > #define EV_EFI_ACTION (EV_EFI_EVENT_BASE + 7) > #define EV_EFI_PLATFORM_FIRMWARE_BLOB (EV_EFI_EVENT_BASE + 8) > #define EV_EFI_HANDOFF_TABLES (EV_EFI_EVENT_BASE + 9) > +#define EV_EFI_PLATFORM_FIRMWARE_BLOB2 (EV_EFI_EVENT_BASE + 0xA) > +#define EV_EFI_HANDOFF_TABLES2 (EV_EFI_EVENT_BASE + 0xB) > #define EV_EFI_HCRTM_EVENT (EV_EFI_EVENT_BASE + 0x10) > #define EV_EFI_VARIABLE_AUTHORITY (EV_EFI_EVENT_BASE + 0xE0) > +#define EV_EFI_SPDM_FIRMWARE_BLOB (EV_EFI_EVENT_BASE + 0xE1) > +#define EV_EFI_SPDM_FIRMWARE_CONFIG (EV_EFI_EVENT_BASE + 0xE2) > > #define EFI_CALLING_EFI_APPLICATION \ > "Calling EFI Application from Boot Option" > @@ -78,6 +84,9 @@ > #define EV_POSTCODE_INFO_OPROM "Embedded Option ROM" > #define OPROM_LEN (sizeof(EV_POSTCODE_INFO_OPROM) - 1) > > +#define EV_POSTCODE_INFO_EMBEDDED_UEFI_DRIVER "Embedded UEFI Driver" > +#define EMBEDDED_UEFI_DRIVER_LEN > (sizeof(EV_POSTCODE_INFO_EMBEDDED_UEFI_DRIVER) - 1) > + > #define FIRMWARE_DEBUGGER_EVENT_STRING "UEFI Debug Mode" > #define FIRMWARE_DEBUGGER_EVENT_STRING_LEN > (sizeof(FIRMWARE_DEBUGGER_EVENT_STRING) - 1) > > @@ -123,6 +132,30 @@ typedef struct tdEFI_PLATFORM_FIRMWARE_BLOB { > UINT64 BlobLength; > } EFI_PLATFORM_FIRMWARE_BLOB; > > +/// > +/// UEFI_PLATFORM_FIRMWARE_BLOB > +/// > +/// This structure is used in EV_EFI_PLATFORM_FIRMWARE_BLOB > +/// event to facilitate the measurement of firmware volume. > +/// > +typedef struct tdUEFI_PLATFORM_FIRMWARE_BLOB { > + EFI_PHYSICAL_ADDRESS BlobBase; > + UINT64 BlobLength; > +} UEFI_PLATFORM_FIRMWARE_BLOB; > + > +/// > +/// UEFI_PLATFORM_FIRMWARE_BLOB2 > +/// > +/// This structure is used in EV_EFI_PLATFORM_FIRMWARE_BLOB2 > +/// event to facilitate the measurement of firmware volume. > +/// > +typedef struct tdUEFI_PLATFORM_FIRMWARE_BLOB2 { > + UINT8 BlobDescriptionSize; > +//UINT8 BlobDescription[BlobDescriptionSize]; > +//EFI_PHYSICAL_ADDRESS BlobBase; > +//UINT64 BlobLength; > +} UEFI_PLATFORM_FIRMWARE_BLOB2; > + > /// > /// EFI_IMAGE_LOAD_EVENT > /// > @@ -137,6 +170,20 @@ typedef struct tdEFI_IMAGE_LOAD_EVENT { > EFI_DEVICE_PATH_PROTOCOL DevicePath[1]; > } EFI_IMAGE_LOAD_EVENT; > > +/// > +/// UEFI_IMAGE_LOAD_EVENT > +/// > +/// This structure is used in EV_EFI_BOOT_SERVICES_APPLICATION, > +/// EV_EFI_BOOT_SERVICES_DRIVER and EV_EFI_RUNTIME_SERVICES_DRIVER > +/// > +typedef struct tdUEFI_IMAGE_LOAD_EVENT { > + EFI_PHYSICAL_ADDRESS ImageLocationInMemory; > + UINT64 ImageLengthInMemory; > + UINT64 ImageLinkTimeAddress; > + UINT64 LengthOfDevicePath; > + EFI_DEVICE_PATH_PROTOCOL DevicePath[1]; > +} UEFI_IMAGE_LOAD_EVENT; > + > /// > /// EFI_HANDOFF_TABLE_POINTERS > /// > @@ -148,6 +195,30 @@ typedef struct tdEFI_HANDOFF_TABLE_POINTERS { > EFI_CONFIGURATION_TABLE TableEntry[1]; > } EFI_HANDOFF_TABLE_POINTERS; > > +/// > +/// UEFI_HANDOFF_TABLE_POINTERS > +/// > +/// This structure is used in EV_EFI_HANDOFF_TABLES event to facilitate > +/// the measurement of given configuration tables. > +/// > +typedef struct tdUEFI_HANDOFF_TABLE_POINTERS { > + UINT64 NumberOfTables; > + EFI_CONFIGURATION_TABLE TableEntry[1]; > +} UEFI_HANDOFF_TABLE_POINTERS; > + > +/// > +/// UEFI_HANDOFF_TABLE_POINTERS2 > +/// > +/// This structure is used in EV_EFI_HANDOFF_TABLES2 event to facilitate > +/// the measurement of given configuration tables. > +/// > +typedef struct tdUEFI_HANDOFF_TABLE_POINTERS2 { > + UINT8 TableDescriptionSize; > +//UINT8 TableDescription[TableDescriptionSize]; > +//UINT64 NumberOfTables; > +//EFI_CONFIGURATION_TABLE TableEntry[1]; > +} UEFI_HANDOFF_TABLE_POINTERS2; > + > /// > /// EFI_VARIABLE_DATA > /// > @@ -197,6 +268,66 @@ typedef struct tdEFI_GPT_DATA { > EFI_PARTITION_ENTRY Partitions[1]; > } EFI_GPT_DATA; > > +typedef struct tdUEFI_GPT_DATA { > + EFI_PARTITION_TABLE_HEADER EfiPartitionHeader; > + UINT64 NumberOfPartitions; > + EFI_PARTITION_ENTRY Partitions[1]; > +} UEFI_GPT_DATA; > + > +#define TCG_DEVICE_SECURITY_EVENT_DATA_SIGNATURE "SPDM Device Sec" > +#define TCG_DEVICE_SECURITY_EVENT_DATA_VERSION 0 > + > +#define TCG_DEVICE_SECURITY_EVENT_DATA_DEVICE_TYPE_NULL 0 > +#define TCG_DEVICE_SECURITY_EVENT_DATA_DEVICE_TYPE_PCI 1 > +#define TCG_DEVICE_SECURITY_EVENT_DATA_DEVICE_TYPE_USB 2 > + > +/// > +/// TCG_DEVICE_SECURITY_EVENT_DATA_HEADER > +/// This is the header of TCG_DEVICE_SECURITY_EVENT_DATA, which is > +/// used in EV_EFI_SPDM_FIRMWARE_BLOB and EV_EFI_SPDM_FIRMWARE_CONFIG. > +/// > +typedef struct { > + UINT8 Signature[16]; > + UINT16 Version; > + UINT16 Length; > + UINT32 SpdmHashAlgo; > + UINT32 DeviceType; > +//SPDM_MEASUREMENT_BLOCK SpdmMeasurementBlock; > +} TCG_DEVICE_SECURITY_EVENT_DATA_HEADER; > + > +#define TCG_DEVICE_SECURITY_EVENT_DATA_PCI_CONTEXT_VERSION 0 > + > +/// > +/// TCG_DEVICE_SECURITY_EVENT_DATA_PCI_CONTEXT > +/// This is the PCI context data of TCG_DEVICE_SECURITY_EVENT_DATA, which is > +/// used in EV_EFI_SPDM_FIRMWARE_BLOB and EV_EFI_SPDM_FIRMWARE_CONFIG. > +/// > +typedef struct { > + UINT16 Version; > + UINT16 Length; > + UINT16 VendorId; > + UINT16 DeviceId; > + UINT8 RevisionID; > + UINT8 ClassCode[3]; > + UINT16 SubsystemVendorID; > + UINT16 SubsystemID; > +} TCG_DEVICE_SECURITY_EVENT_DATA_PCI_CONTEXT; > + > +#define TCG_DEVICE_SECURITY_EVENT_DATA_USB_CONTEXT_VERSION 0 > + > +/// > +/// TCG_DEVICE_SECURITY_EVENT_DATA_USB_CONTEXT > +/// This is the USB context data of TCG_DEVICE_SECURITY_EVENT_DATA, which is > +/// used in EV_EFI_SPDM_FIRMWARE_BLOB and EV_EFI_SPDM_FIRMWARE_CONFIG. > +/// > +typedef struct { > + UINT16 Version; > + UINT16 Length; > +//UINT8 DeviceDescriptor[DescLen]; > +//UINT8 BodDescriptor[DescLen]; > +//UINT8 ConfigurationDescriptor[DescLen][NumOfConfiguration]; > +} TCG_DEVICE_SECURITY_EVENT_DATA_USB_CONTEXT; > + > // > // Crypto Agile Log Entry Format > // > @@ -243,6 +374,7 @@ typedef struct { > #define TCG_EfiSpecIDEventStruct_SPEC_VERSION_MAJOR_TPM2 2 > #define TCG_EfiSpecIDEventStruct_SPEC_VERSION_MINOR_TPM2 0 > #define TCG_EfiSpecIDEventStruct_SPEC_ERRATA_TPM2 0 > +#define TCG_EfiSpecIDEventStruct_SPEC_ERRATA_TPM2_REV_105 105 > > typedef struct { > UINT8 signature[16]; > @@ -299,20 +431,52 @@ typedef struct { > //UINT8 vendorInfo[vendorInfoSize]; > } TCG_EfiSpecIDEventStruct; > > +typedef struct tdTCG_PCClientTaggedEvent { > + UINT32 taggedEventID; > + UINT32 taggedEventDataSize; > +//UINT8 taggedEventData[taggedEventDataSize]; > +} TCG_PCClientTaggedEvent; > + > +#define TCG_Sp800_155_PlatformId_Event_SIGNATURE "SP800-155 Event" > +#define TCG_Sp800_155_PlatformId_Event2_SIGNATURE "SP800-155 Event2" > > +typedef struct tdTCG_Sp800_155_PlatformId_Event2 { > + UINT8 Signature[16]; > + // > + // Where Vendor ID is an integer defined > + // at http://www.iana.org/assignments/enterprisenumbers > + // > + UINT32 VendorId; > + // > + // 16-byte identifier of a given platform's static configuration of code > + // > + EFI_GUID ReferenceManifestGuid; > + // > + // Below structure is newly added in TCG_Sp800_155_PlatformId_Event2. > + // > +//UINT8 PlatformManufacturerStrSize; > +//UINT8 PlatformManufacturerStr[PlatformManufacturerStrSize]; > +//UINT8 PlatformModelSize; > +//UINT8 PlatformModel[PlatformModelSize]; > +//UINT8 PlatformVersionSize; > +//UINT8 PlatformVersion[PlatformVersionSize]; > +//UINT8 PlatformModelSize; > +//UINT8 PlatformModel[PlatformModelSize]; > +//UINT8 FirmwareManufacturerStrSize; > +//UINT8 FirmwareManufacturerStr[FirmwareManufacturerStrSize]; > +//UINT32 FirmwareManufacturerId; > +//UINT8 FirmwareVersion; > +//UINT8 FirmwareVersion[FirmwareVersionSize]]; > +} TCG_Sp800_155_PlatformId_Event2; > > #define TCG_EfiStartupLocalityEvent_SIGNATURE "StartupLocality" > > > // > -// PC Client PTP spec Table 8 Relationship between Locality and Locality > Attribute > +// The Locality Indicator which sent the TPM2_Startup command > // > -#define LOCALITY_0_INDICATOR 0x01 > -#define LOCALITY_1_INDICATOR 0x02 > -#define LOCALITY_2_INDICATOR 0x03 > -#define LOCALITY_3_INDICATOR 0x04 > -#define LOCALITY_4_INDICATOR 0x05 > - > +#define LOCALITY_0_INDICATOR 0x00 > +#define LOCALITY_3_INDICATOR 0x03 > > // > // Startup Locality Event > -- > 2.19.2.windows.1 > > > -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#52427): https://edk2.groups.io/g/devel/message/52427 Mute This Topic: https://groups.io/mt/68786842/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-