/** @file\r
- TCG EFI Platform Definition in TCG_EFI_Platform_1_20_Final\r
+ TCG EFI Platform Definition in TCG_EFI_Platform_1_20_Final and\r
+ TCG PC Client Platform Firmware Profile Specification, Revision 1.05\r
\r
- Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>\r
+ Copyright (c) 2006 - 2019, Intel Corporation. All rights reserved.<BR>\r
SPDX-License-Identifier: BSD-2-Clause-Patent\r
\r
**/\r
#define EV_NO_ACTION ((TCG_EVENTTYPE) 0x00000003)\r
#define EV_SEPARATOR ((TCG_EVENTTYPE) 0x00000004)\r
#define EV_ACTION ((TCG_EVENTTYPE) 0x00000005)\r
+#define EV_EVENT_TAG ((TCG_EVENTTYPE) 0x00000006)\r
#define EV_S_CRTM_CONTENTS ((TCG_EVENTTYPE) 0x00000007)\r
#define EV_S_CRTM_VERSION ((TCG_EVENTTYPE) 0x00000008)\r
#define EV_CPU_MICROCODE ((TCG_EVENTTYPE) 0x00000009)\r
#define EV_EFI_ACTION (EV_EFI_EVENT_BASE + 7)\r
#define EV_EFI_PLATFORM_FIRMWARE_BLOB (EV_EFI_EVENT_BASE + 8)\r
#define EV_EFI_HANDOFF_TABLES (EV_EFI_EVENT_BASE + 9)\r
+#define EV_EFI_PLATFORM_FIRMWARE_BLOB2 (EV_EFI_EVENT_BASE + 0xA)\r
+#define EV_EFI_HANDOFF_TABLES2 (EV_EFI_EVENT_BASE + 0xB)\r
#define EV_EFI_HCRTM_EVENT (EV_EFI_EVENT_BASE + 0x10)\r
#define EV_EFI_VARIABLE_AUTHORITY (EV_EFI_EVENT_BASE + 0xE0)\r
+#define EV_EFI_SPDM_FIRMWARE_BLOB (EV_EFI_EVENT_BASE + 0xE1)\r
+#define EV_EFI_SPDM_FIRMWARE_CONFIG (EV_EFI_EVENT_BASE + 0xE2)\r
\r
#define EFI_CALLING_EFI_APPLICATION \\r
"Calling EFI Application from Boot Option"\r
#define EV_POSTCODE_INFO_OPROM "Embedded Option ROM"\r
#define OPROM_LEN (sizeof(EV_POSTCODE_INFO_OPROM) - 1)\r
\r
+#define EV_POSTCODE_INFO_EMBEDDED_UEFI_DRIVER "Embedded UEFI Driver"\r
+#define EMBEDDED_UEFI_DRIVER_LEN (sizeof(EV_POSTCODE_INFO_EMBEDDED_UEFI_DRIVER) - 1)\r
+\r
#define FIRMWARE_DEBUGGER_EVENT_STRING "UEFI Debug Mode"\r
#define FIRMWARE_DEBUGGER_EVENT_STRING_LEN (sizeof(FIRMWARE_DEBUGGER_EVENT_STRING) - 1)\r
\r
UINT64 BlobLength;\r
} EFI_PLATFORM_FIRMWARE_BLOB;\r
\r
+///\r
+/// UEFI_PLATFORM_FIRMWARE_BLOB\r
+///\r
+/// This structure is used in EV_EFI_PLATFORM_FIRMWARE_BLOB\r
+/// event to facilitate the measurement of firmware volume.\r
+///\r
+typedef struct tdUEFI_PLATFORM_FIRMWARE_BLOB {\r
+ EFI_PHYSICAL_ADDRESS BlobBase;\r
+ UINT64 BlobLength;\r
+} UEFI_PLATFORM_FIRMWARE_BLOB;\r
+\r
+///\r
+/// UEFI_PLATFORM_FIRMWARE_BLOB2\r
+///\r
+/// This structure is used in EV_EFI_PLATFORM_FIRMWARE_BLOB2\r
+/// event to facilitate the measurement of firmware volume.\r
+///\r
+typedef struct tdUEFI_PLATFORM_FIRMWARE_BLOB2 {\r
+ UINT8 BlobDescriptionSize;\r
+//UINT8 BlobDescription[BlobDescriptionSize];\r
+//EFI_PHYSICAL_ADDRESS BlobBase;\r
+//UINT64 BlobLength;\r
+} UEFI_PLATFORM_FIRMWARE_BLOB2;\r
+\r
///\r
/// EFI_IMAGE_LOAD_EVENT\r
///\r
EFI_DEVICE_PATH_PROTOCOL DevicePath[1];\r
} EFI_IMAGE_LOAD_EVENT;\r
\r
+///\r
+/// UEFI_IMAGE_LOAD_EVENT\r
+///\r
+/// This structure is used in EV_EFI_BOOT_SERVICES_APPLICATION,\r
+/// EV_EFI_BOOT_SERVICES_DRIVER and EV_EFI_RUNTIME_SERVICES_DRIVER\r
+///\r
+typedef struct tdUEFI_IMAGE_LOAD_EVENT {\r
+ EFI_PHYSICAL_ADDRESS ImageLocationInMemory;\r
+ UINT64 ImageLengthInMemory;\r
+ UINT64 ImageLinkTimeAddress;\r
+ UINT64 LengthOfDevicePath;\r
+ EFI_DEVICE_PATH_PROTOCOL DevicePath[1];\r
+} UEFI_IMAGE_LOAD_EVENT;\r
+\r
///\r
/// EFI_HANDOFF_TABLE_POINTERS\r
///\r
EFI_CONFIGURATION_TABLE TableEntry[1];\r
} EFI_HANDOFF_TABLE_POINTERS;\r
\r
+///\r
+/// UEFI_HANDOFF_TABLE_POINTERS\r
+///\r
+/// This structure is used in EV_EFI_HANDOFF_TABLES event to facilitate\r
+/// the measurement of given configuration tables.\r
+///\r
+typedef struct tdUEFI_HANDOFF_TABLE_POINTERS {\r
+ UINT64 NumberOfTables;\r
+ EFI_CONFIGURATION_TABLE TableEntry[1];\r
+} UEFI_HANDOFF_TABLE_POINTERS;\r
+\r
+///\r
+/// UEFI_HANDOFF_TABLE_POINTERS2\r
+///\r
+/// This structure is used in EV_EFI_HANDOFF_TABLES2 event to facilitate\r
+/// the measurement of given configuration tables.\r
+///\r
+typedef struct tdUEFI_HANDOFF_TABLE_POINTERS2 {\r
+ UINT8 TableDescriptionSize;\r
+//UINT8 TableDescription[TableDescriptionSize];\r
+//UINT64 NumberOfTables;\r
+//EFI_CONFIGURATION_TABLE TableEntry[1];\r
+} UEFI_HANDOFF_TABLE_POINTERS2;\r
+\r
///\r
/// EFI_VARIABLE_DATA\r
///\r
EFI_PARTITION_ENTRY Partitions[1];\r
} EFI_GPT_DATA;\r
\r
+typedef struct tdUEFI_GPT_DATA {\r
+ EFI_PARTITION_TABLE_HEADER EfiPartitionHeader;\r
+ UINT64 NumberOfPartitions;\r
+ EFI_PARTITION_ENTRY Partitions[1];\r
+} UEFI_GPT_DATA;\r
+\r
+#define TCG_DEVICE_SECURITY_EVENT_DATA_SIGNATURE "SPDM Device Sec"\r
+#define TCG_DEVICE_SECURITY_EVENT_DATA_VERSION 0\r
+\r
+#define TCG_DEVICE_SECURITY_EVENT_DATA_DEVICE_TYPE_NULL 0\r
+#define TCG_DEVICE_SECURITY_EVENT_DATA_DEVICE_TYPE_PCI 1\r
+#define TCG_DEVICE_SECURITY_EVENT_DATA_DEVICE_TYPE_USB 2\r
+\r
+///\r
+/// TCG_DEVICE_SECURITY_EVENT_DATA_HEADER\r
+/// This is the header of TCG_DEVICE_SECURITY_EVENT_DATA, which is\r
+/// used in EV_EFI_SPDM_FIRMWARE_BLOB and EV_EFI_SPDM_FIRMWARE_CONFIG.\r
+///\r
+typedef struct {\r
+ UINT8 Signature[16];\r
+ UINT16 Version;\r
+ UINT16 Length;\r
+ UINT32 SpdmHashAlgo;\r
+ UINT32 DeviceType;\r
+//SPDM_MEASUREMENT_BLOCK SpdmMeasurementBlock;\r
+} TCG_DEVICE_SECURITY_EVENT_DATA_HEADER;\r
+\r
+#define TCG_DEVICE_SECURITY_EVENT_DATA_PCI_CONTEXT_VERSION 0\r
+\r
+///\r
+/// TCG_DEVICE_SECURITY_EVENT_DATA_PCI_CONTEXT\r
+/// This is the PCI context data of TCG_DEVICE_SECURITY_EVENT_DATA, which is\r
+/// used in EV_EFI_SPDM_FIRMWARE_BLOB and EV_EFI_SPDM_FIRMWARE_CONFIG.\r
+///\r
+typedef struct {\r
+ UINT16 Version;\r
+ UINT16 Length;\r
+ UINT16 VendorId;\r
+ UINT16 DeviceId;\r
+ UINT8 RevisionID;\r
+ UINT8 ClassCode[3];\r
+ UINT16 SubsystemVendorID;\r
+ UINT16 SubsystemID;\r
+} TCG_DEVICE_SECURITY_EVENT_DATA_PCI_CONTEXT;\r
+\r
+#define TCG_DEVICE_SECURITY_EVENT_DATA_USB_CONTEXT_VERSION 0\r
+\r
+///\r
+/// TCG_DEVICE_SECURITY_EVENT_DATA_USB_CONTEXT\r
+/// This is the USB context data of TCG_DEVICE_SECURITY_EVENT_DATA, which is\r
+/// used in EV_EFI_SPDM_FIRMWARE_BLOB and EV_EFI_SPDM_FIRMWARE_CONFIG.\r
+///\r
+typedef struct {\r
+ UINT16 Version;\r
+ UINT16 Length;\r
+//UINT8 DeviceDescriptor[DescLen];\r
+//UINT8 BodDescriptor[DescLen];\r
+//UINT8 ConfigurationDescriptor[DescLen][NumOfConfiguration];\r
+} TCG_DEVICE_SECURITY_EVENT_DATA_USB_CONTEXT;\r
+\r
//\r
// Crypto Agile Log Entry Format\r
//\r
#define TCG_EfiSpecIDEventStruct_SPEC_VERSION_MAJOR_TPM2 2\r
#define TCG_EfiSpecIDEventStruct_SPEC_VERSION_MINOR_TPM2 0\r
#define TCG_EfiSpecIDEventStruct_SPEC_ERRATA_TPM2 0\r
+#define TCG_EfiSpecIDEventStruct_SPEC_ERRATA_TPM2_REV_105 105\r
\r
typedef struct {\r
UINT8 signature[16];\r
//UINT8 vendorInfo[vendorInfoSize];\r
} TCG_EfiSpecIDEventStruct;\r
\r
+typedef struct tdTCG_PCClientTaggedEvent {\r
+ UINT32 taggedEventID;\r
+ UINT32 taggedEventDataSize;\r
+//UINT8 taggedEventData[taggedEventDataSize];\r
+} TCG_PCClientTaggedEvent;\r
+\r
+#define TCG_Sp800_155_PlatformId_Event_SIGNATURE "SP800-155 Event"\r
+#define TCG_Sp800_155_PlatformId_Event2_SIGNATURE "SP800-155 Event2"\r
\r
+typedef struct tdTCG_Sp800_155_PlatformId_Event2 {\r
+ UINT8 Signature[16];\r
+ //\r
+ // Where Vendor ID is an integer defined\r
+ // at http://www.iana.org/assignments/enterprisenumbers\r
+ //\r
+ UINT32 VendorId;\r
+ //\r
+ // 16-byte identifier of a given platform's static configuration of code\r
+ //\r
+ EFI_GUID ReferenceManifestGuid;\r
+ //\r
+ // Below structure is newly added in TCG_Sp800_155_PlatformId_Event2.\r
+ //\r
+//UINT8 PlatformManufacturerStrSize;\r
+//UINT8 PlatformManufacturerStr[PlatformManufacturerStrSize];\r
+//UINT8 PlatformModelSize;\r
+//UINT8 PlatformModel[PlatformModelSize];\r
+//UINT8 PlatformVersionSize;\r
+//UINT8 PlatformVersion[PlatformVersionSize];\r
+//UINT8 PlatformModelSize;\r
+//UINT8 PlatformModel[PlatformModelSize];\r
+//UINT8 FirmwareManufacturerStrSize;\r
+//UINT8 FirmwareManufacturerStr[FirmwareManufacturerStrSize];\r
+//UINT32 FirmwareManufacturerId;\r
+//UINT8 FirmwareVersion;\r
+//UINT8 FirmwareVersion[FirmwareVersionSize]];\r
+} TCG_Sp800_155_PlatformId_Event2;\r
\r
#define TCG_EfiStartupLocalityEvent_SIGNATURE "StartupLocality"\r
\r
\r
//\r
-// PC Client PTP spec Table 8 Relationship between Locality and Locality Attribute\r
+// The Locality Indicator which sent the TPM2_Startup command\r
//\r
-#define LOCALITY_0_INDICATOR 0x01\r
-#define LOCALITY_1_INDICATOR 0x02\r
-#define LOCALITY_2_INDICATOR 0x03\r
-#define LOCALITY_3_INDICATOR 0x04\r
-#define LOCALITY_4_INDICATOR 0x05\r
-\r
+#define LOCALITY_0_INDICATOR 0x00\r
+#define LOCALITY_3_INDICATOR 0x03\r
\r
//\r
// Startup Locality Event\r