From: "Liming Gao" <liming.gao@intel.com>
To: "devel@edk2.groups.io" <devel@edk2.groups.io>,
"Yao, Jiewen" <jiewen.yao@intel.com>
Cc: "Kinney, Michael D" <michael.d.kinney@intel.com>
Subject: Re: [edk2-devel] [PATCH] MdePkg/Tcg: Add new definition in TCG PFP spec.
Date: Thu, 19 Dec 2019 14:27:50 +0000 [thread overview]
Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E5685DB@SHSMSX104.ccr.corp.intel.com> (raw)
In-Reply-To: <20191218071700.20588-1-jiewen.yao@intel.com>
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.kinney@intel.com>; Gao, Liming <liming.gao@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.kinney@intel.com>
> Cc: Liming Gao <liming.gao@intel.com>
> Signed-off-by: Jiewen Yao <jiewen.yao@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
>
>
>
next prev parent reply other threads:[~2019-12-19 14:27 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-18 7:17 [PATCH] MdePkg/Tcg: Add new definition in TCG PFP spec Yao, Jiewen
2019-12-19 14:27 ` Liming Gao [this message]
-- strict thread matches above, loose matches on Subject: below --
2019-12-19 14:54 [edk2-devel] " Yao, Jiewen
2019-12-20 3:02 ` Liming Gao
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=4A89E2EF3DFEDB4C8BFDE51014F606A14E5685DB@SHSMSX104.ccr.corp.intel.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