#define PERF_ID_TCG2_DXE 0x3120\r
\r
typedef struct {\r
- CHAR16 *VariableName;\r
- EFI_GUID *VendorGuid;\r
+ CHAR16 *VariableName;\r
+ EFI_GUID *VendorGuid;\r
} VARIABLE_TYPE;\r
\r
-#define TCG2_DEFAULT_MAX_COMMAND_SIZE 0x1000\r
-#define TCG2_DEFAULT_MAX_RESPONSE_SIZE 0x1000\r
+#define TCG2_DEFAULT_MAX_COMMAND_SIZE 0x1000\r
+#define TCG2_DEFAULT_MAX_RESPONSE_SIZE 0x1000\r
\r
typedef struct {\r
- EFI_GUID *EventGuid;\r
- EFI_TCG2_EVENT_LOG_FORMAT LogFormat;\r
+ EFI_GUID *EventGuid;\r
+ EFI_TCG2_EVENT_LOG_FORMAT LogFormat;\r
} TCG2_EVENT_INFO_STRUCT;\r
\r
-TCG2_EVENT_INFO_STRUCT mTcg2EventInfo[] = {\r
- {&gTcgEventEntryHobGuid, EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2},\r
- {&gTcgEvent2EntryHobGuid, EFI_TCG2_EVENT_LOG_FORMAT_TCG_2},\r
+TCG2_EVENT_INFO_STRUCT mTcg2EventInfo[] = {\r
+ { &gTcgEventEntryHobGuid, EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2 },\r
+ { &gTcgEvent2EntryHobGuid, EFI_TCG2_EVENT_LOG_FORMAT_TCG_2 },\r
};\r
\r
-#define TCG_EVENT_LOG_AREA_COUNT_MAX 2\r
+#define TCG_EVENT_LOG_AREA_COUNT_MAX 2\r
\r
typedef struct {\r
- EFI_TCG2_EVENT_LOG_FORMAT EventLogFormat;\r
- EFI_PHYSICAL_ADDRESS Lasa;\r
- UINT64 Laml;\r
- UINTN EventLogSize;\r
- UINT8 *LastEvent;\r
- BOOLEAN EventLogStarted;\r
- BOOLEAN EventLogTruncated;\r
+ EFI_TCG2_EVENT_LOG_FORMAT EventLogFormat;\r
+ EFI_PHYSICAL_ADDRESS Lasa;\r
+ UINT64 Laml;\r
+ UINTN EventLogSize;\r
+ UINT8 *LastEvent;\r
+ BOOLEAN EventLogStarted;\r
+ BOOLEAN EventLogTruncated;\r
+ UINTN Next800155EventOffset;\r
} TCG_EVENT_LOG_AREA_STRUCT;\r
\r
typedef struct _TCG_DXE_DATA {\r
- EFI_TCG2_BOOT_SERVICE_CAPABILITY BsCap;\r
- TCG_EVENT_LOG_AREA_STRUCT EventLogAreaStruct[TCG_EVENT_LOG_AREA_COUNT_MAX];\r
- BOOLEAN GetEventLogCalled[TCG_EVENT_LOG_AREA_COUNT_MAX];\r
- TCG_EVENT_LOG_AREA_STRUCT FinalEventLogAreaStruct[TCG_EVENT_LOG_AREA_COUNT_MAX];\r
- EFI_TCG2_FINAL_EVENTS_TABLE *FinalEventsTable[TCG_EVENT_LOG_AREA_COUNT_MAX];\r
+ EFI_TCG2_BOOT_SERVICE_CAPABILITY BsCap;\r
+ TCG_EVENT_LOG_AREA_STRUCT EventLogAreaStruct[TCG_EVENT_LOG_AREA_COUNT_MAX];\r
+ BOOLEAN GetEventLogCalled[TCG_EVENT_LOG_AREA_COUNT_MAX];\r
+ TCG_EVENT_LOG_AREA_STRUCT FinalEventLogAreaStruct[TCG_EVENT_LOG_AREA_COUNT_MAX];\r
+ EFI_TCG2_FINAL_EVENTS_TABLE *FinalEventsTable[TCG_EVENT_LOG_AREA_COUNT_MAX];\r
} TCG_DXE_DATA;\r
\r
-TCG_DXE_DATA mTcgDxeData = {\r
+TCG_DXE_DATA mTcgDxeData = {\r
{\r
- sizeof (EFI_TCG2_BOOT_SERVICE_CAPABILITY), // Size\r
- { 1, 1 }, // StructureVersion\r
- { 1, 1 }, // ProtocolVersion\r
- EFI_TCG2_BOOT_HASH_ALG_SHA1, // HashAlgorithmBitmap\r
- EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2, // SupportedEventLogs\r
- TRUE, // TPMPresentFlag\r
- TCG2_DEFAULT_MAX_COMMAND_SIZE, // MaxCommandSize\r
- TCG2_DEFAULT_MAX_RESPONSE_SIZE, // MaxResponseSize\r
- 0, // ManufacturerID\r
- 0, // NumberOfPCRBanks\r
- 0, // ActivePcrBanks\r
+ sizeof (EFI_TCG2_BOOT_SERVICE_CAPABILITY), // Size\r
+ { 1, 1 }, // StructureVersion\r
+ { 1, 1 }, // ProtocolVersion\r
+ EFI_TCG2_BOOT_HASH_ALG_SHA1, // HashAlgorithmBitmap\r
+ EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2, // SupportedEventLogs\r
+ TRUE, // TPMPresentFlag\r
+ TCG2_DEFAULT_MAX_COMMAND_SIZE, // MaxCommandSize\r
+ TCG2_DEFAULT_MAX_RESPONSE_SIZE, // MaxResponseSize\r
+ 0, // ManufacturerID\r
+ 0, // NumberOfPCRBanks\r
+ 0, // ActivePcrBanks\r
},\r
};\r
\r
-UINTN mBootAttempts = 0;\r
-CHAR16 mBootVarName[] = L"BootOrder";\r
+UINTN mBootAttempts = 0;\r
+CHAR16 mBootVarName[] = L"BootOrder";\r
\r
VARIABLE_TYPE mVariableType[] = {\r
- {EFI_SECURE_BOOT_MODE_NAME, &gEfiGlobalVariableGuid},\r
- {EFI_PLATFORM_KEY_NAME, &gEfiGlobalVariableGuid},\r
- {EFI_KEY_EXCHANGE_KEY_NAME, &gEfiGlobalVariableGuid},\r
- {EFI_IMAGE_SECURITY_DATABASE, &gEfiImageSecurityDatabaseGuid},\r
- {EFI_IMAGE_SECURITY_DATABASE1, &gEfiImageSecurityDatabaseGuid},\r
+ { EFI_SECURE_BOOT_MODE_NAME, &gEfiGlobalVariableGuid },\r
+ { EFI_PLATFORM_KEY_NAME, &gEfiGlobalVariableGuid },\r
+ { EFI_KEY_EXCHANGE_KEY_NAME, &gEfiGlobalVariableGuid },\r
+ { EFI_IMAGE_SECURITY_DATABASE, &gEfiImageSecurityDatabaseGuid },\r
+ { EFI_IMAGE_SECURITY_DATABASE1, &gEfiImageSecurityDatabaseGuid },\r
};\r
\r
-EFI_HANDLE mImageHandle;\r
+EFI_HANDLE mImageHandle;\r
\r
/**\r
Measure PE image into TPM log based on the authenticode image hashing in\r
@param[in] PCRIndex TPM PCR index\r
@param[in] ImageAddress Start address of image buffer.\r
@param[in] ImageSize Image size\r
- @param[out] DigestList Digeest list of this image.\r
+ @param[out] DigestList Digest list of this image.\r
\r
@retval EFI_SUCCESS Successfully measure image.\r
@retval EFI_OUT_OF_RESOURCES No enough resource to measure image.\r
**/\r
EFI_STATUS\r
MeasurePeImageAndExtend (\r
- IN UINT32 PCRIndex,\r
- IN EFI_PHYSICAL_ADDRESS ImageAddress,\r
- IN UINTN ImageSize,\r
- OUT TPML_DIGEST_VALUES *DigestList\r
+ IN UINT32 PCRIndex,\r
+ IN EFI_PHYSICAL_ADDRESS ImageAddress,\r
+ IN UINTN ImageSize,\r
+ OUT TPML_DIGEST_VALUES *DigestList\r
);\r
\r
/**\r
)\r
{\r
UINTN Index;\r
+\r
for (Index = 0; Index < Size; Index++) {\r
- DEBUG ((EFI_D_INFO, "%02x", (UINTN)Data[Index]));\r
+ DEBUG ((DEBUG_INFO, "%02x", (UINTN)Data[Index]));\r
}\r
}\r
\r
InitNoActionEvent (\r
IN OUT TCG_PCR_EVENT2_HDR *NoActionEvent,\r
IN UINT32 EventSize\r
- )\r
+ )\r
{\r
- UINT32 DigestListCount;\r
- TPMI_ALG_HASH HashAlgId;\r
- UINT8 *DigestBuffer;\r
+ UINT32 DigestListCount;\r
+ TPMI_ALG_HASH HashAlgId;\r
+ UINT8 *DigestBuffer;\r
\r
DigestBuffer = (UINT8 *)NoActionEvent->Digests.digests;\r
DigestListCount = 0;\r
//\r
// Set Hash count & hashAlg accordingly, while Digest.digests[n].digest to all 0\r
//\r
- ZeroMem (&NoActionEvent->Digests, sizeof(NoActionEvent->Digests));\r
+ ZeroMem (&NoActionEvent->Digests, sizeof (NoActionEvent->Digests));\r
\r
if ((mTcgDxeData.BsCap.ActivePcrBanks & EFI_TCG2_BOOT_HASH_ALG_SHA1) != 0) {\r
- HashAlgId = TPM_ALG_SHA1;\r
- CopyMem (DigestBuffer, &HashAlgId, sizeof(TPMI_ALG_HASH));\r
- DigestBuffer += sizeof(TPMI_ALG_HASH) + GetHashSizeFromAlgo (HashAlgId);\r
- DigestListCount++;\r
+ HashAlgId = TPM_ALG_SHA1;\r
+ CopyMem (DigestBuffer, &HashAlgId, sizeof (TPMI_ALG_HASH));\r
+ DigestBuffer += sizeof (TPMI_ALG_HASH) + GetHashSizeFromAlgo (HashAlgId);\r
+ DigestListCount++;\r
}\r
\r
if ((mTcgDxeData.BsCap.ActivePcrBanks & EFI_TCG2_BOOT_HASH_ALG_SHA256) != 0) {\r
- HashAlgId = TPM_ALG_SHA256;\r
- CopyMem (DigestBuffer, &HashAlgId, sizeof(TPMI_ALG_HASH));\r
- DigestBuffer += sizeof(TPMI_ALG_HASH) + GetHashSizeFromAlgo (HashAlgId);\r
- DigestListCount++;\r
+ HashAlgId = TPM_ALG_SHA256;\r
+ CopyMem (DigestBuffer, &HashAlgId, sizeof (TPMI_ALG_HASH));\r
+ DigestBuffer += sizeof (TPMI_ALG_HASH) + GetHashSizeFromAlgo (HashAlgId);\r
+ DigestListCount++;\r
}\r
\r
if ((mTcgDxeData.BsCap.ActivePcrBanks & EFI_TCG2_BOOT_HASH_ALG_SHA384) != 0) {\r
HashAlgId = TPM_ALG_SHA384;\r
- CopyMem (DigestBuffer, &HashAlgId, sizeof(TPMI_ALG_HASH));\r
- DigestBuffer += sizeof(TPMI_ALG_HASH) + GetHashSizeFromAlgo (HashAlgId);\r
+ CopyMem (DigestBuffer, &HashAlgId, sizeof (TPMI_ALG_HASH));\r
+ DigestBuffer += sizeof (TPMI_ALG_HASH) + GetHashSizeFromAlgo (HashAlgId);\r
DigestListCount++;\r
}\r
\r
if ((mTcgDxeData.BsCap.ActivePcrBanks & EFI_TCG2_BOOT_HASH_ALG_SHA512) != 0) {\r
HashAlgId = TPM_ALG_SHA512;\r
- CopyMem (DigestBuffer, &HashAlgId, sizeof(TPMI_ALG_HASH));\r
- DigestBuffer += sizeof(TPMI_ALG_HASH) + GetHashSizeFromAlgo (HashAlgId);\r
+ CopyMem (DigestBuffer, &HashAlgId, sizeof (TPMI_ALG_HASH));\r
+ DigestBuffer += sizeof (TPMI_ALG_HASH) + GetHashSizeFromAlgo (HashAlgId);\r
DigestListCount++;\r
}\r
\r
if ((mTcgDxeData.BsCap.ActivePcrBanks & EFI_TCG2_BOOT_HASH_ALG_SM3_256) != 0) {\r
HashAlgId = TPM_ALG_SM3_256;\r
- CopyMem (DigestBuffer, &HashAlgId, sizeof(TPMI_ALG_HASH));\r
- DigestBuffer += sizeof(TPMI_ALG_HASH) + GetHashSizeFromAlgo (HashAlgId);\r
+ CopyMem (DigestBuffer, &HashAlgId, sizeof (TPMI_ALG_HASH));\r
+ DigestBuffer += sizeof (TPMI_ALG_HASH) + GetHashSizeFromAlgo (HashAlgId);\r
DigestListCount++;\r
}\r
\r
//\r
// Set Event Size\r
//\r
- WriteUnaligned32((UINT32 *)DigestBuffer, EventSize);\r
+ WriteUnaligned32 ((UINT32 *)DigestBuffer, EventSize);\r
}\r
\r
/**\r
IN UINTN Size\r
)\r
{\r
- UINTN Index;\r
- UINTN Count;\r
- UINTN Left;\r
+ UINTN Index;\r
+ UINTN Count;\r
+ UINTN Left;\r
\r
-#define COLUME_SIZE (16 * 2)\r
+ #define COLUME_SIZE (16 * 2)\r
\r
Count = Size / COLUME_SIZE;\r
Left = Size % COLUME_SIZE;\r
for (Index = 0; Index < Count; Index++) {\r
- DEBUG ((EFI_D_INFO, "%04x: ", Index * COLUME_SIZE));\r
+ DEBUG ((DEBUG_INFO, "%04x: ", Index * COLUME_SIZE));\r
InternalDumpData (Data + Index * COLUME_SIZE, COLUME_SIZE);\r
- DEBUG ((EFI_D_INFO, "\n"));\r
+ DEBUG ((DEBUG_INFO, "\n"));\r
}\r
\r
if (Left != 0) {\r
- DEBUG ((EFI_D_INFO, "%04x: ", Index * COLUME_SIZE));\r
+ DEBUG ((DEBUG_INFO, "%04x: ", Index * COLUME_SIZE));\r
InternalDumpData (Data + Index * COLUME_SIZE, Left);\r
- DEBUG ((EFI_D_INFO, "\n"));\r
+ DEBUG ((DEBUG_INFO, "\n"));\r
}\r
}\r
\r
**/\r
EFI_STATUS\r
GetProcessorsCpuLocation (\r
- OUT EFI_CPU_PHYSICAL_LOCATION **LocationBuf,\r
- OUT UINTN *Num\r
+ OUT EFI_CPU_PHYSICAL_LOCATION **LocationBuf,\r
+ OUT UINTN *Num\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_MP_SERVICES_PROTOCOL *MpProtocol;\r
- UINTN ProcessorNum;\r
- UINTN EnabledProcessorNum;\r
- EFI_PROCESSOR_INFORMATION ProcessorInfo;\r
- EFI_CPU_PHYSICAL_LOCATION *ProcessorLocBuf;\r
- UINTN Index;\r
-\r
- Status = gBS->LocateProtocol (&gEfiMpServiceProtocolGuid, NULL, (VOID **) &MpProtocol);\r
+ EFI_STATUS Status;\r
+ EFI_MP_SERVICES_PROTOCOL *MpProtocol;\r
+ UINTN ProcessorNum;\r
+ UINTN EnabledProcessorNum;\r
+ EFI_PROCESSOR_INFORMATION ProcessorInfo;\r
+ EFI_CPU_PHYSICAL_LOCATION *ProcessorLocBuf;\r
+ UINTN Index;\r
+\r
+ Status = gBS->LocateProtocol (&gEfiMpServiceProtocolGuid, NULL, (VOID **)&MpProtocol);\r
if (EFI_ERROR (Status)) {\r
//\r
// MP protocol is not installed\r
return EFI_UNSUPPORTED;\r
}\r
\r
- Status = MpProtocol->GetNumberOfProcessors(\r
+ Status = MpProtocol->GetNumberOfProcessors (\r
MpProtocol,\r
&ProcessorNum,\r
&EnabledProcessorNum\r
);\r
- if (EFI_ERROR(Status)){\r
+ if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
\r
- Status = gBS->AllocatePool(\r
+ Status = gBS->AllocatePool (\r
EfiBootServicesData,\r
- sizeof(EFI_CPU_PHYSICAL_LOCATION) * ProcessorNum,\r
- (VOID **) &ProcessorLocBuf\r
+ sizeof (EFI_CPU_PHYSICAL_LOCATION) * ProcessorNum,\r
+ (VOID **)&ProcessorLocBuf\r
);\r
- if (EFI_ERROR(Status)){\r
+ if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
\r
// Get each processor Location info\r
//\r
for (Index = 0; Index < ProcessorNum; Index++) {\r
- Status = MpProtocol->GetProcessorInfo(\r
+ Status = MpProtocol->GetProcessorInfo (\r
MpProtocol,\r
Index,\r
&ProcessorInfo\r
);\r
- if (EFI_ERROR(Status)){\r
- FreePool(ProcessorLocBuf);\r
+ if (EFI_ERROR (Status)) {\r
+ FreePool (ProcessorLocBuf);\r
return Status;\r
}\r
\r
//\r
// Get all Processor Location info & measure\r
//\r
- CopyMem(\r
+ CopyMem (\r
&ProcessorLocBuf[Index],\r
&ProcessorInfo.Location,\r
- sizeof(EFI_CPU_PHYSICAL_LOCATION)\r
+ sizeof (EFI_CPU_PHYSICAL_LOCATION)\r
);\r
}\r
\r
*LocationBuf = ProcessorLocBuf;\r
- *Num = ProcessorNum;\r
+ *Num = ProcessorNum;\r
\r
return Status;\r
}\r
EFI_STATUS\r
EFIAPI\r
Tcg2GetCapability (\r
- IN EFI_TCG2_PROTOCOL *This,\r
- IN OUT EFI_TCG2_BOOT_SERVICE_CAPABILITY *ProtocolCapability\r
+ IN EFI_TCG2_PROTOCOL *This,\r
+ IN OUT EFI_TCG2_BOOT_SERVICE_CAPABILITY *ProtocolCapability\r
)\r
{\r
DEBUG ((DEBUG_VERBOSE, "Tcg2GetCapability ...\n"));\r
}\r
\r
DEBUG ((DEBUG_VERBOSE, "Size - 0x%x\n", ProtocolCapability->Size));\r
- DEBUG ((DEBUG_VERBOSE, " 1.1 - 0x%x, 1.0 - 0x%x\n", sizeof(EFI_TCG2_BOOT_SERVICE_CAPABILITY), sizeof(TREE_BOOT_SERVICE_CAPABILITY_1_0)));\r
+ DEBUG ((DEBUG_VERBOSE, " 1.1 - 0x%x, 1.0 - 0x%x\n", sizeof (EFI_TCG2_BOOT_SERVICE_CAPABILITY), sizeof (TREE_BOOT_SERVICE_CAPABILITY_1_0)));\r
\r
if (ProtocolCapability->Size < mTcgDxeData.BsCap.Size) {\r
//\r
// Handle the case that firmware support 1.1 but OS only support 1.0.\r
//\r
if ((mTcgDxeData.BsCap.ProtocolVersion.Major > 0x01) ||\r
- ((mTcgDxeData.BsCap.ProtocolVersion.Major == 0x01) && ((mTcgDxeData.BsCap.ProtocolVersion.Minor > 0x00)))) {\r
- if (ProtocolCapability->Size >= sizeof(TREE_BOOT_SERVICE_CAPABILITY_1_0)) {\r
- CopyMem (ProtocolCapability, &mTcgDxeData.BsCap, sizeof(TREE_BOOT_SERVICE_CAPABILITY_1_0));\r
- ProtocolCapability->Size = sizeof(TREE_BOOT_SERVICE_CAPABILITY_1_0);\r
+ ((mTcgDxeData.BsCap.ProtocolVersion.Major == 0x01) && ((mTcgDxeData.BsCap.ProtocolVersion.Minor > 0x00))))\r
+ {\r
+ if (ProtocolCapability->Size >= sizeof (TREE_BOOT_SERVICE_CAPABILITY_1_0)) {\r
+ CopyMem (ProtocolCapability, &mTcgDxeData.BsCap, sizeof (TREE_BOOT_SERVICE_CAPABILITY_1_0));\r
+ ProtocolCapability->Size = sizeof (TREE_BOOT_SERVICE_CAPABILITY_1_0);\r
ProtocolCapability->StructureVersion.Major = 1;\r
ProtocolCapability->StructureVersion.Minor = 0;\r
- ProtocolCapability->ProtocolVersion.Major = 1;\r
- ProtocolCapability->ProtocolVersion.Minor = 0;\r
- DEBUG ((EFI_D_ERROR, "TreeGetCapability (Compatible) - %r\n", EFI_SUCCESS));\r
+ ProtocolCapability->ProtocolVersion.Major = 1;\r
+ ProtocolCapability->ProtocolVersion.Minor = 0;\r
+ DEBUG ((DEBUG_ERROR, "TreeGetCapability (Compatible) - %r\n", EFI_SUCCESS));\r
return EFI_SUCCESS;\r
}\r
}\r
+\r
ProtocolCapability->Size = mTcgDxeData.BsCap.Size;\r
return EFI_BUFFER_TOO_SMALL;\r
}\r
**/\r
VOID\r
DumpEvent (\r
- IN TCG_PCR_EVENT_HDR *EventHdr\r
+ IN TCG_PCR_EVENT_HDR *EventHdr\r
)\r
{\r
- UINTN Index;\r
+ UINTN Index;\r
\r
- DEBUG ((EFI_D_INFO, " Event:\n"));\r
- DEBUG ((EFI_D_INFO, " PCRIndex - %d\n", EventHdr->PCRIndex));\r
- DEBUG ((EFI_D_INFO, " EventType - 0x%08x\n", EventHdr->EventType));\r
- DEBUG ((EFI_D_INFO, " Digest - "));\r
- for (Index = 0; Index < sizeof(TCG_DIGEST); Index++) {\r
- DEBUG ((EFI_D_INFO, "%02x ", EventHdr->Digest.digest[Index]));\r
+ DEBUG ((DEBUG_INFO, " Event:\n"));\r
+ DEBUG ((DEBUG_INFO, " PCRIndex - %d\n", EventHdr->PCRIndex));\r
+ DEBUG ((DEBUG_INFO, " EventType - 0x%08x\n", EventHdr->EventType));\r
+ DEBUG ((DEBUG_INFO, " Digest - "));\r
+ for (Index = 0; Index < sizeof (TCG_DIGEST); Index++) {\r
+ DEBUG ((DEBUG_INFO, "%02x ", EventHdr->Digest.digest[Index]));\r
}\r
- DEBUG ((EFI_D_INFO, "\n"));\r
- DEBUG ((EFI_D_INFO, " EventSize - 0x%08x\n", EventHdr->EventSize));\r
+\r
+ DEBUG ((DEBUG_INFO, "\n"));\r
+ DEBUG ((DEBUG_INFO, " EventSize - 0x%08x\n", EventHdr->EventSize));\r
InternalDumpHex ((UINT8 *)(EventHdr + 1), EventHdr->EventSize);\r
}\r
\r
**/\r
VOID\r
DumpTcgEfiSpecIdEventStruct (\r
- IN TCG_EfiSpecIDEventStruct *TcgEfiSpecIdEventStruct\r
+ IN TCG_EfiSpecIDEventStruct *TcgEfiSpecIdEventStruct\r
)\r
{\r
TCG_EfiSpecIdEventAlgorithmSize *DigestSize;\r
UINT8 *VendorInfo;\r
UINT32 NumberOfAlgorithms;\r
\r
- DEBUG ((EFI_D_INFO, " TCG_EfiSpecIDEventStruct:\n"));\r
- DEBUG ((EFI_D_INFO, " signature - '"));\r
- for (Index = 0; Index < sizeof(TcgEfiSpecIdEventStruct->signature); Index++) {\r
- DEBUG ((EFI_D_INFO, "%c", TcgEfiSpecIdEventStruct->signature[Index]));\r
+ DEBUG ((DEBUG_INFO, " TCG_EfiSpecIDEventStruct:\n"));\r
+ DEBUG ((DEBUG_INFO, " signature - '"));\r
+ for (Index = 0; Index < sizeof (TcgEfiSpecIdEventStruct->signature); Index++) {\r
+ DEBUG ((DEBUG_INFO, "%c", TcgEfiSpecIdEventStruct->signature[Index]));\r
}\r
- DEBUG ((EFI_D_INFO, "'\n"));\r
- DEBUG ((EFI_D_INFO, " platformClass - 0x%08x\n", TcgEfiSpecIdEventStruct->platformClass));\r
- DEBUG ((EFI_D_INFO, " specVersion - %d.%d%d\n", TcgEfiSpecIdEventStruct->specVersionMajor, TcgEfiSpecIdEventStruct->specVersionMinor, TcgEfiSpecIdEventStruct->specErrata));\r
- DEBUG ((EFI_D_INFO, " uintnSize - 0x%02x\n", TcgEfiSpecIdEventStruct->uintnSize));\r
\r
- CopyMem (&NumberOfAlgorithms, TcgEfiSpecIdEventStruct + 1, sizeof(NumberOfAlgorithms));\r
- DEBUG ((EFI_D_INFO, " NumberOfAlgorithms - 0x%08x\n", NumberOfAlgorithms));\r
+ DEBUG ((DEBUG_INFO, "'\n"));\r
+ DEBUG ((DEBUG_INFO, " platformClass - 0x%08x\n", TcgEfiSpecIdEventStruct->platformClass));\r
+ DEBUG ((DEBUG_INFO, " specVersion - %d.%d%d\n", TcgEfiSpecIdEventStruct->specVersionMajor, TcgEfiSpecIdEventStruct->specVersionMinor, TcgEfiSpecIdEventStruct->specErrata));\r
+ DEBUG ((DEBUG_INFO, " uintnSize - 0x%02x\n", TcgEfiSpecIdEventStruct->uintnSize));\r
+\r
+ CopyMem (&NumberOfAlgorithms, TcgEfiSpecIdEventStruct + 1, sizeof (NumberOfAlgorithms));\r
+ DEBUG ((DEBUG_INFO, " NumberOfAlgorithms - 0x%08x\n", NumberOfAlgorithms));\r
\r
- DigestSize = (TCG_EfiSpecIdEventAlgorithmSize *)((UINT8 *)TcgEfiSpecIdEventStruct + sizeof(*TcgEfiSpecIdEventStruct) + sizeof(NumberOfAlgorithms));\r
+ DigestSize = (TCG_EfiSpecIdEventAlgorithmSize *)((UINT8 *)TcgEfiSpecIdEventStruct + sizeof (*TcgEfiSpecIdEventStruct) + sizeof (NumberOfAlgorithms));\r
for (Index = 0; Index < NumberOfAlgorithms; Index++) {\r
- DEBUG ((EFI_D_INFO, " digest(%d)\n", Index));\r
- DEBUG ((EFI_D_INFO, " algorithmId - 0x%04x\n", DigestSize[Index].algorithmId));\r
- DEBUG ((EFI_D_INFO, " digestSize - 0x%04x\n", DigestSize[Index].digestSize));\r
+ DEBUG ((DEBUG_INFO, " digest(%d)\n", Index));\r
+ DEBUG ((DEBUG_INFO, " algorithmId - 0x%04x\n", DigestSize[Index].algorithmId));\r
+ DEBUG ((DEBUG_INFO, " digestSize - 0x%04x\n", DigestSize[Index].digestSize));\r
}\r
+\r
VendorInfoSize = (UINT8 *)&DigestSize[NumberOfAlgorithms];\r
- DEBUG ((EFI_D_INFO, " VendorInfoSize - 0x%02x\n", *VendorInfoSize));\r
+ DEBUG ((DEBUG_INFO, " VendorInfoSize - 0x%02x\n", *VendorInfoSize));\r
VendorInfo = VendorInfoSize + 1;\r
- DEBUG ((EFI_D_INFO, " VendorInfo - "));\r
+ DEBUG ((DEBUG_INFO, " VendorInfo - "));\r
for (Index = 0; Index < *VendorInfoSize; Index++) {\r
- DEBUG ((EFI_D_INFO, "%02x ", VendorInfo[Index]));\r
+ DEBUG ((DEBUG_INFO, "%02x ", VendorInfo[Index]));\r
}\r
- DEBUG ((EFI_D_INFO, "\n"));\r
+\r
+ DEBUG ((DEBUG_INFO, "\n"));\r
}\r
\r
/**\r
**/\r
UINTN\r
GetTcgEfiSpecIdEventStructSize (\r
- IN TCG_EfiSpecIDEventStruct *TcgEfiSpecIdEventStruct\r
+ IN TCG_EfiSpecIDEventStruct *TcgEfiSpecIdEventStruct\r
)\r
{\r
TCG_EfiSpecIdEventAlgorithmSize *DigestSize;\r
UINT8 *VendorInfoSize;\r
UINT32 NumberOfAlgorithms;\r
\r
- CopyMem (&NumberOfAlgorithms, TcgEfiSpecIdEventStruct + 1, sizeof(NumberOfAlgorithms));\r
+ CopyMem (&NumberOfAlgorithms, TcgEfiSpecIdEventStruct + 1, sizeof (NumberOfAlgorithms));\r
\r
- DigestSize = (TCG_EfiSpecIdEventAlgorithmSize *)((UINT8 *)TcgEfiSpecIdEventStruct + sizeof(*TcgEfiSpecIdEventStruct) + sizeof(NumberOfAlgorithms));\r
+ DigestSize = (TCG_EfiSpecIdEventAlgorithmSize *)((UINT8 *)TcgEfiSpecIdEventStruct + sizeof (*TcgEfiSpecIdEventStruct) + sizeof (NumberOfAlgorithms));\r
VendorInfoSize = (UINT8 *)&DigestSize[NumberOfAlgorithms];\r
- return sizeof(TCG_EfiSpecIDEventStruct) + sizeof(UINT32) + (NumberOfAlgorithms * sizeof(TCG_EfiSpecIdEventAlgorithmSize)) + sizeof(UINT8) + (*VendorInfoSize);\r
+ return sizeof (TCG_EfiSpecIDEventStruct) + sizeof (UINT32) + (NumberOfAlgorithms * sizeof (TCG_EfiSpecIdEventAlgorithmSize)) + sizeof (UINT8) + (*VendorInfoSize);\r
}\r
\r
/**\r
**/\r
VOID\r
DumpEvent2 (\r
- IN TCG_PCR_EVENT2 *TcgPcrEvent2\r
+ IN TCG_PCR_EVENT2 *TcgPcrEvent2\r
)\r
{\r
- UINTN Index;\r
- UINT32 DigestIndex;\r
- UINT32 DigestCount;\r
- TPMI_ALG_HASH HashAlgo;\r
- UINT32 DigestSize;\r
- UINT8 *DigestBuffer;\r
- UINT32 EventSize;\r
- UINT8 *EventBuffer;\r
-\r
- DEBUG ((EFI_D_INFO, " Event:\n"));\r
- DEBUG ((EFI_D_INFO, " PCRIndex - %d\n", TcgPcrEvent2->PCRIndex));\r
- DEBUG ((EFI_D_INFO, " EventType - 0x%08x\n", TcgPcrEvent2->EventType));\r
-\r
- DEBUG ((EFI_D_INFO, " DigestCount: 0x%08x\n", TcgPcrEvent2->Digest.count));\r
-\r
- DigestCount = TcgPcrEvent2->Digest.count;\r
- HashAlgo = TcgPcrEvent2->Digest.digests[0].hashAlg;\r
+ UINTN Index;\r
+ UINT32 DigestIndex;\r
+ UINT32 DigestCount;\r
+ TPMI_ALG_HASH HashAlgo;\r
+ UINT32 DigestSize;\r
+ UINT8 *DigestBuffer;\r
+ UINT32 EventSize;\r
+ UINT8 *EventBuffer;\r
+\r
+ DEBUG ((DEBUG_INFO, " Event:\n"));\r
+ DEBUG ((DEBUG_INFO, " PCRIndex - %d\n", TcgPcrEvent2->PCRIndex));\r
+ DEBUG ((DEBUG_INFO, " EventType - 0x%08x\n", TcgPcrEvent2->EventType));\r
+\r
+ DEBUG ((DEBUG_INFO, " DigestCount: 0x%08x\n", TcgPcrEvent2->Digest.count));\r
+\r
+ DigestCount = TcgPcrEvent2->Digest.count;\r
+ HashAlgo = TcgPcrEvent2->Digest.digests[0].hashAlg;\r
DigestBuffer = (UINT8 *)&TcgPcrEvent2->Digest.digests[0].digest;\r
for (DigestIndex = 0; DigestIndex < DigestCount; DigestIndex++) {\r
- DEBUG ((EFI_D_INFO, " HashAlgo : 0x%04x\n", HashAlgo));\r
- DEBUG ((EFI_D_INFO, " Digest(%d): ", DigestIndex));\r
+ DEBUG ((DEBUG_INFO, " HashAlgo : 0x%04x\n", HashAlgo));\r
+ DEBUG ((DEBUG_INFO, " Digest(%d): ", DigestIndex));\r
DigestSize = GetHashSizeFromAlgo (HashAlgo);\r
for (Index = 0; Index < DigestSize; Index++) {\r
- DEBUG ((EFI_D_INFO, "%02x ", DigestBuffer[Index]));\r
+ DEBUG ((DEBUG_INFO, "%02x ", DigestBuffer[Index]));\r
}\r
- DEBUG ((EFI_D_INFO, "\n"));\r
+\r
+ DEBUG ((DEBUG_INFO, "\n"));\r
//\r
// Prepare next\r
//\r
- CopyMem (&HashAlgo, DigestBuffer + DigestSize, sizeof(TPMI_ALG_HASH));\r
- DigestBuffer = DigestBuffer + DigestSize + sizeof(TPMI_ALG_HASH);\r
+ CopyMem (&HashAlgo, DigestBuffer + DigestSize, sizeof (TPMI_ALG_HASH));\r
+ DigestBuffer = DigestBuffer + DigestSize + sizeof (TPMI_ALG_HASH);\r
}\r
- DEBUG ((EFI_D_INFO, "\n"));\r
- DigestBuffer = DigestBuffer - sizeof(TPMI_ALG_HASH);\r
\r
- CopyMem (&EventSize, DigestBuffer, sizeof(TcgPcrEvent2->EventSize));\r
- DEBUG ((EFI_D_INFO, " EventSize - 0x%08x\n", EventSize));\r
- EventBuffer = DigestBuffer + sizeof(TcgPcrEvent2->EventSize);\r
+ DEBUG ((DEBUG_INFO, "\n"));\r
+ DigestBuffer = DigestBuffer - sizeof (TPMI_ALG_HASH);\r
+\r
+ CopyMem (&EventSize, DigestBuffer, sizeof (TcgPcrEvent2->EventSize));\r
+ DEBUG ((DEBUG_INFO, " EventSize - 0x%08x\n", EventSize));\r
+ EventBuffer = DigestBuffer + sizeof (TcgPcrEvent2->EventSize);\r
InternalDumpHex (EventBuffer, EventSize);\r
}\r
\r
**/\r
UINTN\r
GetPcrEvent2Size (\r
- IN TCG_PCR_EVENT2 *TcgPcrEvent2\r
+ IN TCG_PCR_EVENT2 *TcgPcrEvent2\r
)\r
{\r
- UINT32 DigestIndex;\r
- UINT32 DigestCount;\r
- TPMI_ALG_HASH HashAlgo;\r
- UINT32 DigestSize;\r
- UINT8 *DigestBuffer;\r
- UINT32 EventSize;\r
- UINT8 *EventBuffer;\r
-\r
- DigestCount = TcgPcrEvent2->Digest.count;\r
- HashAlgo = TcgPcrEvent2->Digest.digests[0].hashAlg;\r
+ UINT32 DigestIndex;\r
+ UINT32 DigestCount;\r
+ TPMI_ALG_HASH HashAlgo;\r
+ UINT32 DigestSize;\r
+ UINT8 *DigestBuffer;\r
+ UINT32 EventSize;\r
+ UINT8 *EventBuffer;\r
+\r
+ DigestCount = TcgPcrEvent2->Digest.count;\r
+ HashAlgo = TcgPcrEvent2->Digest.digests[0].hashAlg;\r
DigestBuffer = (UINT8 *)&TcgPcrEvent2->Digest.digests[0].digest;\r
for (DigestIndex = 0; DigestIndex < DigestCount; DigestIndex++) {\r
DigestSize = GetHashSizeFromAlgo (HashAlgo);\r
//\r
// Prepare next\r
//\r
- CopyMem (&HashAlgo, DigestBuffer + DigestSize, sizeof(TPMI_ALG_HASH));\r
- DigestBuffer = DigestBuffer + DigestSize + sizeof(TPMI_ALG_HASH);\r
+ CopyMem (&HashAlgo, DigestBuffer + DigestSize, sizeof (TPMI_ALG_HASH));\r
+ DigestBuffer = DigestBuffer + DigestSize + sizeof (TPMI_ALG_HASH);\r
}\r
- DigestBuffer = DigestBuffer - sizeof(TPMI_ALG_HASH);\r
\r
- CopyMem (&EventSize, DigestBuffer, sizeof(TcgPcrEvent2->EventSize));\r
- EventBuffer = DigestBuffer + sizeof(TcgPcrEvent2->EventSize);\r
+ DigestBuffer = DigestBuffer - sizeof (TPMI_ALG_HASH);\r
+\r
+ CopyMem (&EventSize, DigestBuffer, sizeof (TcgPcrEvent2->EventSize));\r
+ EventBuffer = DigestBuffer + sizeof (TcgPcrEvent2->EventSize);\r
\r
return (UINTN)EventBuffer + EventSize - (UINTN)TcgPcrEvent2;\r
}\r
**/\r
VOID\r
DumpEventLog (\r
- IN EFI_TCG2_EVENT_LOG_FORMAT EventLogFormat,\r
- IN EFI_PHYSICAL_ADDRESS EventLogLocation,\r
- IN EFI_PHYSICAL_ADDRESS EventLogLastEntry,\r
- IN EFI_TCG2_FINAL_EVENTS_TABLE *FinalEventsTable\r
+ IN EFI_TCG2_EVENT_LOG_FORMAT EventLogFormat,\r
+ IN EFI_PHYSICAL_ADDRESS EventLogLocation,\r
+ IN EFI_PHYSICAL_ADDRESS EventLogLastEntry,\r
+ IN EFI_TCG2_FINAL_EVENTS_TABLE *FinalEventsTable\r
)\r
{\r
TCG_PCR_EVENT_HDR *EventHdr;\r
TCG_EfiSpecIDEventStruct *TcgEfiSpecIdEventStruct;\r
UINTN NumberOfEvents;\r
\r
- DEBUG ((EFI_D_INFO, "EventLogFormat: (0x%x)\n", EventLogFormat));\r
+ DEBUG ((DEBUG_INFO, "EventLogFormat: (0x%x)\n", EventLogFormat));\r
\r
switch (EventLogFormat) {\r
- case EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2:\r
- EventHdr = (TCG_PCR_EVENT_HDR *)(UINTN)EventLogLocation;\r
- while ((UINTN)EventHdr <= EventLogLastEntry) {\r
- DumpEvent (EventHdr);\r
- EventHdr = (TCG_PCR_EVENT_HDR *)((UINTN)EventHdr + sizeof(TCG_PCR_EVENT_HDR) + EventHdr->EventSize);\r
- }\r
- if (FinalEventsTable == NULL) {\r
- DEBUG ((EFI_D_INFO, "FinalEventsTable: NOT FOUND\n"));\r
- } else {\r
- DEBUG ((EFI_D_INFO, "FinalEventsTable: (0x%x)\n", FinalEventsTable));\r
- DEBUG ((EFI_D_INFO, " Version: (0x%x)\n", FinalEventsTable->Version));\r
- DEBUG ((EFI_D_INFO, " NumberOfEvents: (0x%x)\n", FinalEventsTable->NumberOfEvents));\r
-\r
- EventHdr = (TCG_PCR_EVENT_HDR *)(UINTN)(FinalEventsTable + 1);\r
- for (NumberOfEvents = 0; NumberOfEvents < FinalEventsTable->NumberOfEvents; NumberOfEvents++) {\r
+ case EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2:\r
+ EventHdr = (TCG_PCR_EVENT_HDR *)(UINTN)EventLogLocation;\r
+ while ((UINTN)EventHdr <= EventLogLastEntry) {\r
DumpEvent (EventHdr);\r
- EventHdr = (TCG_PCR_EVENT_HDR *)((UINTN)EventHdr + sizeof(TCG_PCR_EVENT_HDR) + EventHdr->EventSize);\r
+ EventHdr = (TCG_PCR_EVENT_HDR *)((UINTN)EventHdr + sizeof (TCG_PCR_EVENT_HDR) + EventHdr->EventSize);\r
}\r
- }\r
- break;\r
- case EFI_TCG2_EVENT_LOG_FORMAT_TCG_2:\r
- //\r
- // Dump first event\r
- //\r
- EventHdr = (TCG_PCR_EVENT_HDR *)(UINTN)EventLogLocation;\r
- DumpEvent (EventHdr);\r
\r
- TcgEfiSpecIdEventStruct = (TCG_EfiSpecIDEventStruct *)(EventHdr + 1);\r
- DumpTcgEfiSpecIdEventStruct (TcgEfiSpecIdEventStruct);\r
+ if (FinalEventsTable == NULL) {\r
+ DEBUG ((DEBUG_INFO, "FinalEventsTable: NOT FOUND\n"));\r
+ } else {\r
+ DEBUG ((DEBUG_INFO, "FinalEventsTable: (0x%x)\n", FinalEventsTable));\r
+ DEBUG ((DEBUG_INFO, " Version: (0x%x)\n", FinalEventsTable->Version));\r
+ DEBUG ((DEBUG_INFO, " NumberOfEvents: (0x%x)\n", FinalEventsTable->NumberOfEvents));\r
+\r
+ EventHdr = (TCG_PCR_EVENT_HDR *)(UINTN)(FinalEventsTable + 1);\r
+ for (NumberOfEvents = 0; NumberOfEvents < FinalEventsTable->NumberOfEvents; NumberOfEvents++) {\r
+ DumpEvent (EventHdr);\r
+ EventHdr = (TCG_PCR_EVENT_HDR *)((UINTN)EventHdr + sizeof (TCG_PCR_EVENT_HDR) + EventHdr->EventSize);\r
+ }\r
+ }\r
\r
- TcgPcrEvent2 = (TCG_PCR_EVENT2 *)((UINTN)TcgEfiSpecIdEventStruct + GetTcgEfiSpecIdEventStructSize (TcgEfiSpecIdEventStruct));\r
- while ((UINTN)TcgPcrEvent2 <= EventLogLastEntry) {\r
- DumpEvent2 (TcgPcrEvent2);\r
- TcgPcrEvent2 = (TCG_PCR_EVENT2 *)((UINTN)TcgPcrEvent2 + GetPcrEvent2Size (TcgPcrEvent2));\r
- }\r
+ break;\r
+ case EFI_TCG2_EVENT_LOG_FORMAT_TCG_2:\r
+ //\r
+ // Dump first event\r
+ //\r
+ EventHdr = (TCG_PCR_EVENT_HDR *)(UINTN)EventLogLocation;\r
+ DumpEvent (EventHdr);\r
\r
- if (FinalEventsTable == NULL) {\r
- DEBUG ((EFI_D_INFO, "FinalEventsTable: NOT FOUND\n"));\r
- } else {\r
- DEBUG ((EFI_D_INFO, "FinalEventsTable: (0x%x)\n", FinalEventsTable));\r
- DEBUG ((EFI_D_INFO, " Version: (0x%x)\n", FinalEventsTable->Version));\r
- DEBUG ((EFI_D_INFO, " NumberOfEvents: (0x%x)\n", FinalEventsTable->NumberOfEvents));\r
+ TcgEfiSpecIdEventStruct = (TCG_EfiSpecIDEventStruct *)(EventHdr + 1);\r
+ DumpTcgEfiSpecIdEventStruct (TcgEfiSpecIdEventStruct);\r
\r
- TcgPcrEvent2 = (TCG_PCR_EVENT2 *)(UINTN)(FinalEventsTable + 1);\r
- for (NumberOfEvents = 0; NumberOfEvents < FinalEventsTable->NumberOfEvents; NumberOfEvents++) {\r
+ TcgPcrEvent2 = (TCG_PCR_EVENT2 *)((UINTN)TcgEfiSpecIdEventStruct + GetTcgEfiSpecIdEventStructSize (TcgEfiSpecIdEventStruct));\r
+ while ((UINTN)TcgPcrEvent2 <= EventLogLastEntry) {\r
DumpEvent2 (TcgPcrEvent2);\r
TcgPcrEvent2 = (TCG_PCR_EVENT2 *)((UINTN)TcgPcrEvent2 + GetPcrEvent2Size (TcgPcrEvent2));\r
}\r
- }\r
- break;\r
+\r
+ if (FinalEventsTable == NULL) {\r
+ DEBUG ((DEBUG_INFO, "FinalEventsTable: NOT FOUND\n"));\r
+ } else {\r
+ DEBUG ((DEBUG_INFO, "FinalEventsTable: (0x%x)\n", FinalEventsTable));\r
+ DEBUG ((DEBUG_INFO, " Version: (0x%x)\n", FinalEventsTable->Version));\r
+ DEBUG ((DEBUG_INFO, " NumberOfEvents: (0x%x)\n", FinalEventsTable->NumberOfEvents));\r
+\r
+ TcgPcrEvent2 = (TCG_PCR_EVENT2 *)(UINTN)(FinalEventsTable + 1);\r
+ for (NumberOfEvents = 0; NumberOfEvents < FinalEventsTable->NumberOfEvents; NumberOfEvents++) {\r
+ DumpEvent2 (TcgPcrEvent2);\r
+ TcgPcrEvent2 = (TCG_PCR_EVENT2 *)((UINTN)TcgPcrEvent2 + GetPcrEvent2Size (TcgPcrEvent2));\r
+ }\r
+ }\r
+\r
+ break;\r
}\r
\r
- return ;\r
+ return;\r
}\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
Tcg2GetEventLog (\r
- IN EFI_TCG2_PROTOCOL *This,\r
- IN EFI_TCG2_EVENT_LOG_FORMAT EventLogFormat,\r
- OUT EFI_PHYSICAL_ADDRESS *EventLogLocation,\r
- OUT EFI_PHYSICAL_ADDRESS *EventLogLastEntry,\r
- OUT BOOLEAN *EventLogTruncated\r
+ IN EFI_TCG2_PROTOCOL *This,\r
+ IN EFI_TCG2_EVENT_LOG_FORMAT EventLogFormat,\r
+ OUT EFI_PHYSICAL_ADDRESS *EventLogLocation,\r
+ OUT EFI_PHYSICAL_ADDRESS *EventLogLastEntry,\r
+ OUT BOOLEAN *EventLogTruncated\r
)\r
{\r
UINTN Index;\r
\r
- DEBUG ((EFI_D_INFO, "Tcg2GetEventLog ... (0x%x)\n", EventLogFormat));\r
+ DEBUG ((DEBUG_INFO, "Tcg2GetEventLog ... (0x%x)\n", EventLogFormat));\r
\r
if (This == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
- for (Index = 0; Index < sizeof(mTcg2EventInfo)/sizeof(mTcg2EventInfo[0]); Index++) {\r
+ for (Index = 0; Index < sizeof (mTcg2EventInfo)/sizeof (mTcg2EventInfo[0]); Index++) {\r
if (EventLogFormat == mTcg2EventInfo[Index].LogFormat) {\r
break;\r
}\r
}\r
\r
- if (Index == sizeof(mTcg2EventInfo)/sizeof(mTcg2EventInfo[0])) {\r
+ if (Index == sizeof (mTcg2EventInfo)/sizeof (mTcg2EventInfo[0])) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
if (EventLogLocation != NULL) {\r
*EventLogLocation = 0;\r
}\r
+\r
if (EventLogLastEntry != NULL) {\r
*EventLogLastEntry = 0;\r
}\r
+\r
if (EventLogTruncated != NULL) {\r
*EventLogTruncated = FALSE;\r
}\r
+\r
return EFI_SUCCESS;\r
}\r
\r
if (EventLogLocation != NULL) {\r
*EventLogLocation = mTcgDxeData.EventLogAreaStruct[Index].Lasa;\r
- DEBUG ((EFI_D_INFO, "Tcg2GetEventLog (EventLogLocation - %x)\n", *EventLogLocation));\r
+ DEBUG ((DEBUG_INFO, "Tcg2GetEventLog (EventLogLocation - %x)\n", *EventLogLocation));\r
}\r
\r
if (EventLogLastEntry != NULL) {\r
} else {\r
*EventLogLastEntry = (EFI_PHYSICAL_ADDRESS)(UINTN)mTcgDxeData.EventLogAreaStruct[Index].LastEvent;\r
}\r
- DEBUG ((EFI_D_INFO, "Tcg2GetEventLog (EventLogLastEntry - %x)\n", *EventLogLastEntry));\r
+\r
+ DEBUG ((DEBUG_INFO, "Tcg2GetEventLog (EventLogLastEntry - %x)\n", *EventLogLastEntry));\r
}\r
\r
if (EventLogTruncated != NULL) {\r
*EventLogTruncated = mTcgDxeData.EventLogAreaStruct[Index].EventLogTruncated;\r
- DEBUG ((EFI_D_INFO, "Tcg2GetEventLog (EventLogTruncated - %x)\n", *EventLogTruncated));\r
+ DEBUG ((DEBUG_INFO, "Tcg2GetEventLog (EventLogTruncated - %x)\n", *EventLogTruncated));\r
}\r
\r
- DEBUG ((EFI_D_INFO, "Tcg2GetEventLog - %r\n", EFI_SUCCESS));\r
+ DEBUG ((DEBUG_INFO, "Tcg2GetEventLog - %r\n", EFI_SUCCESS));\r
\r
// Dump Event Log for debug purpose\r
if ((EventLogLocation != NULL) && (EventLogLastEntry != NULL)) {\r
return EFI_SUCCESS;\r
}\r
\r
+/**\r
+ Return if this is a Tcg800155PlatformIdEvent.\r
+\r
+ @param[in] NewEventHdr Pointer to a TCG_PCR_EVENT_HDR/TCG_PCR_EVENT_EX data structure.\r
+ @param[in] NewEventHdrSize New event header size.\r
+ @param[in] NewEventData Pointer to the new event data.\r
+ @param[in] NewEventSize New event data size.\r
+\r
+ @retval TRUE This is a Tcg800155PlatformIdEvent.\r
+ @retval FALSE This is NOT a Tcg800155PlatformIdEvent.\r
+\r
+**/\r
+BOOLEAN\r
+Is800155Event (\r
+ IN VOID *NewEventHdr,\r
+ IN UINT32 NewEventHdrSize,\r
+ IN UINT8 *NewEventData,\r
+ IN UINT32 NewEventSize\r
+ )\r
+{\r
+ if ((((TCG_PCR_EVENT2_HDR *)NewEventHdr)->EventType == EV_NO_ACTION) &&\r
+ (NewEventSize >= sizeof (TCG_Sp800_155_PlatformId_Event2)) &&\r
+ (CompareMem (\r
+ NewEventData,\r
+ TCG_Sp800_155_PlatformId_Event2_SIGNATURE,\r
+ sizeof (TCG_Sp800_155_PlatformId_Event2_SIGNATURE) - 1\r
+ ) == 0))\r
+ {\r
+ return TRUE;\r
+ }\r
+\r
+ return FALSE;\r
+}\r
+\r
/**\r
Add a new entry to the Event Log.\r
\r
- @param[in, out] EventLogPtr Pointer to the Event Log data.\r
- @param[in, out] LogSize Size of the Event Log.\r
- @param[in] MaxSize Maximum size of the Event Log.\r
- @param[in] NewEventHdr Pointer to a TCG_PCR_EVENT_HDR/TCG_PCR_EVENT_EX data structure.\r
- @param[in] NewEventHdrSize New event header size.\r
- @param[in] NewEventData Pointer to the new event data.\r
- @param[in] NewEventSize New event data size.\r
+ @param[in, out] EventLogAreaStruct The event log area data structure\r
+ @param[in] NewEventHdr Pointer to a TCG_PCR_EVENT_HDR/TCG_PCR_EVENT_EX data structure.\r
+ @param[in] NewEventHdrSize New event header size.\r
+ @param[in] NewEventData Pointer to the new event data.\r
+ @param[in] NewEventSize New event data size.\r
\r
@retval EFI_SUCCESS The new event log entry was added.\r
@retval EFI_OUT_OF_RESOURCES No enough memory to log the new event.\r
**/\r
EFI_STATUS\r
TcgCommLogEvent (\r
- IN OUT UINT8 **EventLogPtr,\r
- IN OUT UINTN *LogSize,\r
- IN UINTN MaxSize,\r
- IN VOID *NewEventHdr,\r
- IN UINT32 NewEventHdrSize,\r
- IN UINT8 *NewEventData,\r
- IN UINT32 NewEventSize\r
+ IN OUT TCG_EVENT_LOG_AREA_STRUCT *EventLogAreaStruct,\r
+ IN VOID *NewEventHdr,\r
+ IN UINT32 NewEventHdrSize,\r
+ IN UINT8 *NewEventData,\r
+ IN UINT32 NewEventSize\r
)\r
{\r
- UINTN NewLogSize;\r
+ UINTN NewLogSize;\r
+ BOOLEAN Record800155Event;\r
\r
if (NewEventSize > MAX_ADDRESS - NewEventHdrSize) {\r
return EFI_OUT_OF_RESOURCES;\r
\r
NewLogSize = NewEventHdrSize + NewEventSize;\r
\r
- if (NewLogSize > MAX_ADDRESS - *LogSize) {\r
+ if (NewLogSize > MAX_ADDRESS - EventLogAreaStruct->EventLogSize) {\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
- if (NewLogSize + *LogSize > MaxSize) {\r
- DEBUG ((EFI_D_INFO, " MaxSize - 0x%x\n", MaxSize));\r
- DEBUG ((EFI_D_INFO, " NewLogSize - 0x%x\n", NewLogSize));\r
- DEBUG ((EFI_D_INFO, " LogSize - 0x%x\n", *LogSize));\r
- DEBUG ((EFI_D_INFO, "TcgCommLogEvent - %r\n", EFI_OUT_OF_RESOURCES));\r
+ if (NewLogSize + EventLogAreaStruct->EventLogSize > EventLogAreaStruct->Laml) {\r
+ DEBUG ((DEBUG_INFO, " Laml - 0x%x\n", EventLogAreaStruct->Laml));\r
+ DEBUG ((DEBUG_INFO, " NewLogSize - 0x%x\n", NewLogSize));\r
+ DEBUG ((DEBUG_INFO, " LogSize - 0x%x\n", EventLogAreaStruct->EventLogSize));\r
+ DEBUG ((DEBUG_INFO, "TcgCommLogEvent - %r\n", EFI_OUT_OF_RESOURCES));\r
return EFI_OUT_OF_RESOURCES;\r
}\r
\r
- *EventLogPtr += *LogSize;\r
- *LogSize += NewLogSize;\r
- CopyMem (*EventLogPtr, NewEventHdr, NewEventHdrSize);\r
+ //\r
+ // Check 800-155 event\r
+ // Record to 800-155 event offset only.\r
+ // If the offset is 0, no need to record.\r
+ //\r
+ Record800155Event = Is800155Event (NewEventHdr, NewEventHdrSize, NewEventData, NewEventSize);\r
+ if (Record800155Event) {\r
+ if (EventLogAreaStruct->Next800155EventOffset != 0) {\r
+ CopyMem (\r
+ (UINT8 *)(UINTN)EventLogAreaStruct->Lasa + EventLogAreaStruct->Next800155EventOffset + NewLogSize,\r
+ (UINT8 *)(UINTN)EventLogAreaStruct->Lasa + EventLogAreaStruct->Next800155EventOffset,\r
+ EventLogAreaStruct->EventLogSize - EventLogAreaStruct->Next800155EventOffset\r
+ );\r
+\r
+ CopyMem (\r
+ (UINT8 *)(UINTN)EventLogAreaStruct->Lasa + EventLogAreaStruct->Next800155EventOffset,\r
+ NewEventHdr,\r
+ NewEventHdrSize\r
+ );\r
+ CopyMem (\r
+ (UINT8 *)(UINTN)EventLogAreaStruct->Lasa + EventLogAreaStruct->Next800155EventOffset + NewEventHdrSize,\r
+ NewEventData,\r
+ NewEventSize\r
+ );\r
+\r
+ EventLogAreaStruct->Next800155EventOffset += NewLogSize;\r
+ EventLogAreaStruct->LastEvent += NewLogSize;\r
+ EventLogAreaStruct->EventLogSize += NewLogSize;\r
+ }\r
+\r
+ return EFI_SUCCESS;\r
+ }\r
+\r
+ EventLogAreaStruct->LastEvent = (UINT8 *)(UINTN)EventLogAreaStruct->Lasa + EventLogAreaStruct->EventLogSize;\r
+ EventLogAreaStruct->EventLogSize += NewLogSize;\r
+ CopyMem (EventLogAreaStruct->LastEvent, NewEventHdr, NewEventHdrSize);\r
CopyMem (\r
- *EventLogPtr + NewEventHdrSize,\r
+ EventLogAreaStruct->LastEvent + NewEventHdrSize,\r
NewEventData,\r
NewEventSize\r
);\r
**/\r
EFI_STATUS\r
TcgDxeLogEvent (\r
- IN EFI_TCG2_EVENT_LOG_FORMAT EventLogFormat,\r
- IN VOID *NewEventHdr,\r
- IN UINT32 NewEventHdrSize,\r
- IN UINT8 *NewEventData,\r
- IN UINT32 NewEventSize\r
+ IN EFI_TCG2_EVENT_LOG_FORMAT EventLogFormat,\r
+ IN VOID *NewEventHdr,\r
+ IN UINT32 NewEventHdrSize,\r
+ IN UINT8 *NewEventData,\r
+ IN UINT32 NewEventSize\r
)\r
{\r
- EFI_STATUS Status;\r
- UINTN Index;\r
- TCG_EVENT_LOG_AREA_STRUCT *EventLogAreaStruct;\r
+ EFI_STATUS Status;\r
+ UINTN Index;\r
+ TCG_EVENT_LOG_AREA_STRUCT *EventLogAreaStruct;\r
\r
- for (Index = 0; Index < sizeof(mTcg2EventInfo)/sizeof(mTcg2EventInfo[0]); Index++) {\r
+ for (Index = 0; Index < sizeof (mTcg2EventInfo)/sizeof (mTcg2EventInfo[0]); Index++) {\r
if (EventLogFormat == mTcg2EventInfo[Index].LogFormat) {\r
break;\r
}\r
}\r
\r
- if (Index == sizeof(mTcg2EventInfo)/sizeof(mTcg2EventInfo[0])) {\r
+ if (Index == sizeof (mTcg2EventInfo)/sizeof (mTcg2EventInfo[0])) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
return EFI_VOLUME_FULL;\r
}\r
\r
- EventLogAreaStruct->LastEvent = (UINT8*)(UINTN)EventLogAreaStruct->Lasa;\r
Status = TcgCommLogEvent (\r
- &EventLogAreaStruct->LastEvent,\r
- &EventLogAreaStruct->EventLogSize,\r
- (UINTN)EventLogAreaStruct->Laml,\r
+ EventLogAreaStruct,\r
NewEventHdr,\r
NewEventHdrSize,\r
NewEventData,\r
//\r
return EFI_SUCCESS;\r
}\r
+\r
EventLogAreaStruct = &mTcgDxeData.FinalEventLogAreaStruct[Index];\r
\r
if (EventLogAreaStruct->EventLogTruncated) {\r
return EFI_VOLUME_FULL;\r
}\r
\r
- EventLogAreaStruct->LastEvent = (UINT8*)(UINTN)EventLogAreaStruct->Lasa;\r
Status = TcgCommLogEvent (\r
- &EventLogAreaStruct->LastEvent,\r
- &EventLogAreaStruct->EventLogSize,\r
- (UINTN)EventLogAreaStruct->Laml,\r
+ EventLogAreaStruct,\r
NewEventHdr,\r
NewEventHdrSize,\r
NewEventData,\r
//\r
// Increase the NumberOfEvents in FinalEventsTable\r
//\r
- (mTcgDxeData.FinalEventsTable[Index])->NumberOfEvents ++;\r
- DEBUG ((EFI_D_INFO, "FinalEventsTable->NumberOfEvents - 0x%x\n", (mTcgDxeData.FinalEventsTable[Index])->NumberOfEvents));\r
- DEBUG ((EFI_D_INFO, " Size - 0x%x\n", (UINTN)EventLogAreaStruct->EventLogSize));\r
+ (mTcgDxeData.FinalEventsTable[Index])->NumberOfEvents++;\r
+ DEBUG ((DEBUG_INFO, "FinalEventsTable->NumberOfEvents - 0x%x\n", (mTcgDxeData.FinalEventsTable[Index])->NumberOfEvents));\r
+ DEBUG ((DEBUG_INFO, " Size - 0x%x\n", (UINTN)EventLogAreaStruct->EventLogSize));\r
}\r
}\r
\r
**/\r
UINT32\r
GetDigestListBinSize (\r
- IN VOID *DigestListBin\r
+ IN VOID *DigestListBin\r
)\r
{\r
- UINTN Index;\r
- UINT16 DigestSize;\r
- UINT32 TotalSize;\r
- UINT32 Count;\r
- TPMI_ALG_HASH HashAlg;\r
-\r
- Count = ReadUnaligned32 (DigestListBin);\r
- TotalSize = sizeof(Count);\r
- DigestListBin = (UINT8 *)DigestListBin + sizeof(Count);\r
+ UINTN Index;\r
+ UINT16 DigestSize;\r
+ UINT32 TotalSize;\r
+ UINT32 Count;\r
+ TPMI_ALG_HASH HashAlg;\r
+\r
+ Count = ReadUnaligned32 (DigestListBin);\r
+ TotalSize = sizeof (Count);\r
+ DigestListBin = (UINT8 *)DigestListBin + sizeof (Count);\r
for (Index = 0; Index < Count; Index++) {\r
- HashAlg = ReadUnaligned16 (DigestListBin);\r
- TotalSize += sizeof(HashAlg);\r
- DigestListBin = (UINT8 *)DigestListBin + sizeof(HashAlg);\r
+ HashAlg = ReadUnaligned16 (DigestListBin);\r
+ TotalSize += sizeof (HashAlg);\r
+ DigestListBin = (UINT8 *)DigestListBin + sizeof (HashAlg);\r
\r
- DigestSize = GetHashSizeFromAlgo (HashAlg);\r
- TotalSize += DigestSize;\r
+ DigestSize = GetHashSizeFromAlgo (HashAlg);\r
+ TotalSize += DigestSize;\r
DigestListBin = (UINT8 *)DigestListBin + DigestSize;\r
}\r
\r
**/\r
VOID *\r
CopyDigestListBinToBuffer (\r
- IN OUT VOID *Buffer,\r
- IN VOID *DigestListBin,\r
- IN UINT32 HashAlgorithmMask,\r
- OUT UINT32 *HashAlgorithmMaskCopied\r
+ IN OUT VOID *Buffer,\r
+ IN VOID *DigestListBin,\r
+ IN UINT32 HashAlgorithmMask,\r
+ OUT UINT32 *HashAlgorithmMaskCopied\r
)\r
{\r
- UINTN Index;\r
- UINT16 DigestSize;\r
- UINT32 Count;\r
- TPMI_ALG_HASH HashAlg;\r
- UINT32 DigestListCount;\r
- UINT32 *DigestListCountPtr;\r
-\r
- DigestListCountPtr = (UINT32 *) Buffer;\r
- DigestListCount = 0;\r
+ UINTN Index;\r
+ UINT16 DigestSize;\r
+ UINT32 Count;\r
+ TPMI_ALG_HASH HashAlg;\r
+ UINT32 DigestListCount;\r
+ UINT32 *DigestListCountPtr;\r
+\r
+ DigestListCountPtr = (UINT32 *)Buffer;\r
+ DigestListCount = 0;\r
(*HashAlgorithmMaskCopied) = 0;\r
\r
- Count = ReadUnaligned32 (DigestListBin);\r
- Buffer = (UINT8 *)Buffer + sizeof(Count);\r
- DigestListBin = (UINT8 *)DigestListBin + sizeof(Count);\r
+ Count = ReadUnaligned32 (DigestListBin);\r
+ Buffer = (UINT8 *)Buffer + sizeof (Count);\r
+ DigestListBin = (UINT8 *)DigestListBin + sizeof (Count);\r
for (Index = 0; Index < Count; Index++) {\r
- HashAlg = ReadUnaligned16 (DigestListBin);\r
- DigestListBin = (UINT8 *)DigestListBin + sizeof(HashAlg);\r
- DigestSize = GetHashSizeFromAlgo (HashAlg);\r
+ HashAlg = ReadUnaligned16 (DigestListBin);\r
+ DigestListBin = (UINT8 *)DigestListBin + sizeof (HashAlg);\r
+ DigestSize = GetHashSizeFromAlgo (HashAlg);\r
\r
- if (IsHashAlgSupportedInHashAlgorithmMask(HashAlg, HashAlgorithmMask)) {\r
- CopyMem (Buffer, &HashAlg, sizeof(HashAlg));\r
- Buffer = (UINT8 *)Buffer + sizeof(HashAlg);\r
+ if (IsHashAlgSupportedInHashAlgorithmMask (HashAlg, HashAlgorithmMask)) {\r
+ CopyMem (Buffer, &HashAlg, sizeof (HashAlg));\r
+ Buffer = (UINT8 *)Buffer + sizeof (HashAlg);\r
CopyMem (Buffer, DigestListBin, DigestSize);\r
Buffer = (UINT8 *)Buffer + DigestSize;\r
DigestListCount++;\r
} else {\r
DEBUG ((DEBUG_ERROR, "WARNING: CopyDigestListBinToBuffer Event log has HashAlg unsupported by PCR bank (0x%x)\n", HashAlg));\r
}\r
+\r
DigestListBin = (UINT8 *)DigestListBin + DigestSize;\r
}\r
+\r
WriteUnaligned32 (DigestListCountPtr, DigestListCount);\r
\r
return Buffer;\r
**/\r
EFI_STATUS\r
TcgDxeLogHashEvent (\r
- IN TPML_DIGEST_VALUES *DigestList,\r
- IN OUT TCG_PCR_EVENT_HDR *NewEventHdr,\r
- IN UINT8 *NewEventData\r
+ IN TPML_DIGEST_VALUES *DigestList,\r
+ IN OUT TCG_PCR_EVENT_HDR *NewEventHdr,\r
+ IN UINT8 *NewEventData\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_TPL OldTpl;\r
- UINTN Index;\r
- EFI_STATUS RetStatus;\r
- TCG_PCR_EVENT2 TcgPcrEvent2;\r
- UINT8 *DigestBuffer;\r
- UINT32 *EventSizePtr;\r
+ EFI_STATUS Status;\r
+ EFI_TPL OldTpl;\r
+ UINTN Index;\r
+ EFI_STATUS RetStatus;\r
+ TCG_PCR_EVENT2 TcgPcrEvent2;\r
+ UINT8 *DigestBuffer;\r
+ UINT32 *EventSizePtr;\r
\r
- DEBUG ((EFI_D_INFO, "SupportedEventLogs - 0x%08x\n", mTcgDxeData.BsCap.SupportedEventLogs));\r
+ DEBUG ((DEBUG_INFO, "SupportedEventLogs - 0x%08x\n", mTcgDxeData.BsCap.SupportedEventLogs));\r
\r
RetStatus = EFI_SUCCESS;\r
- for (Index = 0; Index < sizeof(mTcg2EventInfo)/sizeof(mTcg2EventInfo[0]); Index++) {\r
+ for (Index = 0; Index < sizeof (mTcg2EventInfo)/sizeof (mTcg2EventInfo[0]); Index++) {\r
if ((mTcgDxeData.BsCap.SupportedEventLogs & mTcg2EventInfo[Index].LogFormat) != 0) {\r
- DEBUG ((EFI_D_INFO, " LogFormat - 0x%08x\n", mTcg2EventInfo[Index].LogFormat));\r
+ DEBUG ((DEBUG_INFO, " LogFormat - 0x%08x\n", mTcg2EventInfo[Index].LogFormat));\r
switch (mTcg2EventInfo[Index].LogFormat) {\r
- case EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2:\r
- Status = GetDigestFromDigestList (TPM_ALG_SHA1, DigestList, &NewEventHdr->Digest);\r
- if (!EFI_ERROR (Status)) {\r
+ case EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2:\r
+ Status = GetDigestFromDigestList (TPM_ALG_SHA1, DigestList, &NewEventHdr->Digest);\r
+ if (!EFI_ERROR (Status)) {\r
+ //\r
+ // Enter critical region\r
+ //\r
+ OldTpl = gBS->RaiseTPL (TPL_HIGH_LEVEL);\r
+ Status = TcgDxeLogEvent (\r
+ mTcg2EventInfo[Index].LogFormat,\r
+ NewEventHdr,\r
+ sizeof (TCG_PCR_EVENT_HDR),\r
+ NewEventData,\r
+ NewEventHdr->EventSize\r
+ );\r
+ if (Status != EFI_SUCCESS) {\r
+ RetStatus = Status;\r
+ }\r
+\r
+ gBS->RestoreTPL (OldTpl);\r
+ //\r
+ // Exit critical region\r
+ //\r
+ }\r
+\r
+ break;\r
+ case EFI_TCG2_EVENT_LOG_FORMAT_TCG_2:\r
+ ZeroMem (&TcgPcrEvent2, sizeof (TcgPcrEvent2));\r
+ TcgPcrEvent2.PCRIndex = NewEventHdr->PCRIndex;\r
+ TcgPcrEvent2.EventType = NewEventHdr->EventType;\r
+ DigestBuffer = (UINT8 *)&TcgPcrEvent2.Digest;\r
+ EventSizePtr = CopyDigestListToBuffer (DigestBuffer, DigestList, mTcgDxeData.BsCap.ActivePcrBanks);\r
+ CopyMem (EventSizePtr, &NewEventHdr->EventSize, sizeof (NewEventHdr->EventSize));\r
+\r
//\r
// Enter critical region\r
//\r
OldTpl = gBS->RaiseTPL (TPL_HIGH_LEVEL);\r
Status = TcgDxeLogEvent (\r
mTcg2EventInfo[Index].LogFormat,\r
- NewEventHdr,\r
- sizeof(TCG_PCR_EVENT_HDR),\r
+ &TcgPcrEvent2,\r
+ sizeof (TcgPcrEvent2.PCRIndex) + sizeof (TcgPcrEvent2.EventType) + GetDigestListBinSize (DigestBuffer) + sizeof (TcgPcrEvent2.EventSize),\r
NewEventData,\r
NewEventHdr->EventSize\r
);\r
if (Status != EFI_SUCCESS) {\r
RetStatus = Status;\r
}\r
+\r
gBS->RestoreTPL (OldTpl);\r
//\r
// Exit critical region\r
//\r
- }\r
- break;\r
- case EFI_TCG2_EVENT_LOG_FORMAT_TCG_2:\r
- ZeroMem (&TcgPcrEvent2, sizeof(TcgPcrEvent2));\r
- TcgPcrEvent2.PCRIndex = NewEventHdr->PCRIndex;\r
- TcgPcrEvent2.EventType = NewEventHdr->EventType;\r
- DigestBuffer = (UINT8 *)&TcgPcrEvent2.Digest;\r
- EventSizePtr = CopyDigestListToBuffer (DigestBuffer, DigestList, mTcgDxeData.BsCap.ActivePcrBanks);\r
- CopyMem (EventSizePtr, &NewEventHdr->EventSize, sizeof(NewEventHdr->EventSize));\r
-\r
- //\r
- // Enter critical region\r
- //\r
- OldTpl = gBS->RaiseTPL (TPL_HIGH_LEVEL);\r
- Status = TcgDxeLogEvent (\r
- mTcg2EventInfo[Index].LogFormat,\r
- &TcgPcrEvent2,\r
- sizeof(TcgPcrEvent2.PCRIndex) + sizeof(TcgPcrEvent2.EventType) + GetDigestListBinSize (DigestBuffer) + sizeof(TcgPcrEvent2.EventSize),\r
- NewEventData,\r
- NewEventHdr->EventSize\r
- );\r
- if (Status != EFI_SUCCESS) {\r
- RetStatus = Status;\r
- }\r
- gBS->RestoreTPL (OldTpl);\r
- //\r
- // Exit critical region\r
- //\r
- break;\r
+ break;\r
}\r
}\r
}\r
**/\r
EFI_STATUS\r
TcgDxeHashLogExtendEvent (\r
- IN UINT64 Flags,\r
- IN UINT8 *HashData,\r
- IN UINT64 HashDataLen,\r
- IN OUT TCG_PCR_EVENT_HDR *NewEventHdr,\r
- IN UINT8 *NewEventData\r
+ IN UINT64 Flags,\r
+ IN UINT8 *HashData,\r
+ IN UINT64 HashDataLen,\r
+ IN OUT TCG_PCR_EVENT_HDR *NewEventHdr,\r
+ IN UINT8 *NewEventData\r
)\r
{\r
- EFI_STATUS Status;\r
- TPML_DIGEST_VALUES DigestList;\r
+ EFI_STATUS Status;\r
+ TPML_DIGEST_VALUES DigestList;\r
+ TCG_PCR_EVENT2_HDR NoActionEvent;\r
\r
if (!mTcgDxeData.BsCap.TPMPresentFlag) {\r
return EFI_DEVICE_ERROR;\r
}\r
\r
+ if (NewEventHdr->EventType == EV_NO_ACTION) {\r
+ //\r
+ // Do not do TPM extend for EV_NO_ACTION\r
+ //\r
+ Status = EFI_SUCCESS;\r
+ InitNoActionEvent (&NoActionEvent, NewEventHdr->EventSize);\r
+ if ((Flags & EFI_TCG2_EXTEND_ONLY) == 0) {\r
+ Status = TcgDxeLogHashEvent (&(NoActionEvent.Digests), NewEventHdr, NewEventData);\r
+ }\r
+\r
+ return Status;\r
+ }\r
+\r
Status = HashAndExtend (\r
NewEventHdr->PCRIndex,\r
HashData,\r
}\r
\r
if (Status == EFI_DEVICE_ERROR) {\r
- DEBUG ((EFI_D_ERROR, "TcgDxeHashLogExtendEvent - %r. Disable TPM.\n", Status));\r
+ DEBUG ((DEBUG_ERROR, "TcgDxeHashLogExtendEvent - %r. Disable TPM.\n", Status));\r
mTcgDxeData.BsCap.TPMPresentFlag = FALSE;\r
REPORT_STATUS_CODE (\r
EFI_ERROR_CODE | EFI_ERROR_MINOR,\r
EFI_STATUS\r
EFIAPI\r
Tcg2HashLogExtendEvent (\r
- IN EFI_TCG2_PROTOCOL *This,\r
- IN UINT64 Flags,\r
- IN EFI_PHYSICAL_ADDRESS DataToHash,\r
- IN UINT64 DataToHashLen,\r
- IN EFI_TCG2_EVENT *Event\r
+ IN EFI_TCG2_PROTOCOL *This,\r
+ IN UINT64 Flags,\r
+ IN EFI_PHYSICAL_ADDRESS DataToHash,\r
+ IN UINT64 DataToHashLen,\r
+ IN EFI_TCG2_EVENT *Event\r
)\r
{\r
- EFI_STATUS Status;\r
- TCG_PCR_EVENT_HDR NewEventHdr;\r
- TPML_DIGEST_VALUES DigestList;\r
+ EFI_STATUS Status;\r
+ TCG_PCR_EVENT_HDR NewEventHdr;\r
+ TPML_DIGEST_VALUES DigestList;\r
\r
DEBUG ((DEBUG_VERBOSE, "Tcg2HashLogExtendEvent ...\n"));\r
\r
- if ((This == NULL) || (DataToHash == 0) || (Event == NULL)) {\r
+ if ((This == NULL) || (Event == NULL)) {\r
+ return EFI_INVALID_PARAMETER;\r
+ }\r
+\r
+ //\r
+ // Do not check hash data size for EV_NO_ACTION event.\r
+ //\r
+ if ((Event->Header.EventType != EV_NO_ACTION) && (DataToHash == 0)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
return EFI_DEVICE_ERROR;\r
}\r
\r
- if (Event->Size < Event->Header.HeaderSize + sizeof(UINT32)) {\r
+ if (Event->Size < Event->Header.HeaderSize + sizeof (UINT32)) {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
\r
NewEventHdr.PCRIndex = Event->Header.PCRIndex;\r
NewEventHdr.EventType = Event->Header.EventType;\r
- NewEventHdr.EventSize = Event->Size - sizeof(UINT32) - Event->Header.HeaderSize;\r
+ NewEventHdr.EventSize = Event->Size - sizeof (UINT32) - Event->Header.HeaderSize;\r
if ((Flags & PE_COFF_IMAGE) != 0) {\r
Status = MeasurePeImageAndExtend (\r
NewEventHdr.PCRIndex,\r
Status = TcgDxeLogHashEvent (&DigestList, &NewEventHdr, Event->Event);\r
}\r
}\r
+\r
if (Status == EFI_DEVICE_ERROR) {\r
- DEBUG ((EFI_D_ERROR, "MeasurePeImageAndExtend - %r. Disable TPM.\n", Status));\r
+ DEBUG ((DEBUG_ERROR, "MeasurePeImageAndExtend - %r. Disable TPM.\n", Status));\r
mTcgDxeData.BsCap.TPMPresentFlag = FALSE;\r
REPORT_STATUS_CODE (\r
EFI_ERROR_CODE | EFI_ERROR_MINOR,\r
} else {\r
Status = TcgDxeHashLogExtendEvent (\r
Flags,\r
- (UINT8 *) (UINTN) DataToHash,\r
+ (UINT8 *)(UINTN)DataToHash,\r
DataToHashLen,\r
&NewEventHdr,\r
Event->Event\r
);\r
}\r
+\r
DEBUG ((DEBUG_VERBOSE, "Tcg2HashLogExtendEvent - %r\n", Status));\r
return Status;\r
}\r
EFI_STATUS\r
EFIAPI\r
Tcg2SubmitCommand (\r
- IN EFI_TCG2_PROTOCOL *This,\r
- IN UINT32 InputParameterBlockSize,\r
- IN UINT8 *InputParameterBlock,\r
- IN UINT32 OutputParameterBlockSize,\r
- IN UINT8 *OutputParameterBlock\r
+ IN EFI_TCG2_PROTOCOL *This,\r
+ IN UINT32 InputParameterBlockSize,\r
+ IN UINT8 *InputParameterBlock,\r
+ IN UINT32 OutputParameterBlockSize,\r
+ IN UINT8 *OutputParameterBlock\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
- DEBUG ((EFI_D_INFO, "Tcg2SubmitCommand ...\n"));\r
+ DEBUG ((DEBUG_INFO, "Tcg2SubmitCommand ...\n"));\r
\r
if ((This == NULL) ||\r
(InputParameterBlockSize == 0) || (InputParameterBlock == NULL) ||\r
- (OutputParameterBlockSize == 0) || (OutputParameterBlock == NULL)) {\r
+ (OutputParameterBlockSize == 0) || (OutputParameterBlock == NULL))\r
+ {\r
return EFI_INVALID_PARAMETER;\r
}\r
\r
if (InputParameterBlockSize > mTcgDxeData.BsCap.MaxCommandSize) {\r
return EFI_INVALID_PARAMETER;\r
}\r
+\r
if (OutputParameterBlockSize > mTcgDxeData.BsCap.MaxResponseSize) {\r
return EFI_INVALID_PARAMETER;\r
}\r
&OutputParameterBlockSize,\r
OutputParameterBlock\r
);\r
- DEBUG ((EFI_D_INFO, "Tcg2SubmitCommand - %r\n", Status));\r
+ DEBUG ((DEBUG_INFO, "Tcg2SubmitCommand - %r\n", Status));\r
return Status;\r
}\r
\r
EFI_STATUS\r
EFIAPI\r
Tcg2GetActivePCRBanks (\r
- IN EFI_TCG2_PROTOCOL *This,\r
- OUT UINT32 *ActivePcrBanks\r
+ IN EFI_TCG2_PROTOCOL *This,\r
+ OUT UINT32 *ActivePcrBanks\r
)\r
{\r
if (ActivePcrBanks == NULL) {\r
return EFI_INVALID_PARAMETER;\r
}\r
+\r
*ActivePcrBanks = mTcgDxeData.BsCap.ActivePcrBanks;\r
return EFI_SUCCESS;\r
}\r
EFI_STATUS\r
EFIAPI\r
Tcg2SetActivePCRBanks (\r
- IN EFI_TCG2_PROTOCOL *This,\r
- IN UINT32 ActivePcrBanks\r
+ IN EFI_TCG2_PROTOCOL *This,\r
+ IN UINT32 ActivePcrBanks\r
)\r
{\r
EFI_STATUS Status;\r
UINT32 ReturnCode;\r
\r
- DEBUG ((EFI_D_INFO, "Tcg2SetActivePCRBanks ... (0x%x)\n", ActivePcrBanks));\r
+ DEBUG ((DEBUG_INFO, "Tcg2SetActivePCRBanks ... (0x%x)\n", ActivePcrBanks));\r
\r
if (ActivePcrBanks == 0) {\r
return EFI_INVALID_PARAMETER;\r
}\r
+\r
if ((ActivePcrBanks & (~mTcgDxeData.BsCap.HashAlgorithmBitmap)) != 0) {\r
return EFI_INVALID_PARAMETER;\r
}\r
+\r
if (ActivePcrBanks == mTcgDxeData.BsCap.ActivePcrBanks) {\r
//\r
// Need clear previous SET_PCR_BANKS setting\r
Status = EFI_DEVICE_ERROR;\r
}\r
\r
- DEBUG ((EFI_D_INFO, "Tcg2SetActivePCRBanks - %r\n", Status));\r
+ DEBUG ((DEBUG_INFO, "Tcg2SetActivePCRBanks - %r\n", Status));\r
\r
return Status;\r
}\r
}\r
}\r
\r
-EFI_TCG2_PROTOCOL mTcg2Protocol = {\r
- Tcg2GetCapability,\r
- Tcg2GetEventLog,\r
- Tcg2HashLogExtendEvent,\r
- Tcg2SubmitCommand,\r
- Tcg2GetActivePCRBanks,\r
- Tcg2SetActivePCRBanks,\r
- Tcg2GetResultOfSetActivePcrBanks,\r
+EFI_TCG2_PROTOCOL mTcg2Protocol = {\r
+ Tcg2GetCapability,\r
+ Tcg2GetEventLog,\r
+ Tcg2HashLogExtendEvent,\r
+ Tcg2SubmitCommand,\r
+ Tcg2GetActivePCRBanks,\r
+ Tcg2SetActivePCRBanks,\r
+ Tcg2GetResultOfSetActivePcrBanks,\r
};\r
\r
/**\r
VOID\r
)\r
{\r
- EFI_STATUS Status;\r
- VOID *TcgEvent;\r
- EFI_PEI_HOB_POINTERS GuidHob;\r
- EFI_PHYSICAL_ADDRESS Lasa;\r
- UINTN Index;\r
- VOID *DigestListBin;\r
- TPML_DIGEST_VALUES TempDigestListBin;\r
- UINT32 DigestListBinSize;\r
- UINT8 *Event;\r
- UINT32 EventSize;\r
- UINT32 *EventSizePtr;\r
- UINT32 HashAlgorithmMaskCopied;\r
- TCG_EfiSpecIDEventStruct *TcgEfiSpecIdEventStruct;\r
- UINT8 TempBuf[sizeof(TCG_EfiSpecIDEventStruct) + sizeof(UINT32) + (HASH_COUNT * sizeof(TCG_EfiSpecIdEventAlgorithmSize)) + sizeof(UINT8)];\r
- TCG_PCR_EVENT_HDR SpecIdEvent;\r
- TCG_PCR_EVENT2_HDR NoActionEvent;\r
- TCG_EfiSpecIdEventAlgorithmSize *DigestSize;\r
- TCG_EfiSpecIdEventAlgorithmSize *TempDigestSize;\r
- UINT8 *VendorInfoSize;\r
- UINT32 NumberOfAlgorithms;\r
- TCG_EfiStartupLocalityEvent StartupLocalityEvent;\r
-\r
- DEBUG ((EFI_D_INFO, "SetupEventLog\n"));\r
+ EFI_STATUS Status;\r
+ VOID *TcgEvent;\r
+ EFI_PEI_HOB_POINTERS GuidHob;\r
+ EFI_PHYSICAL_ADDRESS Lasa;\r
+ UINTN Index;\r
+ VOID *DigestListBin;\r
+ TPML_DIGEST_VALUES TempDigestListBin;\r
+ UINT32 DigestListBinSize;\r
+ UINT8 *Event;\r
+ UINT32 EventSize;\r
+ UINT32 *EventSizePtr;\r
+ UINT32 HashAlgorithmMaskCopied;\r
+ TCG_EfiSpecIDEventStruct *TcgEfiSpecIdEventStruct;\r
+ UINT8 TempBuf[sizeof (TCG_EfiSpecIDEventStruct) + sizeof (UINT32) + (HASH_COUNT * sizeof (TCG_EfiSpecIdEventAlgorithmSize)) + sizeof (UINT8)];\r
+ TCG_PCR_EVENT_HDR SpecIdEvent;\r
+ TCG_PCR_EVENT2_HDR NoActionEvent;\r
+ TCG_EfiSpecIdEventAlgorithmSize *DigestSize;\r
+ TCG_EfiSpecIdEventAlgorithmSize *TempDigestSize;\r
+ UINT8 *VendorInfoSize;\r
+ UINT32 NumberOfAlgorithms;\r
+ TCG_EfiStartupLocalityEvent StartupLocalityEvent;\r
+\r
+ DEBUG ((DEBUG_INFO, "SetupEventLog\n"));\r
\r
//\r
// 1. Create Log Area\r
//\r
- for (Index = 0; Index < sizeof(mTcg2EventInfo)/sizeof(mTcg2EventInfo[0]); Index++) {\r
+ for (Index = 0; Index < sizeof (mTcg2EventInfo)/sizeof (mTcg2EventInfo[0]); Index++) {\r
if ((mTcgDxeData.BsCap.SupportedEventLogs & mTcg2EventInfo[Index].LogFormat) != 0) {\r
mTcgDxeData.EventLogAreaStruct[Index].EventLogFormat = mTcg2EventInfo[Index].LogFormat;\r
- Status = gBS->AllocatePages (\r
- AllocateAnyPages,\r
- EfiBootServicesData,\r
- EFI_SIZE_TO_PAGES (PcdGet32 (PcdTcgLogAreaMinLen)),\r
- &Lasa\r
- );\r
+ if (PcdGet8 (PcdTpm2AcpiTableRev) >= 4) {\r
+ Status = gBS->AllocatePages (\r
+ AllocateAnyPages,\r
+ EfiACPIMemoryNVS,\r
+ EFI_SIZE_TO_PAGES (PcdGet32 (PcdTcgLogAreaMinLen)),\r
+ &Lasa\r
+ );\r
+ } else {\r
+ Status = gBS->AllocatePages (\r
+ AllocateAnyPages,\r
+ EfiBootServicesData,\r
+ EFI_SIZE_TO_PAGES (PcdGet32 (PcdTcgLogAreaMinLen)),\r
+ &Lasa\r
+ );\r
+ }\r
+\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
- mTcgDxeData.EventLogAreaStruct[Index].Lasa = Lasa;\r
- mTcgDxeData.EventLogAreaStruct[Index].Laml = PcdGet32 (PcdTcgLogAreaMinLen);\r
+\r
+ mTcgDxeData.EventLogAreaStruct[Index].Lasa = Lasa;\r
+ mTcgDxeData.EventLogAreaStruct[Index].Laml = PcdGet32 (PcdTcgLogAreaMinLen);\r
+ mTcgDxeData.EventLogAreaStruct[Index].Next800155EventOffset = 0;\r
+\r
+ if ((PcdGet8 (PcdTpm2AcpiTableRev) >= 4) ||\r
+ (mTcg2EventInfo[Index].LogFormat == EFI_TCG2_EVENT_LOG_FORMAT_TCG_2))\r
+ {\r
+ //\r
+ // Report TCG2 event log address and length, so that they can be reported in TPM2 ACPI table.\r
+ // Ignore the return status, because those fields are optional.\r
+ //\r
+ PcdSet32S (PcdTpm2AcpiTableLaml, (UINT32)mTcgDxeData.EventLogAreaStruct[Index].Laml);\r
+ PcdSet64S (PcdTpm2AcpiTableLasa, mTcgDxeData.EventLogAreaStruct[Index].Lasa);\r
+ }\r
+\r
//\r
// To initialize them as 0xFF is recommended\r
// because the OS can know the last entry for that.\r
// TcgEfiSpecIdEventStruct\r
//\r
TcgEfiSpecIdEventStruct = (TCG_EfiSpecIDEventStruct *)TempBuf;\r
- CopyMem (TcgEfiSpecIdEventStruct->signature, TCG_EfiSpecIDEventStruct_SIGNATURE_03, sizeof(TcgEfiSpecIdEventStruct->signature));\r
- TcgEfiSpecIdEventStruct->platformClass = PcdGet8 (PcdTpmPlatformClass);\r
+ CopyMem (TcgEfiSpecIdEventStruct->signature, TCG_EfiSpecIDEventStruct_SIGNATURE_03, sizeof (TcgEfiSpecIdEventStruct->signature));\r
+ TcgEfiSpecIdEventStruct->platformClass = PcdGet8 (PcdTpmPlatformClass);\r
TcgEfiSpecIdEventStruct->specVersionMajor = TCG_EfiSpecIDEventStruct_SPEC_VERSION_MAJOR_TPM2;\r
TcgEfiSpecIdEventStruct->specVersionMinor = TCG_EfiSpecIDEventStruct_SPEC_VERSION_MINOR_TPM2;\r
- TcgEfiSpecIdEventStruct->specErrata = TCG_EfiSpecIDEventStruct_SPEC_ERRATA_TPM2;\r
- TcgEfiSpecIdEventStruct->uintnSize = sizeof(UINTN)/sizeof(UINT32);\r
- NumberOfAlgorithms = 0;\r
- DigestSize = (TCG_EfiSpecIdEventAlgorithmSize *)((UINT8 *)TcgEfiSpecIdEventStruct + sizeof(*TcgEfiSpecIdEventStruct) + sizeof(NumberOfAlgorithms));\r
+ TcgEfiSpecIdEventStruct->specErrata = (UINT8)PcdGet32 (PcdTcgPfpMeasurementRevision);\r
+ TcgEfiSpecIdEventStruct->uintnSize = sizeof (UINTN)/sizeof (UINT32);\r
+ NumberOfAlgorithms = 0;\r
+ DigestSize = (TCG_EfiSpecIdEventAlgorithmSize *)((UINT8 *)TcgEfiSpecIdEventStruct + sizeof (*TcgEfiSpecIdEventStruct) + sizeof (NumberOfAlgorithms));\r
if ((mTcgDxeData.BsCap.ActivePcrBanks & EFI_TCG2_BOOT_HASH_ALG_SHA1) != 0) {\r
- TempDigestSize = DigestSize;\r
- TempDigestSize += NumberOfAlgorithms;\r
+ TempDigestSize = DigestSize;\r
+ TempDigestSize += NumberOfAlgorithms;\r
TempDigestSize->algorithmId = TPM_ALG_SHA1;\r
- TempDigestSize->digestSize = SHA1_DIGEST_SIZE;\r
+ TempDigestSize->digestSize = SHA1_DIGEST_SIZE;\r
NumberOfAlgorithms++;\r
}\r
+\r
if ((mTcgDxeData.BsCap.ActivePcrBanks & EFI_TCG2_BOOT_HASH_ALG_SHA256) != 0) {\r
- TempDigestSize = DigestSize;\r
- TempDigestSize += NumberOfAlgorithms;\r
+ TempDigestSize = DigestSize;\r
+ TempDigestSize += NumberOfAlgorithms;\r
TempDigestSize->algorithmId = TPM_ALG_SHA256;\r
- TempDigestSize->digestSize = SHA256_DIGEST_SIZE;\r
+ TempDigestSize->digestSize = SHA256_DIGEST_SIZE;\r
NumberOfAlgorithms++;\r
}\r
+\r
if ((mTcgDxeData.BsCap.ActivePcrBanks & EFI_TCG2_BOOT_HASH_ALG_SHA384) != 0) {\r
- TempDigestSize = DigestSize;\r
- TempDigestSize += NumberOfAlgorithms;\r
+ TempDigestSize = DigestSize;\r
+ TempDigestSize += NumberOfAlgorithms;\r
TempDigestSize->algorithmId = TPM_ALG_SHA384;\r
- TempDigestSize->digestSize = SHA384_DIGEST_SIZE;\r
+ TempDigestSize->digestSize = SHA384_DIGEST_SIZE;\r
NumberOfAlgorithms++;\r
}\r
+\r
if ((mTcgDxeData.BsCap.ActivePcrBanks & EFI_TCG2_BOOT_HASH_ALG_SHA512) != 0) {\r
- TempDigestSize = DigestSize;\r
- TempDigestSize += NumberOfAlgorithms;\r
+ TempDigestSize = DigestSize;\r
+ TempDigestSize += NumberOfAlgorithms;\r
TempDigestSize->algorithmId = TPM_ALG_SHA512;\r
- TempDigestSize->digestSize = SHA512_DIGEST_SIZE;\r
+ TempDigestSize->digestSize = SHA512_DIGEST_SIZE;\r
NumberOfAlgorithms++;\r
}\r
+\r
if ((mTcgDxeData.BsCap.ActivePcrBanks & EFI_TCG2_BOOT_HASH_ALG_SM3_256) != 0) {\r
- TempDigestSize = DigestSize;\r
- TempDigestSize += NumberOfAlgorithms;\r
+ TempDigestSize = DigestSize;\r
+ TempDigestSize += NumberOfAlgorithms;\r
TempDigestSize->algorithmId = TPM_ALG_SM3_256;\r
- TempDigestSize->digestSize = SM3_256_DIGEST_SIZE;\r
+ TempDigestSize->digestSize = SM3_256_DIGEST_SIZE;\r
NumberOfAlgorithms++;\r
}\r
- CopyMem (TcgEfiSpecIdEventStruct + 1, &NumberOfAlgorithms, sizeof(NumberOfAlgorithms));\r
- TempDigestSize = DigestSize;\r
+\r
+ CopyMem (TcgEfiSpecIdEventStruct + 1, &NumberOfAlgorithms, sizeof (NumberOfAlgorithms));\r
+ TempDigestSize = DigestSize;\r
TempDigestSize += NumberOfAlgorithms;\r
- VendorInfoSize = (UINT8 *)TempDigestSize;\r
+ VendorInfoSize = (UINT8 *)TempDigestSize;\r
*VendorInfoSize = 0;\r
\r
- SpecIdEvent.PCRIndex = 0;\r
+ SpecIdEvent.PCRIndex = 0;\r
SpecIdEvent.EventType = EV_NO_ACTION;\r
- ZeroMem (&SpecIdEvent.Digest, sizeof(SpecIdEvent.Digest));\r
+ ZeroMem (&SpecIdEvent.Digest, sizeof (SpecIdEvent.Digest));\r
SpecIdEvent.EventSize = (UINT32)GetTcgEfiSpecIdEventStructSize (TcgEfiSpecIdEventStruct);\r
\r
//\r
Status = TcgDxeLogEvent (\r
mTcg2EventInfo[Index].LogFormat,\r
&SpecIdEvent,\r
- sizeof(SpecIdEvent),\r
+ sizeof (SpecIdEvent),\r
(UINT8 *)TcgEfiSpecIdEventStruct,\r
SpecIdEvent.EventSize\r
);\r
+ //\r
+ // record the offset at the end of 800-155 event.\r
+ // the future 800-155 event can be inserted here.\r
+ //\r
+ mTcgDxeData.EventLogAreaStruct[Index].Next800155EventOffset = \\r
+ mTcgDxeData.EventLogAreaStruct[Index].EventLogSize;\r
+\r
+ //\r
+ // Tcg800155PlatformIdEvent. Event format is TCG_PCR_EVENT2\r
+ //\r
+ GuidHob.Guid = GetFirstGuidHob (&gTcg800155PlatformIdEventHobGuid);\r
+ while (GuidHob.Guid != NULL) {\r
+ InitNoActionEvent (&NoActionEvent, GET_GUID_HOB_DATA_SIZE (GuidHob.Guid));\r
+\r
+ Status = TcgDxeLogEvent (\r
+ mTcg2EventInfo[Index].LogFormat,\r
+ &NoActionEvent,\r
+ sizeof (NoActionEvent.PCRIndex) + sizeof (NoActionEvent.EventType) + GetDigestListBinSize (&NoActionEvent.Digests) + sizeof (NoActionEvent.EventSize),\r
+ GET_GUID_HOB_DATA (GuidHob.Guid),\r
+ GET_GUID_HOB_DATA_SIZE (GuidHob.Guid)\r
+ );\r
+\r
+ GuidHob.Guid = GET_NEXT_HOB (GuidHob);\r
+ GuidHob.Guid = GetNextGuidHob (&gTcg800155PlatformIdEventHobGuid, GuidHob.Guid);\r
+ }\r
\r
//\r
// EfiStartupLocalityEvent. Event format is TCG_PCR_EVENT2\r
// Get Locality Indicator from StartupLocality HOB\r
//\r
StartupLocalityEvent.StartupLocality = *(UINT8 *)(GET_GUID_HOB_DATA (GuidHob.Guid));\r
- CopyMem (StartupLocalityEvent.Signature, TCG_EfiStartupLocalityEvent_SIGNATURE, sizeof(StartupLocalityEvent.Signature));\r
+ CopyMem (StartupLocalityEvent.Signature, TCG_EfiStartupLocalityEvent_SIGNATURE, sizeof (StartupLocalityEvent.Signature));\r
DEBUG ((DEBUG_INFO, "SetupEventLog: Set Locality from HOB into StartupLocalityEvent 0x%02x\n", StartupLocalityEvent.StartupLocality));\r
\r
//\r
// Initialize StartupLocalityEvent\r
//\r
- InitNoActionEvent(&NoActionEvent, sizeof(StartupLocalityEvent));\r
+ InitNoActionEvent (&NoActionEvent, sizeof (StartupLocalityEvent));\r
\r
//\r
// Log EfiStartupLocalityEvent as the second Event\r
Status = TcgDxeLogEvent (\r
mTcg2EventInfo[Index].LogFormat,\r
&NoActionEvent,\r
- sizeof(NoActionEvent.PCRIndex) + sizeof(NoActionEvent.EventType) + GetDigestListBinSize (&NoActionEvent.Digests) + sizeof(NoActionEvent.EventSize),\r
+ sizeof (NoActionEvent.PCRIndex) + sizeof (NoActionEvent.EventType) + GetDigestListBinSize (&NoActionEvent.Digests) + sizeof (NoActionEvent.EventSize),\r
(UINT8 *)&StartupLocalityEvent,\r
- sizeof(StartupLocalityEvent)\r
+ sizeof (StartupLocalityEvent)\r
);\r
-\r
}\r
}\r
}\r
//\r
// 2. Create Final Log Area\r
//\r
- for (Index = 0; Index < sizeof(mTcg2EventInfo)/sizeof(mTcg2EventInfo[0]); Index++) {\r
+ for (Index = 0; Index < sizeof (mTcg2EventInfo)/sizeof (mTcg2EventInfo[0]); Index++) {\r
if ((mTcgDxeData.BsCap.SupportedEventLogs & mTcg2EventInfo[Index].LogFormat) != 0) {\r
if (mTcg2EventInfo[Index].LogFormat == EFI_TCG2_EVENT_LOG_FORMAT_TCG_2) {\r
Status = gBS->AllocatePages (\r
if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
+\r
SetMem ((VOID *)(UINTN)Lasa, PcdGet32 (PcdTcg2FinalLogAreaLen), 0xFF);\r
\r
//\r
// Initialize\r
//\r
- mTcgDxeData.FinalEventsTable[Index] = (VOID *)(UINTN)Lasa;\r
- (mTcgDxeData.FinalEventsTable[Index])->Version = EFI_TCG2_FINAL_EVENTS_TABLE_VERSION;\r
+ mTcgDxeData.FinalEventsTable[Index] = (VOID *)(UINTN)Lasa;\r
+ (mTcgDxeData.FinalEventsTable[Index])->Version = EFI_TCG2_FINAL_EVENTS_TABLE_VERSION;\r
(mTcgDxeData.FinalEventsTable[Index])->NumberOfEvents = 0;\r
\r
- mTcgDxeData.FinalEventLogAreaStruct[Index].EventLogFormat = mTcg2EventInfo[Index].LogFormat;\r
- mTcgDxeData.FinalEventLogAreaStruct[Index].Lasa = Lasa + sizeof(EFI_TCG2_FINAL_EVENTS_TABLE);\r
- mTcgDxeData.FinalEventLogAreaStruct[Index].Laml = PcdGet32 (PcdTcg2FinalLogAreaLen) - sizeof(EFI_TCG2_FINAL_EVENTS_TABLE);\r
- mTcgDxeData.FinalEventLogAreaStruct[Index].EventLogSize = 0;\r
- mTcgDxeData.FinalEventLogAreaStruct[Index].LastEvent = (VOID *)(UINTN)mTcgDxeData.FinalEventLogAreaStruct[Index].Lasa;\r
- mTcgDxeData.FinalEventLogAreaStruct[Index].EventLogStarted = FALSE;\r
- mTcgDxeData.FinalEventLogAreaStruct[Index].EventLogTruncated = FALSE;\r
+ mTcgDxeData.FinalEventLogAreaStruct[Index].EventLogFormat = mTcg2EventInfo[Index].LogFormat;\r
+ mTcgDxeData.FinalEventLogAreaStruct[Index].Lasa = Lasa + sizeof (EFI_TCG2_FINAL_EVENTS_TABLE);\r
+ mTcgDxeData.FinalEventLogAreaStruct[Index].Laml = PcdGet32 (PcdTcg2FinalLogAreaLen) - sizeof (EFI_TCG2_FINAL_EVENTS_TABLE);\r
+ mTcgDxeData.FinalEventLogAreaStruct[Index].EventLogSize = 0;\r
+ mTcgDxeData.FinalEventLogAreaStruct[Index].LastEvent = (VOID *)(UINTN)mTcgDxeData.FinalEventLogAreaStruct[Index].Lasa;\r
+ mTcgDxeData.FinalEventLogAreaStruct[Index].EventLogStarted = FALSE;\r
+ mTcgDxeData.FinalEventLogAreaStruct[Index].EventLogTruncated = FALSE;\r
+ mTcgDxeData.FinalEventLogAreaStruct[Index].Next800155EventOffset = 0;\r
\r
//\r
// Install to configuration table for EFI_TCG2_EVENT_LOG_FORMAT_TCG_2\r
//\r
// No need to handle EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2\r
//\r
- mTcgDxeData.FinalEventsTable[Index] = NULL;\r
- mTcgDxeData.FinalEventLogAreaStruct[Index].EventLogFormat = mTcg2EventInfo[Index].LogFormat;\r
- mTcgDxeData.FinalEventLogAreaStruct[Index].Lasa = 0;\r
- mTcgDxeData.FinalEventLogAreaStruct[Index].Laml = 0;\r
- mTcgDxeData.FinalEventLogAreaStruct[Index].EventLogSize = 0;\r
- mTcgDxeData.FinalEventLogAreaStruct[Index].LastEvent = 0;\r
- mTcgDxeData.FinalEventLogAreaStruct[Index].EventLogStarted = FALSE;\r
- mTcgDxeData.FinalEventLogAreaStruct[Index].EventLogTruncated = FALSE;\r
+ mTcgDxeData.FinalEventsTable[Index] = NULL;\r
+ mTcgDxeData.FinalEventLogAreaStruct[Index].EventLogFormat = mTcg2EventInfo[Index].LogFormat;\r
+ mTcgDxeData.FinalEventLogAreaStruct[Index].Lasa = 0;\r
+ mTcgDxeData.FinalEventLogAreaStruct[Index].Laml = 0;\r
+ mTcgDxeData.FinalEventLogAreaStruct[Index].EventLogSize = 0;\r
+ mTcgDxeData.FinalEventLogAreaStruct[Index].LastEvent = 0;\r
+ mTcgDxeData.FinalEventLogAreaStruct[Index].EventLogStarted = FALSE;\r
+ mTcgDxeData.FinalEventLogAreaStruct[Index].EventLogTruncated = FALSE;\r
+ mTcgDxeData.FinalEventLogAreaStruct[Index].Next800155EventOffset = 0;\r
}\r
}\r
}\r
// 3. Sync data from PEI to DXE\r
//\r
Status = EFI_SUCCESS;\r
- for (Index = 0; Index < sizeof(mTcg2EventInfo)/sizeof(mTcg2EventInfo[0]); Index++) {\r
+ for (Index = 0; Index < sizeof (mTcg2EventInfo)/sizeof (mTcg2EventInfo[0]); Index++) {\r
if ((mTcgDxeData.BsCap.SupportedEventLogs & mTcg2EventInfo[Index].LogFormat) != 0) {\r
GuidHob.Raw = GetHobList ();\r
- Status = EFI_SUCCESS;\r
+ Status = EFI_SUCCESS;\r
while (!EFI_ERROR (Status) &&\r
- (GuidHob.Raw = GetNextGuidHob (mTcg2EventInfo[Index].EventGuid, GuidHob.Raw)) != NULL) {\r
- TcgEvent = AllocateCopyPool (GET_GUID_HOB_DATA_SIZE (GuidHob.Guid), GET_GUID_HOB_DATA (GuidHob.Guid));\r
+ (GuidHob.Raw = GetNextGuidHob (mTcg2EventInfo[Index].EventGuid, GuidHob.Raw)) != NULL)\r
+ {\r
+ TcgEvent = AllocateCopyPool (GET_GUID_HOB_DATA_SIZE (GuidHob.Guid), GET_GUID_HOB_DATA (GuidHob.Guid));\r
ASSERT (TcgEvent != NULL);\r
GuidHob.Raw = GET_NEXT_HOB (GuidHob);\r
switch (mTcg2EventInfo[Index].LogFormat) {\r
- case EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2:\r
- Status = TcgDxeLogEvent (\r
- mTcg2EventInfo[Index].LogFormat,\r
- TcgEvent,\r
- sizeof(TCG_PCR_EVENT_HDR),\r
- ((TCG_PCR_EVENT*)TcgEvent)->Event,\r
- ((TCG_PCR_EVENT_HDR*)TcgEvent)->EventSize\r
- );\r
- break;\r
- case EFI_TCG2_EVENT_LOG_FORMAT_TCG_2:\r
- DigestListBin = (UINT8 *)TcgEvent + sizeof(TCG_PCRINDEX) + sizeof(TCG_EVENTTYPE);\r
- DigestListBinSize = GetDigestListBinSize (DigestListBin);\r
- //\r
- // Save event size.\r
- //\r
- CopyMem (&EventSize, (UINT8 *)DigestListBin + DigestListBinSize, sizeof(UINT32));\r
- Event = (UINT8 *)DigestListBin + DigestListBinSize + sizeof(UINT32);\r
- //\r
- // Filter inactive digest in the event2 log from PEI HOB.\r
- //\r
- CopyMem (&TempDigestListBin, DigestListBin, GetDigestListBinSize (DigestListBin));\r
- EventSizePtr = CopyDigestListBinToBuffer (\r
- DigestListBin,\r
- &TempDigestListBin,\r
- mTcgDxeData.BsCap.ActivePcrBanks,\r
- &HashAlgorithmMaskCopied\r
- );\r
- if (HashAlgorithmMaskCopied != mTcgDxeData.BsCap.ActivePcrBanks) {\r
- DEBUG ((\r
- DEBUG_ERROR,\r
- "ERROR: The event2 log includes digest hash mask 0x%x, but required digest hash mask is 0x%x\n",\r
- HashAlgorithmMaskCopied,\r
- mTcgDxeData.BsCap.ActivePcrBanks\r
- ));\r
- }\r
- //\r
- // Restore event size.\r
- //\r
- CopyMem (EventSizePtr, &EventSize, sizeof(UINT32));\r
- DigestListBinSize = GetDigestListBinSize (DigestListBin);\r
-\r
- Status = TcgDxeLogEvent (\r
- mTcg2EventInfo[Index].LogFormat,\r
- TcgEvent,\r
- sizeof(TCG_PCRINDEX) + sizeof(TCG_EVENTTYPE) + DigestListBinSize + sizeof(UINT32),\r
- Event,\r
- EventSize\r
- );\r
- break;\r
+ case EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2:\r
+ Status = TcgDxeLogEvent (\r
+ mTcg2EventInfo[Index].LogFormat,\r
+ TcgEvent,\r
+ sizeof (TCG_PCR_EVENT_HDR),\r
+ ((TCG_PCR_EVENT *)TcgEvent)->Event,\r
+ ((TCG_PCR_EVENT_HDR *)TcgEvent)->EventSize\r
+ );\r
+ break;\r
+ case EFI_TCG2_EVENT_LOG_FORMAT_TCG_2:\r
+ DigestListBin = (UINT8 *)TcgEvent + sizeof (TCG_PCRINDEX) + sizeof (TCG_EVENTTYPE);\r
+ DigestListBinSize = GetDigestListBinSize (DigestListBin);\r
+ //\r
+ // Save event size.\r
+ //\r
+ CopyMem (&EventSize, (UINT8 *)DigestListBin + DigestListBinSize, sizeof (UINT32));\r
+ Event = (UINT8 *)DigestListBin + DigestListBinSize + sizeof (UINT32);\r
+ //\r
+ // Filter inactive digest in the event2 log from PEI HOB.\r
+ //\r
+ CopyMem (&TempDigestListBin, DigestListBin, GetDigestListBinSize (DigestListBin));\r
+ EventSizePtr = CopyDigestListBinToBuffer (\r
+ DigestListBin,\r
+ &TempDigestListBin,\r
+ mTcgDxeData.BsCap.ActivePcrBanks,\r
+ &HashAlgorithmMaskCopied\r
+ );\r
+ if (HashAlgorithmMaskCopied != mTcgDxeData.BsCap.ActivePcrBanks) {\r
+ DEBUG ((\r
+ DEBUG_ERROR,\r
+ "ERROR: The event2 log includes digest hash mask 0x%x, but required digest hash mask is 0x%x\n",\r
+ HashAlgorithmMaskCopied,\r
+ mTcgDxeData.BsCap.ActivePcrBanks\r
+ ));\r
+ }\r
+\r
+ //\r
+ // Restore event size.\r
+ //\r
+ CopyMem (EventSizePtr, &EventSize, sizeof (UINT32));\r
+ DigestListBinSize = GetDigestListBinSize (DigestListBin);\r
+\r
+ Status = TcgDxeLogEvent (\r
+ mTcg2EventInfo[Index].LogFormat,\r
+ TcgEvent,\r
+ sizeof (TCG_PCRINDEX) + sizeof (TCG_EVENTTYPE) + DigestListBinSize + sizeof (UINT32),\r
+ Event,\r
+ EventSize\r
+ );\r
+ break;\r
}\r
+\r
FreePool (TcgEvent);\r
}\r
}\r
**/\r
EFI_STATUS\r
TcgMeasureAction (\r
- IN TPM_PCRINDEX PCRIndex,\r
- IN CHAR8 *String\r
+ IN TPM_PCRINDEX PCRIndex,\r
+ IN CHAR8 *String\r
)\r
{\r
- TCG_PCR_EVENT_HDR TcgEvent;\r
+ TCG_PCR_EVENT_HDR TcgEvent;\r
\r
TcgEvent.PCRIndex = PCRIndex;\r
TcgEvent.EventType = EV_EFI_ACTION;\r
TcgEvent.EventSize = (UINT32)AsciiStrLen (String);\r
return TcgDxeHashLogExtendEvent (\r
0,\r
- (UINT8*)String,\r
+ (UINT8 *)String,\r
TcgEvent.EventSize,\r
&TcgEvent,\r
- (UINT8 *) String\r
+ (UINT8 *)String\r
);\r
}\r
\r
VOID\r
)\r
{\r
- EFI_STATUS Status;\r
- TCG_PCR_EVENT_HDR TcgEvent;\r
- EFI_HANDOFF_TABLE_POINTERS HandoffTables;\r
- UINTN ProcessorNum;\r
- EFI_CPU_PHYSICAL_LOCATION *ProcessorLocBuf;\r
+ EFI_STATUS Status;\r
+ TCG_PCR_EVENT_HDR TcgEvent;\r
+ EFI_HANDOFF_TABLE_POINTERS HandoffTables;\r
+ UINTN ProcessorNum;\r
+ EFI_CPU_PHYSICAL_LOCATION *ProcessorLocBuf;\r
\r
ProcessorLocBuf = NULL;\r
- Status = EFI_SUCCESS;\r
+ Status = EFI_SUCCESS;\r
\r
if (PcdGet8 (PcdTpmPlatformClass) == TCG_PLATFORM_TYPE_SERVER) {\r
//\r
// Tcg Server spec.\r
// Measure each processor EFI_CPU_PHYSICAL_LOCATION with EV_TABLE_OF_DEVICES to PCR[1]\r
//\r
- Status = GetProcessorsCpuLocation(&ProcessorLocBuf, &ProcessorNum);\r
+ Status = GetProcessorsCpuLocation (&ProcessorLocBuf, &ProcessorNum);\r
\r
- if (!EFI_ERROR(Status)){\r
+ if (!EFI_ERROR (Status)) {\r
TcgEvent.PCRIndex = 1;\r
TcgEvent.EventType = EV_TABLE_OF_DEVICES;\r
TcgEvent.EventSize = sizeof (HandoffTables);\r
\r
- HandoffTables.NumberOfTables = 1;\r
+ HandoffTables.NumberOfTables = 1;\r
HandoffTables.TableEntry[0].VendorGuid = gEfiMpServiceProtocolGuid;\r
HandoffTables.TableEntry[0].VendorTable = ProcessorLocBuf;\r
\r
Status = TcgDxeHashLogExtendEvent (\r
0,\r
- (UINT8*)(UINTN)ProcessorLocBuf,\r
- sizeof(EFI_CPU_PHYSICAL_LOCATION) * ProcessorNum,\r
+ (UINT8 *)(UINTN)ProcessorLocBuf,\r
+ sizeof (EFI_CPU_PHYSICAL_LOCATION) * ProcessorNum,\r
&TcgEvent,\r
- (UINT8*)&HandoffTables\r
+ (UINT8 *)&HandoffTables\r
);\r
\r
- FreePool(ProcessorLocBuf);\r
+ FreePool (ProcessorLocBuf);\r
}\r
}\r
\r
**/\r
EFI_STATUS\r
MeasureSeparatorEvent (\r
- IN TPM_PCRINDEX PCRIndex\r
+ IN TPM_PCRINDEX PCRIndex\r
)\r
{\r
- TCG_PCR_EVENT_HDR TcgEvent;\r
- UINT32 EventData;\r
+ TCG_PCR_EVENT_HDR TcgEvent;\r
+ UINT32 EventData;\r
\r
- DEBUG ((EFI_D_INFO, "MeasureSeparatorEvent Pcr - %x\n", PCRIndex));\r
+ DEBUG ((DEBUG_INFO, "MeasureSeparatorEvent Pcr - %x\n", PCRIndex));\r
\r
- EventData = 0;\r
+ EventData = 0;\r
TcgEvent.PCRIndex = PCRIndex;\r
TcgEvent.EventType = EV_SEPARATOR;\r
TcgEvent.EventSize = (UINT32)sizeof (EventData);\r
**/\r
EFI_STATUS\r
MeasureVariable (\r
- IN TPM_PCRINDEX PCRIndex,\r
- IN TCG_EVENTTYPE EventType,\r
- IN CHAR16 *VarName,\r
- IN EFI_GUID *VendorGuid,\r
- IN VOID *VarData,\r
- IN UINTN VarSize\r
+ IN TPM_PCRINDEX PCRIndex,\r
+ IN TCG_EVENTTYPE EventType,\r
+ IN CHAR16 *VarName,\r
+ IN EFI_GUID *VendorGuid,\r
+ IN VOID *VarData,\r
+ IN UINTN VarSize\r
)\r
{\r
- EFI_STATUS Status;\r
- TCG_PCR_EVENT_HDR TcgEvent;\r
- UINTN VarNameLength;\r
- UEFI_VARIABLE_DATA *VarLog;\r
+ EFI_STATUS Status;\r
+ TCG_PCR_EVENT_HDR TcgEvent;\r
+ UINTN VarNameLength;\r
+ UEFI_VARIABLE_DATA *VarLog;\r
\r
- DEBUG ((EFI_D_INFO, "Tcg2Dxe: MeasureVariable (Pcr - %x, EventType - %x, ", (UINTN)PCRIndex, (UINTN)EventType));\r
- DEBUG ((EFI_D_INFO, "VariableName - %s, VendorGuid - %g)\n", VarName, VendorGuid));\r
+ DEBUG ((DEBUG_INFO, "Tcg2Dxe: MeasureVariable (Pcr - %x, EventType - %x, ", (UINTN)PCRIndex, (UINTN)EventType));\r
+ DEBUG ((DEBUG_INFO, "VariableName - %s, VendorGuid - %g)\n", VarName, VendorGuid));\r
\r
VarNameLength = StrLen (VarName);\r
TcgEvent.PCRIndex = PCRIndex;\r
TcgEvent.EventType = EventType;\r
\r
TcgEvent.EventSize = (UINT32)(sizeof (*VarLog) + VarNameLength * sizeof (*VarName) + VarSize\r
- - sizeof (VarLog->UnicodeName) - sizeof (VarLog->VariableData));\r
+ - sizeof (VarLog->UnicodeName) - sizeof (VarLog->VariableData));\r
\r
VarLog = (UEFI_VARIABLE_DATA *)AllocatePool (TcgEvent.EventSize);\r
if (VarLog == NULL) {\r
VarLog->UnicodeNameLength = VarNameLength;\r
VarLog->VariableDataLength = VarSize;\r
CopyMem (\r
- VarLog->UnicodeName,\r
- VarName,\r
- VarNameLength * sizeof (*VarName)\r
- );\r
- if (VarSize != 0 && VarData != NULL) {\r
+ VarLog->UnicodeName,\r
+ VarName,\r
+ VarNameLength * sizeof (*VarName)\r
+ );\r
+ if ((VarSize != 0) && (VarData != NULL)) {\r
CopyMem (\r
- (CHAR16 *)VarLog->UnicodeName + VarNameLength,\r
- VarData,\r
- VarSize\r
- );\r
+ (CHAR16 *)VarLog->UnicodeName + VarNameLength,\r
+ VarData,\r
+ VarSize\r
+ );\r
}\r
\r
if (EventType == EV_EFI_VARIABLE_DRIVER_CONFIG) {\r
//\r
Status = TcgDxeHashLogExtendEvent (\r
0,\r
- (UINT8*)VarLog,\r
+ (UINT8 *)VarLog,\r
TcgEvent.EventSize,\r
&TcgEvent,\r
- (UINT8*)VarLog\r
+ (UINT8 *)VarLog\r
);\r
} else {\r
ASSERT (VarData != NULL);\r
Status = TcgDxeHashLogExtendEvent (\r
0,\r
- (UINT8*)VarData,\r
+ (UINT8 *)VarData,\r
VarSize,\r
&TcgEvent,\r
- (UINT8*)VarLog\r
+ (UINT8 *)VarLog\r
);\r
}\r
+\r
FreePool (VarLog);\r
return Status;\r
}\r
**/\r
EFI_STATUS\r
ReadAndMeasureVariable (\r
- IN TPM_PCRINDEX PCRIndex,\r
- IN TCG_EVENTTYPE EventType,\r
- IN CHAR16 *VarName,\r
- IN EFI_GUID *VendorGuid,\r
- OUT UINTN *VarSize,\r
- OUT VOID **VarData\r
+ IN TPM_PCRINDEX PCRIndex,\r
+ IN TCG_EVENTTYPE EventType,\r
+ IN CHAR16 *VarName,\r
+ IN EFI_GUID *VendorGuid,\r
+ OUT UINTN *VarSize,\r
+ OUT VOID **VarData\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
Status = GetVariable2 (VarName, VendorGuid, VarData, VarSize);\r
if (EventType == EV_EFI_VARIABLE_DRIVER_CONFIG) {\r
**/\r
EFI_STATUS\r
ReadAndMeasureBootVariable (\r
- IN CHAR16 *VarName,\r
- IN EFI_GUID *VendorGuid,\r
- OUT UINTN *VarSize,\r
- OUT VOID **VarData\r
+ IN CHAR16 *VarName,\r
+ IN EFI_GUID *VendorGuid,\r
+ OUT UINTN *VarSize,\r
+ OUT VOID **VarData\r
)\r
{\r
return ReadAndMeasureVariable (\r
**/\r
EFI_STATUS\r
ReadAndMeasureSecureVariable (\r
- IN CHAR16 *VarName,\r
- IN EFI_GUID *VendorGuid,\r
- OUT UINTN *VarSize,\r
- OUT VOID **VarData\r
+ IN CHAR16 *VarName,\r
+ IN EFI_GUID *VendorGuid,\r
+ OUT UINTN *VarSize,\r
+ OUT VOID **VarData\r
)\r
{\r
return ReadAndMeasureVariable (\r
VOID\r
)\r
{\r
- EFI_STATUS Status;\r
- UINT16 *BootOrder;\r
- UINTN BootCount;\r
- UINTN Index;\r
- VOID *BootVarData;\r
- UINTN Size;\r
+ EFI_STATUS Status;\r
+ UINT16 *BootOrder;\r
+ UINTN BootCount;\r
+ UINTN Index;\r
+ VOID *BootVarData;\r
+ UINTN Size;\r
\r
Status = ReadAndMeasureBootVariable (\r
mBootVarName,\r
&gEfiGlobalVariableGuid,\r
&BootCount,\r
- (VOID **) &BootOrder\r
+ (VOID **)&BootOrder\r
);\r
- if (Status == EFI_NOT_FOUND || BootOrder == NULL) {\r
+ if ((Status == EFI_NOT_FOUND) || (BootOrder == NULL)) {\r
return EFI_SUCCESS;\r
}\r
\r
VOID\r
)\r
{\r
- EFI_STATUS Status;\r
- VOID *Data;\r
- UINTN DataSize;\r
- UINTN Index;\r
+ EFI_STATUS Status;\r
+ VOID *Data;\r
+ UINTN DataSize;\r
+ UINTN Index;\r
\r
Status = EFI_NOT_FOUND;\r
- for (Index = 0; Index < sizeof(mVariableType)/sizeof(mVariableType[0]); Index++) {\r
+ for (Index = 0; Index < sizeof (mVariableType)/sizeof (mVariableType[0]); Index++) {\r
Status = ReadAndMeasureSecureVariable (\r
mVariableType[Index].VariableName,\r
mVariableType[Index].VendorGuid,\r
// Measure DBT if present and not empty\r
//\r
Status = GetVariable2 (EFI_IMAGE_SECURITY_DATABASE2, &gEfiImageSecurityDatabaseGuid, &Data, &DataSize);\r
- if (!EFI_ERROR(Status)) {\r
+ if (!EFI_ERROR (Status)) {\r
Status = MeasureVariable (\r
7,\r
EV_EFI_VARIABLE_DRIVER_CONFIG,\r
Data,\r
DataSize\r
);\r
- FreePool(Data);\r
+ FreePool (Data);\r
} else {\r
- DEBUG((DEBUG_INFO, "Skip measuring variable %s since it's deleted\n", EFI_IMAGE_SECURITY_DATABASE2));\r
+ DEBUG ((DEBUG_INFO, "Skip measuring variable %s since it's deleted\n", EFI_IMAGE_SECURITY_DATABASE2));\r
}\r
\r
return EFI_SUCCESS;\r
VOID\r
)\r
{\r
- TCG_PCR_EVENT_HDR TcgEvent;\r
+ TCG_PCR_EVENT_HDR TcgEvent;\r
\r
TcgEvent.PCRIndex = 7;\r
TcgEvent.EventType = EV_EFI_ACTION;\r
- TcgEvent.EventSize = sizeof(FIRMWARE_DEBUGGER_EVENT_STRING) - 1;\r
+ TcgEvent.EventSize = sizeof (FIRMWARE_DEBUGGER_EVENT_STRING) - 1;\r
return TcgDxeHashLogExtendEvent (\r
0,\r
(UINT8 *)FIRMWARE_DEBUGGER_EVENT_STRING,\r
- sizeof(FIRMWARE_DEBUGGER_EVENT_STRING) - 1,\r
+ sizeof (FIRMWARE_DEBUGGER_EVENT_STRING) - 1,\r
&TcgEvent,\r
(UINT8 *)FIRMWARE_DEBUGGER_EVENT_STRING\r
);\r
VOID\r
EFIAPI\r
MeasureSecureBootPolicy (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
EFI_STATUS Status;\r
\r
if (PcdGetBool (PcdFirmwareDebuggerInitialized)) {\r
Status = MeasureLaunchOfFirmwareDebugger ();\r
- DEBUG ((EFI_D_INFO, "MeasureLaunchOfFirmwareDebugger - %r\n", Status));\r
+ DEBUG ((DEBUG_INFO, "MeasureLaunchOfFirmwareDebugger - %r\n", Status));\r
}\r
\r
Status = MeasureAllSecureVariables ();\r
- DEBUG ((EFI_D_INFO, "MeasureAllSecureVariables - %r\n", Status));\r
+ DEBUG ((DEBUG_INFO, "MeasureAllSecureVariables - %r\n", Status));\r
\r
//\r
// We need measure Separator(7) here, because this event must be between SecureBootPolicy (Configure)\r
// the Authority measurement happen before ReadToBoot event.\r
//\r
Status = MeasureSeparatorEvent (7);\r
- DEBUG ((EFI_D_INFO, "MeasureSeparatorEvent - %r\n", Status));\r
- return ;\r
+ DEBUG ((DEBUG_INFO, "MeasureSeparatorEvent - %r\n", Status));\r
+ return;\r
}\r
\r
/**\r
VOID\r
EFIAPI\r
OnReadyToBoot (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
- EFI_STATUS Status;\r
- TPM_PCRINDEX PcrIndex;\r
+ EFI_STATUS Status;\r
+ TPM_PCRINDEX PcrIndex;\r
\r
PERF_START_EX (mImageHandle, "EventRec", "Tcg2Dxe", 0, PERF_ID_TCG2_DXE);\r
if (mBootAttempts == 0) {\r
-\r
//\r
// Measure handoff tables.\r
//\r
Status = MeasureHandoffTables ();\r
if (EFI_ERROR (Status)) {\r
- DEBUG ((EFI_D_ERROR, "HOBs not Measured. Error!\n"));\r
+ DEBUG ((DEBUG_ERROR, "HOBs not Measured. Error!\n"));\r
}\r
\r
//\r
//\r
Status = MeasureAllBootVariables ();\r
if (EFI_ERROR (Status)) {\r
- DEBUG ((EFI_D_ERROR, "Boot Variables not Measured. Error!\n"));\r
+ DEBUG ((DEBUG_ERROR, "Boot Variables not Measured. Error!\n"));\r
}\r
\r
//\r
EFI_CALLING_EFI_APPLICATION\r
);\r
if (EFI_ERROR (Status)) {\r
- DEBUG ((EFI_D_ERROR, "%a not Measured. Error!\n", EFI_CALLING_EFI_APPLICATION));\r
+ DEBUG ((DEBUG_ERROR, "%a not Measured. Error!\n", EFI_CALLING_EFI_APPLICATION));\r
}\r
\r
//\r
EFI_RETURNING_FROM_EFI_APPLICATION\r
);\r
if (EFI_ERROR (Status)) {\r
- DEBUG ((EFI_D_ERROR, "%a not Measured. Error!\n", EFI_RETURNING_FROM_EFI_APPLICATION));\r
+ DEBUG ((DEBUG_ERROR, "%a not Measured. Error!\n", EFI_RETURNING_FROM_EFI_APPLICATION));\r
}\r
\r
//\r
EFI_CALLING_EFI_APPLICATION\r
);\r
if (EFI_ERROR (Status)) {\r
- DEBUG ((EFI_D_ERROR, "%a not Measured. Error!\n", EFI_CALLING_EFI_APPLICATION));\r
+ DEBUG ((DEBUG_ERROR, "%a not Measured. Error!\n", EFI_CALLING_EFI_APPLICATION));\r
}\r
}\r
\r
- DEBUG ((EFI_D_INFO, "TPM2 Tcg2Dxe Measure Data when ReadyToBoot\n"));\r
+ DEBUG ((DEBUG_INFO, "TPM2 Tcg2Dxe Measure Data when ReadyToBoot\n"));\r
//\r
// Increase boot attempt counter.\r
//\r
VOID\r
EFIAPI\r
OnExitBootServices (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
//\r
// Measure invocation of ExitBootServices,\r
EFI_EXIT_BOOT_SERVICES_INVOCATION\r
);\r
if (EFI_ERROR (Status)) {\r
- DEBUG ((EFI_D_ERROR, "%a not Measured. Error!\n", EFI_EXIT_BOOT_SERVICES_INVOCATION));\r
+ DEBUG ((DEBUG_ERROR, "%a not Measured. Error!\n", EFI_EXIT_BOOT_SERVICES_INVOCATION));\r
}\r
\r
//\r
EFI_EXIT_BOOT_SERVICES_SUCCEEDED\r
);\r
if (EFI_ERROR (Status)) {\r
- DEBUG ((EFI_D_ERROR, "%a not Measured. Error!\n", EFI_EXIT_BOOT_SERVICES_SUCCEEDED));\r
+ DEBUG ((DEBUG_ERROR, "%a not Measured. Error!\n", EFI_EXIT_BOOT_SERVICES_SUCCEEDED));\r
}\r
}\r
\r
VOID\r
EFIAPI\r
OnExitBootServicesFailed (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
//\r
// Measure Failure of ExitBootServices,\r
EFI_EXIT_BOOT_SERVICES_FAILED\r
);\r
if (EFI_ERROR (Status)) {\r
- DEBUG ((EFI_D_ERROR, "%a not Measured. Error!\n", EFI_EXIT_BOOT_SERVICES_FAILED));\r
+ DEBUG ((DEBUG_ERROR, "%a not Measured. Error!\n", EFI_EXIT_BOOT_SERVICES_FAILED));\r
}\r
-\r
}\r
\r
/**\r
VOID\r
EFIAPI\r
ShutdownTpmOnReset (\r
- IN EFI_RESET_TYPE ResetType,\r
- IN EFI_STATUS ResetStatus,\r
- IN UINTN DataSize,\r
- IN VOID *ResetData OPTIONAL\r
+ IN EFI_RESET_TYPE ResetType,\r
+ IN EFI_STATUS ResetStatus,\r
+ IN UINTN DataSize,\r
+ IN VOID *ResetData OPTIONAL\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
+\r
Status = Tpm2Shutdown (TPM_SU_CLEAR);\r
DEBUG ((DEBUG_VERBOSE, "Tpm2Shutdown (SU_CLEAR) - %r\n", Status));\r
}\r
VOID\r
EFIAPI\r
OnResetNotificationInstall (\r
- IN EFI_EVENT Event,\r
- IN VOID *Context\r
+ IN EFI_EVENT Event,\r
+ IN VOID *Context\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_RESET_NOTIFICATION_PROTOCOL *ResetNotify;\r
+ EFI_STATUS Status;\r
+ EFI_RESET_NOTIFICATION_PROTOCOL *ResetNotify;\r
\r
- Status = gBS->LocateProtocol (&gEfiResetNotificationProtocolGuid, NULL, (VOID **) &ResetNotify);\r
+ Status = gBS->LocateProtocol (&gEfiResetNotificationProtocolGuid, NULL, (VOID **)&ResetNotify);\r
if (!EFI_ERROR (Status)) {\r
Status = ResetNotify->RegisterResetNotify (ResetNotify, ShutdownTpmOnReset);\r
ASSERT_EFI_ERROR (Status);\r
VOID\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_HANDLE Handle;\r
+ EFI_STATUS Status;\r
+ EFI_HANDLE Handle;\r
\r
Handle = NULL;\r
Status = gBS->InstallMultipleProtocolInterfaces (\r
EFI_STATUS\r
EFIAPI\r
DriverEntry (\r
- IN EFI_HANDLE ImageHandle,\r
- IN EFI_SYSTEM_TABLE *SystemTable\r
+ IN EFI_HANDLE ImageHandle,\r
+ IN EFI_SYSTEM_TABLE *SystemTable\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_EVENT Event;\r
- VOID *Registration;\r
- UINT32 MaxCommandSize;\r
- UINT32 MaxResponseSize;\r
- UINTN Index;\r
- EFI_TCG2_EVENT_ALGORITHM_BITMAP TpmHashAlgorithmBitmap;\r
- UINT32 ActivePCRBanks;\r
- UINT32 NumberOfPCRBanks;\r
+ EFI_STATUS Status;\r
+ EFI_EVENT Event;\r
+ VOID *Registration;\r
+ UINT32 MaxCommandSize;\r
+ UINT32 MaxResponseSize;\r
+ UINTN Index;\r
+ EFI_TCG2_EVENT_ALGORITHM_BITMAP TpmHashAlgorithmBitmap;\r
+ UINT32 ActivePCRBanks;\r
+ UINT32 NumberOfPCRBanks;\r
\r
mImageHandle = ImageHandle;\r
\r
- if (CompareGuid (PcdGetPtr(PcdTpmInstanceGuid), &gEfiTpmDeviceInstanceNoneGuid) ||\r
- CompareGuid (PcdGetPtr(PcdTpmInstanceGuid), &gEfiTpmDeviceInstanceTpm12Guid)){\r
+ if (CompareGuid (PcdGetPtr (PcdTpmInstanceGuid), &gEfiTpmDeviceInstanceNoneGuid) ||\r
+ CompareGuid (PcdGetPtr (PcdTpmInstanceGuid), &gEfiTpmDeviceInstanceTpm12Guid))\r
+ {\r
DEBUG ((DEBUG_INFO, "No TPM2 instance required!\n"));\r
return EFI_UNSUPPORTED;\r
}\r
\r
if (GetFirstGuidHob (&gTpmErrorHobGuid) != NULL) {\r
- DEBUG ((EFI_D_ERROR, "TPM2 error!\n"));\r
+ DEBUG ((DEBUG_ERROR, "TPM2 error!\n"));\r
return EFI_DEVICE_ERROR;\r
}\r
\r
Status = Tpm2RequestUseTpm ();\r
if (EFI_ERROR (Status)) {\r
- DEBUG ((EFI_D_ERROR, "TPM2 not detected!\n"));\r
+ DEBUG ((DEBUG_ERROR, "TPM2 not detected!\n"));\r
return Status;\r
}\r
\r
//\r
// Fill information\r
//\r
- ASSERT (TCG_EVENT_LOG_AREA_COUNT_MAX == sizeof(mTcg2EventInfo)/sizeof(mTcg2EventInfo[0]));\r
+ ASSERT (TCG_EVENT_LOG_AREA_COUNT_MAX == sizeof (mTcg2EventInfo)/sizeof (mTcg2EventInfo[0]));\r
\r
- mTcgDxeData.BsCap.Size = sizeof(EFI_TCG2_BOOT_SERVICE_CAPABILITY);\r
- mTcgDxeData.BsCap.ProtocolVersion.Major = 1;\r
- mTcgDxeData.BsCap.ProtocolVersion.Minor = 1;\r
+ mTcgDxeData.BsCap.Size = sizeof (EFI_TCG2_BOOT_SERVICE_CAPABILITY);\r
+ mTcgDxeData.BsCap.ProtocolVersion.Major = 1;\r
+ mTcgDxeData.BsCap.ProtocolVersion.Minor = 1;\r
mTcgDxeData.BsCap.StructureVersion.Major = 1;\r
mTcgDxeData.BsCap.StructureVersion.Minor = 1;\r
\r
- DEBUG ((EFI_D_INFO, "Tcg2.ProtocolVersion - %02x.%02x\n", mTcgDxeData.BsCap.ProtocolVersion.Major, mTcgDxeData.BsCap.ProtocolVersion.Minor));\r
- DEBUG ((EFI_D_INFO, "Tcg2.StructureVersion - %02x.%02x\n", mTcgDxeData.BsCap.StructureVersion.Major, mTcgDxeData.BsCap.StructureVersion.Minor));\r
+ DEBUG ((DEBUG_INFO, "Tcg2.ProtocolVersion - %02x.%02x\n", mTcgDxeData.BsCap.ProtocolVersion.Major, mTcgDxeData.BsCap.ProtocolVersion.Minor));\r
+ DEBUG ((DEBUG_INFO, "Tcg2.StructureVersion - %02x.%02x\n", mTcgDxeData.BsCap.StructureVersion.Major, mTcgDxeData.BsCap.StructureVersion.Minor));\r
\r
Status = Tpm2GetCapabilityManufactureID (&mTcgDxeData.BsCap.ManufacturerID);\r
if (EFI_ERROR (Status)) {\r
- DEBUG ((EFI_D_ERROR, "Tpm2GetCapabilityManufactureID fail!\n"));\r
+ DEBUG ((DEBUG_ERROR, "Tpm2GetCapabilityManufactureID fail!\n"));\r
} else {\r
- DEBUG ((EFI_D_INFO, "Tpm2GetCapabilityManufactureID - %08x\n", mTcgDxeData.BsCap.ManufacturerID));\r
+ DEBUG ((DEBUG_INFO, "Tpm2GetCapabilityManufactureID - %08x\n", mTcgDxeData.BsCap.ManufacturerID));\r
}\r
\r
- DEBUG_CODE (\r
- UINT32 FirmwareVersion1;\r
- UINT32 FirmwareVersion2;\r
+ DEBUG_CODE_BEGIN ();\r
+ UINT32 FirmwareVersion1;\r
+ UINT32 FirmwareVersion2;\r
\r
- Status = Tpm2GetCapabilityFirmwareVersion (&FirmwareVersion1, &FirmwareVersion2);\r
- if (EFI_ERROR (Status)) {\r
- DEBUG ((EFI_D_ERROR, "Tpm2GetCapabilityFirmwareVersion fail!\n"));\r
- } else {\r
- DEBUG ((EFI_D_INFO, "Tpm2GetCapabilityFirmwareVersion - %08x %08x\n", FirmwareVersion1, FirmwareVersion2));\r
- }\r
- );\r
+ Status = Tpm2GetCapabilityFirmwareVersion (&FirmwareVersion1, &FirmwareVersion2);\r
+ if (EFI_ERROR (Status)) {\r
+ DEBUG ((DEBUG_ERROR, "Tpm2GetCapabilityFirmwareVersion fail!\n"));\r
+ } else {\r
+ DEBUG ((DEBUG_INFO, "Tpm2GetCapabilityFirmwareVersion - %08x %08x\n", FirmwareVersion1, FirmwareVersion2));\r
+ }\r
+\r
+ DEBUG_CODE_END ();\r
\r
Status = Tpm2GetCapabilityMaxCommandResponseSize (&MaxCommandSize, &MaxResponseSize);\r
if (EFI_ERROR (Status)) {\r
- DEBUG ((EFI_D_ERROR, "Tpm2GetCapabilityMaxCommandResponseSize fail!\n"));\r
+ DEBUG ((DEBUG_ERROR, "Tpm2GetCapabilityMaxCommandResponseSize fail!\n"));\r
} else {\r
mTcgDxeData.BsCap.MaxCommandSize = (UINT16)MaxCommandSize;\r
mTcgDxeData.BsCap.MaxResponseSize = (UINT16)MaxResponseSize;\r
- DEBUG ((EFI_D_INFO, "Tpm2GetCapabilityMaxCommandResponseSize - %08x, %08x\n", MaxCommandSize, MaxResponseSize));\r
+ DEBUG ((DEBUG_INFO, "Tpm2GetCapabilityMaxCommandResponseSize - %08x, %08x\n", MaxCommandSize, MaxResponseSize));\r
}\r
\r
//\r
ASSERT_EFI_ERROR (Status);\r
\r
mTcgDxeData.BsCap.HashAlgorithmBitmap = TpmHashAlgorithmBitmap & PcdGet32 (PcdTcg2HashAlgorithmBitmap);\r
- mTcgDxeData.BsCap.ActivePcrBanks = ActivePCRBanks & PcdGet32 (PcdTcg2HashAlgorithmBitmap);\r
+ mTcgDxeData.BsCap.ActivePcrBanks = ActivePCRBanks & PcdGet32 (PcdTcg2HashAlgorithmBitmap);\r
\r
//\r
// Need calculate NumberOfPCRBanks here, because HashAlgorithmBitmap might be removed by PCD.\r
} else {\r
mTcgDxeData.BsCap.NumberOfPCRBanks = PcdGet32 (PcdTcg2NumberOfPCRBanks);\r
if (PcdGet32 (PcdTcg2NumberOfPCRBanks) > NumberOfPCRBanks) {\r
- DEBUG ((EFI_D_ERROR, "ERROR: PcdTcg2NumberOfPCRBanks(0x%x) > NumberOfPCRBanks(0x%x)\n", PcdGet32 (PcdTcg2NumberOfPCRBanks), NumberOfPCRBanks));\r
+ DEBUG ((DEBUG_ERROR, "ERROR: PcdTcg2NumberOfPCRBanks(0x%x) > NumberOfPCRBanks(0x%x)\n", PcdGet32 (PcdTcg2NumberOfPCRBanks), NumberOfPCRBanks));\r
mTcgDxeData.BsCap.NumberOfPCRBanks = NumberOfPCRBanks;\r
}\r
}\r
mTcgDxeData.BsCap.SupportedEventLogs &= ~EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2;\r
}\r
\r
- DEBUG ((EFI_D_INFO, "Tcg2.SupportedEventLogs - 0x%08x\n", mTcgDxeData.BsCap.SupportedEventLogs));\r
- DEBUG ((EFI_D_INFO, "Tcg2.HashAlgorithmBitmap - 0x%08x\n", mTcgDxeData.BsCap.HashAlgorithmBitmap));\r
- DEBUG ((EFI_D_INFO, "Tcg2.NumberOfPCRBanks - 0x%08x\n", mTcgDxeData.BsCap.NumberOfPCRBanks));\r
- DEBUG ((EFI_D_INFO, "Tcg2.ActivePcrBanks - 0x%08x\n", mTcgDxeData.BsCap.ActivePcrBanks));\r
+ DEBUG ((DEBUG_INFO, "Tcg2.SupportedEventLogs - 0x%08x\n", mTcgDxeData.BsCap.SupportedEventLogs));\r
+ DEBUG ((DEBUG_INFO, "Tcg2.HashAlgorithmBitmap - 0x%08x\n", mTcgDxeData.BsCap.HashAlgorithmBitmap));\r
+ DEBUG ((DEBUG_INFO, "Tcg2.NumberOfPCRBanks - 0x%08x\n", mTcgDxeData.BsCap.NumberOfPCRBanks));\r
+ DEBUG ((DEBUG_INFO, "Tcg2.ActivePcrBanks - 0x%08x\n", mTcgDxeData.BsCap.ActivePcrBanks));\r
\r
if (mTcgDxeData.BsCap.TPMPresentFlag) {\r
//\r
// Install Tcg2Protocol\r
//\r
Status = InstallTcg2 ();\r
- DEBUG ((EFI_D_INFO, "InstallTcg2 - %r\n", Status));\r
+ DEBUG ((DEBUG_INFO, "InstallTcg2 - %r\n", Status));\r
\r
return Status;\r
}\r