#define PERF_ID_TCG2_PEI 0x3080\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
-BOOLEAN mImageInMemory = FALSE;\r
-EFI_PEI_FILE_HANDLE mFileHandle;\r
+BOOLEAN mImageInMemory = FALSE;\r
+EFI_PEI_FILE_HANDLE mFileHandle;\r
\r
EFI_PEI_PPI_DESCRIPTOR mTpmInitializedPpiList = {\r
EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST,\r
EFI_STATUS\r
EFIAPI\r
HashLogExtendEvent (\r
- IN EDKII_TCG_PPI *This,\r
- IN UINT64 Flags,\r
- IN UINT8 *HashData,\r
- IN UINTN HashDataLen,\r
- IN TCG_PCR_EVENT_HDR *NewEventHdr,\r
- IN UINT8 *NewEventData\r
+ IN EDKII_TCG_PPI *This,\r
+ IN UINT64 Flags,\r
+ IN UINT8 *HashData,\r
+ IN UINTN HashDataLen,\r
+ IN TCG_PCR_EVENT_HDR *NewEventHdr,\r
+ IN UINT8 *NewEventData\r
);\r
\r
-EDKII_TCG_PPI mEdkiiTcgPpi = {\r
+EDKII_TCG_PPI mEdkiiTcgPpi = {\r
HashLogExtendEvent\r
};\r
\r
//\r
// Number of firmware blobs to grow by each time we run out of room\r
//\r
-#define FIRMWARE_BLOB_GROWTH_STEP 4\r
+#define FIRMWARE_BLOB_GROWTH_STEP 4\r
\r
-EFI_PLATFORM_FIRMWARE_BLOB *mMeasuredBaseFvInfo;\r
-UINT32 mMeasuredMaxBaseFvIndex = 0;\r
-UINT32 mMeasuredBaseFvIndex = 0;\r
+EFI_PLATFORM_FIRMWARE_BLOB *mMeasuredBaseFvInfo;\r
+UINT32 mMeasuredMaxBaseFvIndex = 0;\r
+UINT32 mMeasuredBaseFvIndex = 0;\r
\r
-EFI_PLATFORM_FIRMWARE_BLOB *mMeasuredChildFvInfo;\r
-UINT32 mMeasuredMaxChildFvIndex = 0;\r
-UINT32 mMeasuredChildFvIndex = 0;\r
+EFI_PLATFORM_FIRMWARE_BLOB *mMeasuredChildFvInfo;\r
+UINT32 mMeasuredMaxChildFvIndex = 0;\r
+UINT32 mMeasuredChildFvIndex = 0;\r
\r
#pragma pack (1)\r
\r
#define FV_HANDOFF_TABLE_DESC "Fv(XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)"\r
typedef struct {\r
- UINT8 BlobDescriptionSize;\r
- UINT8 BlobDescription[sizeof(FV_HANDOFF_TABLE_DESC)];\r
- EFI_PHYSICAL_ADDRESS BlobBase;\r
- UINT64 BlobLength;\r
+ UINT8 BlobDescriptionSize;\r
+ UINT8 BlobDescription[sizeof (FV_HANDOFF_TABLE_DESC)];\r
+ EFI_PHYSICAL_ADDRESS BlobBase;\r
+ UINT64 BlobLength;\r
} FV_HANDOFF_TABLE_POINTERS2;\r
\r
#pragma pack ()\r
EFI_STATUS\r
EFIAPI\r
FirmwareVolumeInfoPpiNotifyCallback (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,\r
- IN VOID *Ppi\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,\r
+ IN VOID *Ppi\r
);\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
EndofPeiSignalNotifyCallBack (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,\r
- IN VOID *Ppi\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,\r
+ IN VOID *Ppi\r
);\r
\r
-EFI_PEI_NOTIFY_DESCRIPTOR mNotifyList[] = {\r
+EFI_PEI_NOTIFY_DESCRIPTOR mNotifyList[] = {\r
{\r
EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK,\r
&gEfiPeiFirmwareVolumeInfoPpiGuid,\r
}\r
};\r
\r
-\r
/**\r
Record all measured Firmware Volume Information into a Guid Hob\r
Guid Hob payload layout is\r
EFI_STATUS\r
EFIAPI\r
EndofPeiSignalNotifyCallBack (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,\r
- IN VOID *Ppi\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,\r
+ IN VOID *Ppi\r
)\r
{\r
- MEASURED_HOB_DATA *MeasuredHobData;\r
+ MEASURED_HOB_DATA *MeasuredHobData;\r
\r
MeasuredHobData = NULL;\r
\r
//\r
// Create a Guid hob to save all measured Fv\r
//\r
- MeasuredHobData = BuildGuidHob(\r
+ MeasuredHobData = BuildGuidHob (\r
&gMeasuredFvHobGuid,\r
- sizeof(UINTN) + sizeof(EFI_PLATFORM_FIRMWARE_BLOB) * (mMeasuredBaseFvIndex + mMeasuredChildFvIndex)\r
+ sizeof (UINTN) + sizeof (EFI_PLATFORM_FIRMWARE_BLOB) * (mMeasuredBaseFvIndex + mMeasuredChildFvIndex)\r
);\r
\r
- if (MeasuredHobData != NULL){\r
+ if (MeasuredHobData != NULL) {\r
//\r
// Save measured FV info enty number\r
//\r
//\r
// Save measured base Fv info\r
//\r
- CopyMem (MeasuredHobData->MeasuredFvBuf, mMeasuredBaseFvInfo, sizeof(EFI_PLATFORM_FIRMWARE_BLOB) * (mMeasuredBaseFvIndex));\r
+ CopyMem (MeasuredHobData->MeasuredFvBuf, mMeasuredBaseFvInfo, sizeof (EFI_PLATFORM_FIRMWARE_BLOB) * (mMeasuredBaseFvIndex));\r
\r
//\r
// Save measured child Fv info\r
//\r
- CopyMem (&MeasuredHobData->MeasuredFvBuf[mMeasuredBaseFvIndex] , mMeasuredChildFvInfo, sizeof(EFI_PLATFORM_FIRMWARE_BLOB) * (mMeasuredChildFvIndex));\r
+ CopyMem (&MeasuredHobData->MeasuredFvBuf[mMeasuredBaseFvIndex], mMeasuredChildFvInfo, sizeof (EFI_PLATFORM_FIRMWARE_BLOB) * (mMeasuredChildFvIndex));\r
}\r
\r
PERF_CALLBACK_END (&gEfiEndOfPeiSignalPpiGuid);\r
VOID\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_TCG2_EVENT_ALGORITHM_BITMAP TpmHashAlgorithmBitmap;\r
- UINT32 TpmActivePcrBanks;\r
- UINT32 NewTpmActivePcrBanks;\r
- UINT32 Tpm2PcrMask;\r
- UINT32 NewTpm2PcrMask;\r
+ EFI_STATUS Status;\r
+ EFI_TCG2_EVENT_ALGORITHM_BITMAP TpmHashAlgorithmBitmap;\r
+ UINT32 TpmActivePcrBanks;\r
+ UINT32 NewTpmActivePcrBanks;\r
+ UINT32 Tpm2PcrMask;\r
+ UINT32 NewTpm2PcrMask;\r
\r
DEBUG ((DEBUG_ERROR, "SyncPcrAllocationsAndPcrMask!\n"));\r
\r
DEBUG ((DEBUG_ERROR, "%a - Failed to reallocate PCRs!\n", __FUNCTION__));\r
ASSERT_EFI_ERROR (Status);\r
}\r
+\r
//\r
// Need reset system, since we just called Tpm2PcrAllocateBanks().\r
//\r
- ResetCold();\r
+ ResetCold ();\r
}\r
}\r
\r
**/\r
EFI_STATUS\r
LogHashEvent (\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
- VOID *HobData;\r
- EFI_STATUS Status;\r
- UINTN Index;\r
- EFI_STATUS RetStatus;\r
- UINT32 SupportedEventLogs;\r
- TCG_PCR_EVENT2 *TcgPcrEvent2;\r
- UINT8 *DigestBuffer;\r
+ VOID *HobData;\r
+ EFI_STATUS Status;\r
+ UINTN Index;\r
+ EFI_STATUS RetStatus;\r
+ UINT32 SupportedEventLogs;\r
+ TCG_PCR_EVENT2 *TcgPcrEvent2;\r
+ UINT8 *DigestBuffer;\r
\r
SupportedEventLogs = EFI_TCG2_EVENT_LOG_FORMAT_TCG_1_2 | EFI_TCG2_EVENT_LOG_FORMAT_TCG_2;\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 ((SupportedEventLogs & mTcg2EventInfo[Index].LogFormat) != 0) {\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
+ HobData = BuildGuidHob (\r
+ &gTcgEventEntryHobGuid,\r
+ sizeof (*NewEventHdr) + NewEventHdr->EventSize\r
+ );\r
+ if (HobData == NULL) {\r
+ RetStatus = EFI_OUT_OF_RESOURCES;\r
+ break;\r
+ }\r
+\r
+ CopyMem (HobData, NewEventHdr, sizeof (*NewEventHdr));\r
+ HobData = (VOID *)((UINT8 *)HobData + sizeof (*NewEventHdr));\r
+ CopyMem (HobData, NewEventData, NewEventHdr->EventSize);\r
+ }\r
+\r
+ break;\r
+ case EFI_TCG2_EVENT_LOG_FORMAT_TCG_2:\r
+ //\r
+ // Use GetDigestListSize (DigestList) in the GUID HOB DataLength calculation\r
+ // to reserve enough buffer to hold TPML_DIGEST_VALUES compact binary.\r
+ //\r
HobData = BuildGuidHob (\r
- &gTcgEventEntryHobGuid,\r
- sizeof (*NewEventHdr) + NewEventHdr->EventSize\r
- );\r
+ &gTcgEvent2EntryHobGuid,\r
+ sizeof (TcgPcrEvent2->PCRIndex) + sizeof (TcgPcrEvent2->EventType) + GetDigestListSize (DigestList) + sizeof (TcgPcrEvent2->EventSize) + NewEventHdr->EventSize\r
+ );\r
if (HobData == NULL) {\r
RetStatus = EFI_OUT_OF_RESOURCES;\r
break;\r
}\r
\r
- CopyMem (HobData, NewEventHdr, sizeof (*NewEventHdr));\r
- HobData = (VOID *) ((UINT8*)HobData + sizeof (*NewEventHdr));\r
- CopyMem (HobData, NewEventData, NewEventHdr->EventSize);\r
- }\r
- break;\r
- case EFI_TCG2_EVENT_LOG_FORMAT_TCG_2:\r
- //\r
- // Use GetDigestListSize (DigestList) in the GUID HOB DataLength calculation\r
- // to reserve enough buffer to hold TPML_DIGEST_VALUES compact binary.\r
- //\r
- HobData = BuildGuidHob (\r
- &gTcgEvent2EntryHobGuid,\r
- sizeof(TcgPcrEvent2->PCRIndex) + sizeof(TcgPcrEvent2->EventType) + GetDigestListSize (DigestList) + sizeof(TcgPcrEvent2->EventSize) + NewEventHdr->EventSize\r
- );\r
- if (HobData == NULL) {\r
- RetStatus = EFI_OUT_OF_RESOURCES;\r
+ TcgPcrEvent2 = HobData;\r
+ TcgPcrEvent2->PCRIndex = NewEventHdr->PCRIndex;\r
+ TcgPcrEvent2->EventType = NewEventHdr->EventType;\r
+ DigestBuffer = (UINT8 *)&TcgPcrEvent2->Digest;\r
+ DigestBuffer = CopyDigestListToBuffer (DigestBuffer, DigestList, PcdGet32 (PcdTpm2HashMask));\r
+ CopyMem (DigestBuffer, &NewEventHdr->EventSize, sizeof (TcgPcrEvent2->EventSize));\r
+ DigestBuffer = DigestBuffer + sizeof (TcgPcrEvent2->EventSize);\r
+ CopyMem (DigestBuffer, NewEventData, NewEventHdr->EventSize);\r
break;\r
- }\r
-\r
- TcgPcrEvent2 = HobData;\r
- TcgPcrEvent2->PCRIndex = NewEventHdr->PCRIndex;\r
- TcgPcrEvent2->EventType = NewEventHdr->EventType;\r
- DigestBuffer = (UINT8 *)&TcgPcrEvent2->Digest;\r
- DigestBuffer = CopyDigestListToBuffer (DigestBuffer, DigestList, PcdGet32 (PcdTpm2HashMask));\r
- CopyMem (DigestBuffer, &NewEventHdr->EventSize, sizeof(TcgPcrEvent2->EventSize));\r
- DigestBuffer = DigestBuffer + sizeof(TcgPcrEvent2->EventSize);\r
- CopyMem (DigestBuffer, NewEventData, NewEventHdr->EventSize);\r
- break;\r
}\r
}\r
}\r
EFI_STATUS\r
EFIAPI\r
HashLogExtendEvent (\r
- IN EDKII_TCG_PPI *This,\r
- IN UINT64 Flags,\r
- IN UINT8 *HashData,\r
- IN UINTN HashDataLen,\r
- IN TCG_PCR_EVENT_HDR *NewEventHdr,\r
- IN UINT8 *NewEventData\r
+ IN EDKII_TCG_PPI *This,\r
+ IN UINT64 Flags,\r
+ IN UINT8 *HashData,\r
+ IN UINTN HashDataLen,\r
+ IN 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
\r
if (GetFirstGuidHob (&gTpmErrorHobGuid) != NULL) {\r
return EFI_DEVICE_ERROR;\r
}\r
\r
- if ((Flags & EDKII_TCG_PRE_HASH) != 0 || (Flags & EDKII_TCG_PRE_HASH_LOG_ONLY) != 0) {\r
- ZeroMem (&DigestList, sizeof(DigestList));\r
- CopyMem (&DigestList, HashData, sizeof(DigestList));\r
+ if (((Flags & EDKII_TCG_PRE_HASH) != 0) || ((Flags & EDKII_TCG_PRE_HASH_LOG_ONLY) != 0)) {\r
+ ZeroMem (&DigestList, sizeof (DigestList));\r
+ CopyMem (&DigestList, HashData, sizeof (DigestList));\r
Status = EFI_SUCCESS;\r
- if ((Flags & EDKII_TCG_PRE_HASH) !=0 ) {\r
+ if ((Flags & EDKII_TCG_PRE_HASH) != 0 ) {\r
Status = Tpm2PcrExtend (\r
- NewEventHdr->PCRIndex,\r
- &DigestList\r
- );\r
+ NewEventHdr->PCRIndex,\r
+ &DigestList\r
+ );\r
}\r
} else {\r
Status = HashAndExtend (\r
&DigestList\r
);\r
}\r
+\r
if (!EFI_ERROR (Status)) {\r
Status = LogHashEvent (&DigestList, NewEventHdr, NewEventData);\r
}\r
\r
if (Status == EFI_DEVICE_ERROR) {\r
DEBUG ((DEBUG_ERROR, "HashLogExtendEvent - %r. Disable TPM.\n", Status));\r
- BuildGuidHob (&gTpmErrorHobGuid,0);\r
+ BuildGuidHob (&gTpmErrorHobGuid, 0);\r
REPORT_STATUS_CODE (\r
EFI_ERROR_CODE | EFI_ERROR_MINOR,\r
(PcdGet32 (PcdStatusCodeSubClassTpmDevice) | EFI_P_EC_INTERFACE_ERROR)\r
VOID\r
)\r
{\r
- TCG_PCR_EVENT_HDR TcgEventHdr;\r
+ TCG_PCR_EVENT_HDR TcgEventHdr;\r
\r
//\r
// Use FirmwareVersion string to represent CRTM version.\r
\r
TcgEventHdr.PCRIndex = 0;\r
TcgEventHdr.EventType = EV_S_CRTM_VERSION;\r
- TcgEventHdr.EventSize = (UINT32) StrSize((CHAR16*)PcdGetPtr (PcdFirmwareVersionString));\r
+ TcgEventHdr.EventSize = (UINT32)StrSize ((CHAR16 *)PcdGetPtr (PcdFirmwareVersionString));\r
\r
return HashLogExtendEvent (\r
&mEdkiiTcgPpi,\r
0,\r
- (UINT8*)PcdGetPtr (PcdFirmwareVersionString),\r
+ (UINT8 *)PcdGetPtr (PcdFirmwareVersionString),\r
TcgEventHdr.EventSize,\r
&TcgEventHdr,\r
- (UINT8*)PcdGetPtr (PcdFirmwareVersionString)\r
+ (UINT8 *)PcdGetPtr (PcdFirmwareVersionString)\r
);\r
}\r
\r
**/\r
VOID *\r
GetFvName (\r
- IN EFI_PHYSICAL_ADDRESS FvBase,\r
- IN UINT64 FvLength\r
+ IN EFI_PHYSICAL_ADDRESS FvBase,\r
+ IN UINT64 FvLength\r
)\r
{\r
EFI_FIRMWARE_VOLUME_HEADER *FvHeader;\r
if (FvBase >= MAX_ADDRESS) {\r
return NULL;\r
}\r
+\r
if (FvLength >= MAX_ADDRESS - FvBase) {\r
return NULL;\r
}\r
- if (FvLength < sizeof(EFI_FIRMWARE_VOLUME_HEADER)) {\r
+\r
+ if (FvLength < sizeof (EFI_FIRMWARE_VOLUME_HEADER)) {\r
return NULL;\r
}\r
\r
FvHeader = (EFI_FIRMWARE_VOLUME_HEADER *)(UINTN)FvBase;\r
- if (FvHeader->ExtHeaderOffset < sizeof(EFI_FIRMWARE_VOLUME_HEADER)) {\r
+ if (FvHeader->ExtHeaderOffset < sizeof (EFI_FIRMWARE_VOLUME_HEADER)) {\r
return NULL;\r
}\r
- if (FvHeader->ExtHeaderOffset + sizeof(EFI_FIRMWARE_VOLUME_EXT_HEADER) > FvLength) {\r
+\r
+ if (FvHeader->ExtHeaderOffset + sizeof (EFI_FIRMWARE_VOLUME_EXT_HEADER) > FvLength) {\r
return NULL;\r
}\r
+\r
FvExtHeader = (EFI_FIRMWARE_VOLUME_EXT_HEADER *)(UINTN)(FvBase + FvHeader->ExtHeaderOffset);\r
\r
return &FvExtHeader->FvName;\r
**/\r
EFI_STATUS\r
MeasureFvImage (\r
- IN EFI_PHYSICAL_ADDRESS FvBase,\r
- IN UINT64 FvLength\r
+ IN EFI_PHYSICAL_ADDRESS FvBase,\r
+ IN UINT64 FvLength\r
)\r
{\r
- UINT32 Index;\r
- EFI_STATUS Status;\r
- EFI_PLATFORM_FIRMWARE_BLOB FvBlob;\r
- FV_HANDOFF_TABLE_POINTERS2 FvBlob2;\r
- VOID *EventData;\r
- VOID *FvName;\r
- TCG_PCR_EVENT_HDR TcgEventHdr;\r
- UINT32 Instance;\r
- UINT32 Tpm2HashMask;\r
- TPML_DIGEST_VALUES DigestList;\r
- UINT32 DigestCount;\r
- EFI_PEI_FIRMWARE_VOLUME_INFO_MEASUREMENT_EXCLUDED_PPI *MeasurementExcludedFvPpi;\r
- EDKII_PEI_FIRMWARE_VOLUME_INFO_PREHASHED_FV_PPI *PrehashedFvPpi;\r
- HASH_INFO *PreHashInfo;\r
- UINT32 HashAlgoMask;\r
- EFI_PHYSICAL_ADDRESS FvOrgBase;\r
- EFI_PHYSICAL_ADDRESS FvDataBase;\r
- EFI_PEI_HOB_POINTERS Hob;\r
- EDKII_MIGRATED_FV_INFO *MigratedFvInfo;\r
+ UINT32 Index;\r
+ EFI_STATUS Status;\r
+ EFI_PLATFORM_FIRMWARE_BLOB FvBlob;\r
+ FV_HANDOFF_TABLE_POINTERS2 FvBlob2;\r
+ VOID *EventData;\r
+ VOID *FvName;\r
+ TCG_PCR_EVENT_HDR TcgEventHdr;\r
+ UINT32 Instance;\r
+ UINT32 Tpm2HashMask;\r
+ TPML_DIGEST_VALUES DigestList;\r
+ UINT32 DigestCount;\r
+ EFI_PEI_FIRMWARE_VOLUME_INFO_MEASUREMENT_EXCLUDED_PPI *MeasurementExcludedFvPpi;\r
+ EDKII_PEI_FIRMWARE_VOLUME_INFO_PREHASHED_FV_PPI *PrehashedFvPpi;\r
+ HASH_INFO *PreHashInfo;\r
+ UINT32 HashAlgoMask;\r
+ EFI_PHYSICAL_ADDRESS FvOrgBase;\r
+ EFI_PHYSICAL_ADDRESS FvDataBase;\r
+ EFI_PEI_HOB_POINTERS Hob;\r
+ EDKII_MIGRATED_FV_INFO *MigratedFvInfo;\r
\r
//\r
// Check Excluded FV list\r
//\r
Instance = 0;\r
do {\r
- Status = PeiServicesLocatePpi(\r
- &gEfiPeiFirmwareVolumeInfoMeasurementExcludedPpiGuid,\r
- Instance,\r
- NULL,\r
- (VOID**)&MeasurementExcludedFvPpi\r
- );\r
- if (!EFI_ERROR(Status)) {\r
- for (Index = 0; Index < MeasurementExcludedFvPpi->Count; Index ++) {\r
- if (MeasurementExcludedFvPpi->Fv[Index].FvBase == FvBase\r
- && MeasurementExcludedFvPpi->Fv[Index].FvLength == FvLength) {\r
+ Status = PeiServicesLocatePpi (\r
+ &gEfiPeiFirmwareVolumeInfoMeasurementExcludedPpiGuid,\r
+ Instance,\r
+ NULL,\r
+ (VOID **)&MeasurementExcludedFvPpi\r
+ );\r
+ if (!EFI_ERROR (Status)) {\r
+ for (Index = 0; Index < MeasurementExcludedFvPpi->Count; Index++) {\r
+ if ( (MeasurementExcludedFvPpi->Fv[Index].FvBase == FvBase)\r
+ && (MeasurementExcludedFvPpi->Fv[Index].FvLength == FvLength))\r
+ {\r
DEBUG ((DEBUG_INFO, "The FV which is excluded by Tcg2Pei starts at: 0x%x\n", FvBase));\r
DEBUG ((DEBUG_INFO, "The FV which is excluded by Tcg2Pei has the size: 0x%x\n", FvLength));\r
return EFI_SUCCESS;\r
\r
Instance++;\r
}\r
- } while (!EFI_ERROR(Status));\r
+ } while (!EFI_ERROR (Status));\r
\r
//\r
// Check measured FV list\r
//\r
- for (Index = 0; Index < mMeasuredBaseFvIndex; Index ++) {\r
- if (mMeasuredBaseFvInfo[Index].BlobBase == FvBase && mMeasuredBaseFvInfo[Index].BlobLength == FvLength) {\r
+ for (Index = 0; Index < mMeasuredBaseFvIndex; Index++) {\r
+ if ((mMeasuredBaseFvInfo[Index].BlobBase == FvBase) && (mMeasuredBaseFvInfo[Index].BlobLength == FvLength)) {\r
DEBUG ((DEBUG_INFO, "The FV which is already measured by Tcg2Pei starts at: 0x%x\n", FvBase));\r
DEBUG ((DEBUG_INFO, "The FV which is already measured by Tcg2Pei has the size: 0x%x\n", FvLength));\r
return EFI_SUCCESS;\r
&gEdkiiPeiFirmwareVolumeInfoPrehashedFvPpiGuid,\r
Instance,\r
NULL,\r
- (VOID**)&PrehashedFvPpi\r
+ (VOID **)&PrehashedFvPpi\r
);\r
- if (!EFI_ERROR(Status) && PrehashedFvPpi->FvBase == FvBase && PrehashedFvPpi->FvLength == FvLength) {\r
- ZeroMem (&DigestList, sizeof(TPML_DIGEST_VALUES));\r
+ if (!EFI_ERROR (Status) && (PrehashedFvPpi->FvBase == FvBase) && (PrehashedFvPpi->FvLength == FvLength)) {\r
+ ZeroMem (&DigestList, sizeof (TPML_DIGEST_VALUES));\r
\r
//\r
// The FV is prehashed, check against TPM hash mask\r
//\r
PreHashInfo = (HASH_INFO *)(PrehashedFvPpi + 1);\r
for (Index = 0, DigestCount = 0; Index < PrehashedFvPpi->Count; Index++) {\r
- DEBUG((DEBUG_INFO, "Hash Algo ID in PrehashedFvPpi=0x%x\n", PreHashInfo->HashAlgoId));\r
- HashAlgoMask = GetHashMaskFromAlgo(PreHashInfo->HashAlgoId);\r
+ DEBUG ((DEBUG_INFO, "Hash Algo ID in PrehashedFvPpi=0x%x\n", PreHashInfo->HashAlgoId));\r
+ HashAlgoMask = GetHashMaskFromAlgo (PreHashInfo->HashAlgoId);\r
if ((Tpm2HashMask & HashAlgoMask) != 0 ) {\r
//\r
// Hash is required, copy it to DigestList\r
//\r
- WriteUnaligned16(&(DigestList.digests[DigestCount].hashAlg), PreHashInfo->HashAlgoId);\r
+ WriteUnaligned16 (&(DigestList.digests[DigestCount].hashAlg), PreHashInfo->HashAlgoId);\r
CopyMem (\r
&DigestList.digests[DigestCount].digest,\r
PreHashInfo + 1,\r
//\r
Tpm2HashMask &= ~HashAlgoMask;\r
}\r
+\r
PreHashInfo = (HASH_INFO *)((UINT8 *)(PreHashInfo + 1) + PreHashInfo->HashSize);\r
}\r
\r
- WriteUnaligned32(&DigestList.count, DigestCount);\r
+ WriteUnaligned32 (&DigestList.count, DigestCount);\r
\r
break;\r
}\r
+\r
Instance++;\r
- } while (!EFI_ERROR(Status));\r
+ } while (!EFI_ERROR (Status));\r
\r
//\r
// Search the matched migration FV info\r
//\r
FvOrgBase = FvBase;\r
FvDataBase = FvBase;\r
- Hob.Raw = GetFirstGuidHob (&gEdkiiMigratedFvInfoGuid);\r
+ Hob.Raw = GetFirstGuidHob (&gEdkiiMigratedFvInfoGuid);\r
while (Hob.Raw != NULL) {\r
MigratedFvInfo = GET_GUID_HOB_DATA (Hob);\r
- if ((MigratedFvInfo->FvNewBase == (UINT32) FvBase) && (MigratedFvInfo->FvLength == (UINT32) FvLength)) {\r
+ if ((MigratedFvInfo->FvNewBase == (UINT32)FvBase) && (MigratedFvInfo->FvLength == (UINT32)FvLength)) {\r
//\r
// Found the migrated FV info\r
//\r
- FvOrgBase = (EFI_PHYSICAL_ADDRESS) (UINTN) MigratedFvInfo->FvOrgBase;\r
- FvDataBase = (EFI_PHYSICAL_ADDRESS) (UINTN) MigratedFvInfo->FvDataBase;\r
+ FvOrgBase = (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvOrgBase;\r
+ FvDataBase = (EFI_PHYSICAL_ADDRESS)(UINTN)MigratedFvInfo->FvDataBase;\r
break;\r
}\r
+\r
Hob.Raw = GET_NEXT_HOB (Hob);\r
Hob.Raw = GetNextGuidHob (&gEdkiiMigratedFvInfoGuid, Hob.Raw);\r
}\r
//\r
// Init the log event for FV measurement\r
//\r
- if (PcdGet32(PcdTcgPfpMeasurementRevision) >= TCG_EfiSpecIDEventStruct_SPEC_ERRATA_TPM2_REV_105) {\r
- FvBlob2.BlobDescriptionSize = sizeof(FvBlob2.BlobDescription);\r
- CopyMem (FvBlob2.BlobDescription, FV_HANDOFF_TABLE_DESC, sizeof(FvBlob2.BlobDescription));\r
+ if (PcdGet32 (PcdTcgPfpMeasurementRevision) >= TCG_EfiSpecIDEventStruct_SPEC_ERRATA_TPM2_REV_105) {\r
+ FvBlob2.BlobDescriptionSize = sizeof (FvBlob2.BlobDescription);\r
+ CopyMem (FvBlob2.BlobDescription, FV_HANDOFF_TABLE_DESC, sizeof (FvBlob2.BlobDescription));\r
FvName = GetFvName (FvBase, FvLength);\r
if (FvName != NULL) {\r
- AsciiSPrint ((CHAR8 *)FvBlob2.BlobDescription, sizeof(FvBlob2.BlobDescription), "Fv(%g)", FvName);\r
+ AsciiSPrint ((CHAR8 *)FvBlob2.BlobDescription, sizeof (FvBlob2.BlobDescription), "Fv(%g)", FvName);\r
}\r
+\r
FvBlob2.BlobBase = FvOrgBase;\r
FvBlob2.BlobLength = FvLength;\r
TcgEventHdr.PCRIndex = 0;\r
Status = HashLogExtendEvent (\r
&mEdkiiTcgPpi,\r
EDKII_TCG_PRE_HASH,\r
- (UINT8*) &DigestList, // HashData\r
- (UINTN) sizeof(DigestList), // HashDataLen\r
+ (UINT8 *)&DigestList, // HashData\r
+ (UINTN)sizeof (DigestList), // HashDataLen\r
&TcgEventHdr, // EventHdr\r
EventData // EventData\r
);\r
Status = HashLogExtendEvent (\r
&mEdkiiTcgPpi,\r
0,\r
- (UINT8*) (UINTN) FvDataBase, // HashData\r
- (UINTN) FvLength, // HashDataLen\r
- &TcgEventHdr, // EventHdr\r
- EventData // EventData\r
+ (UINT8 *)(UINTN)FvDataBase, // HashData\r
+ (UINTN)FvLength, // HashDataLen\r
+ &TcgEventHdr, // EventHdr\r
+ EventData // EventData\r
);\r
DEBUG ((DEBUG_INFO, "The FV which is measured by Tcg2Pei starts at: 0x%x\n", FvBase));\r
DEBUG ((DEBUG_INFO, "The FV which is measured by Tcg2Pei has the size: 0x%x\n", FvLength));\r
}\r
\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
DEBUG ((DEBUG_ERROR, "The FV which failed to be measured starts at: 0x%x\n", FvBase));\r
return Status;\r
}\r
VOID\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_PEI_FV_HANDLE VolumeHandle;\r
- EFI_FV_INFO VolumeInfo;\r
- EFI_PEI_FIRMWARE_VOLUME_PPI *FvPpi;\r
+ EFI_STATUS Status;\r
+ EFI_PEI_FV_HANDLE VolumeHandle;\r
+ EFI_FV_INFO VolumeInfo;\r
+ EFI_PEI_FIRMWARE_VOLUME_PPI *FvPpi;\r
\r
PERF_START_EX (mFileHandle, "EventRec", "Tcg2Pei", 0, PERF_ID_TCG2_PEI);\r
\r
&VolumeInfo.FvFormat,\r
0,\r
NULL,\r
- (VOID**)&FvPpi\r
+ (VOID **)&FvPpi\r
);\r
ASSERT_EFI_ERROR (Status);\r
\r
- Status = MeasureFvImage ((EFI_PHYSICAL_ADDRESS) (UINTN) VolumeInfo.FvStart, VolumeInfo.FvSize);\r
+ Status = MeasureFvImage ((EFI_PHYSICAL_ADDRESS)(UINTN)VolumeInfo.FvStart, VolumeInfo.FvSize);\r
\r
PERF_END_EX (mFileHandle, "EventRec", "Tcg2Pei", 0, PERF_ID_TCG2_PEI + 1);\r
\r
EFI_STATUS\r
EFIAPI\r
FirmwareVolumeInfoPpiNotifyCallback (\r
- IN EFI_PEI_SERVICES **PeiServices,\r
- IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,\r
- IN VOID *Ppi\r
+ IN EFI_PEI_SERVICES **PeiServices,\r
+ IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor,\r
+ IN VOID *Ppi\r
)\r
{\r
EFI_PEI_FIRMWARE_VOLUME_INFO_PPI *Fv;\r
EFI_PEI_FIRMWARE_VOLUME_PPI *FvPpi;\r
UINTN Index;\r
\r
- Fv = (EFI_PEI_FIRMWARE_VOLUME_INFO_PPI *) Ppi;\r
+ Fv = (EFI_PEI_FIRMWARE_VOLUME_INFO_PPI *)Ppi;\r
\r
//\r
// The PEI Core can not dispatch or load files from memory mapped FVs that do not support FvPpi.\r
&Fv->FvFormat,\r
0,\r
NULL,\r
- (VOID**)&FvPpi\r
+ (VOID **)&FvPpi\r
);\r
if (EFI_ERROR (Status)) {\r
return EFI_SUCCESS;\r
// This is an FV from an FFS file, and the parent FV must have already been measured,\r
// No need to measure twice, so just record the FV and return\r
//\r
- if (Fv->ParentFvName != NULL || Fv->ParentFileName != NULL ) {\r
-\r
+ if ((Fv->ParentFvName != NULL) || (Fv->ParentFileName != NULL)) {\r
if (mMeasuredChildFvIndex >= mMeasuredMaxChildFvIndex) {\r
mMeasuredChildFvInfo = ReallocatePool (\r
sizeof (EFI_PLATFORM_FIRMWARE_BLOB) * mMeasuredMaxChildFvIndex,\r
ASSERT (mMeasuredChildFvInfo != NULL);\r
mMeasuredMaxChildFvIndex = mMeasuredMaxChildFvIndex + FIRMWARE_BLOB_GROWTH_STEP;\r
}\r
+\r
//\r
// Check whether FV is in the measured child FV list.\r
//\r
for (Index = 0; Index < mMeasuredChildFvIndex; Index++) {\r
- if (mMeasuredChildFvInfo[Index].BlobBase == (EFI_PHYSICAL_ADDRESS) (UINTN) Fv->FvInfo) {\r
+ if (mMeasuredChildFvInfo[Index].BlobBase == (EFI_PHYSICAL_ADDRESS)(UINTN)Fv->FvInfo) {\r
return EFI_SUCCESS;\r
}\r
}\r
- mMeasuredChildFvInfo[mMeasuredChildFvIndex].BlobBase = (EFI_PHYSICAL_ADDRESS) (UINTN) Fv->FvInfo;\r
+\r
+ mMeasuredChildFvInfo[mMeasuredChildFvIndex].BlobBase = (EFI_PHYSICAL_ADDRESS)(UINTN)Fv->FvInfo;\r
mMeasuredChildFvInfo[mMeasuredChildFvIndex].BlobLength = Fv->FvInfoSize;\r
mMeasuredChildFvIndex++;\r
return EFI_SUCCESS;\r
}\r
\r
- return MeasureFvImage ((EFI_PHYSICAL_ADDRESS) (UINTN) Fv->FvInfo, Fv->FvInfoSize);\r
+ return MeasureFvImage ((EFI_PHYSICAL_ADDRESS)(UINTN)Fv->FvInfo, Fv->FvInfoSize);\r
}\r
\r
/**\r
**/\r
EFI_STATUS\r
PeimEntryMP (\r
- IN EFI_PEI_SERVICES **PeiServices\r
+ IN EFI_PEI_SERVICES **PeiServices\r
)\r
{\r
- EFI_STATUS Status;\r
+ EFI_STATUS Status;\r
\r
//\r
// install Tcg Services\r
}\r
\r
Status = MeasureMainBios ();\r
- if (EFI_ERROR(Status)) {\r
+ if (EFI_ERROR (Status)) {\r
return Status;\r
}\r
\r
**/\r
EFI_STATUS\r
MeasureSeparatorEventWithError (\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
//\r
// Use EventData 0x1 to indicate there is error.\r
//\r
- EventData = 0x1;\r
+ EventData = 0x1;\r
TcgEvent.PCRIndex = PCRIndex;\r
TcgEvent.EventType = EV_SEPARATOR;\r
TcgEvent.EventSize = (UINT32)sizeof (EventData);\r
- return HashLogExtendEvent(&mEdkiiTcgPpi, 0, (UINT8 *)&EventData, TcgEvent.EventSize, &TcgEvent,(UINT8 *)&EventData);\r
+ return HashLogExtendEvent (&mEdkiiTcgPpi, 0, (UINT8 *)&EventData, TcgEvent.EventSize, &TcgEvent, (UINT8 *)&EventData);\r
}\r
\r
/**\r
EFI_STATUS\r
EFIAPI\r
PeimEntryMA (\r
- IN EFI_PEI_FILE_HANDLE FileHandle,\r
- IN CONST EFI_PEI_SERVICES **PeiServices\r
+ IN EFI_PEI_FILE_HANDLE FileHandle,\r
+ IN CONST EFI_PEI_SERVICES **PeiServices\r
)\r
{\r
- EFI_STATUS Status;\r
- EFI_STATUS Status2;\r
- EFI_BOOT_MODE BootMode;\r
- TPM_PCRINDEX PcrIndex;\r
- BOOLEAN S3ErrorReport;\r
-\r
- if (CompareGuid (PcdGetPtr(PcdTpmInstanceGuid), &gEfiTpmDeviceInstanceNoneGuid) ||\r
- CompareGuid (PcdGetPtr(PcdTpmInstanceGuid), &gEfiTpmDeviceInstanceTpm12Guid)){\r
+ EFI_STATUS Status;\r
+ EFI_STATUS Status2;\r
+ EFI_BOOT_MODE BootMode;\r
+ TPM_PCRINDEX PcrIndex;\r
+ BOOLEAN S3ErrorReport;\r
+\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
// In S3 path, skip shadow logic. no measurement is required\r
//\r
if (BootMode != BOOT_ON_S3_RESUME) {\r
- Status = (**PeiServices).RegisterForShadow(FileHandle);\r
+ Status = (**PeiServices).RegisterForShadow (FileHandle);\r
if (Status == EFI_ALREADY_STARTED) {\r
mImageInMemory = TRUE;\r
- mFileHandle = FileHandle;\r
+ mFileHandle = FileHandle;\r
} else if (Status == EFI_NOT_FOUND) {\r
ASSERT_EFI_ERROR (Status);\r
}\r
if (PcdGet8 (PcdTpm2InitializationPolicy) == 1) {\r
if (BootMode == BOOT_ON_S3_RESUME) {\r
Status = Tpm2Startup (TPM_SU_STATE);\r
- if (EFI_ERROR (Status) ) {\r
+ if (EFI_ERROR (Status)) {\r
Status = Tpm2Startup (TPM_SU_CLEAR);\r
- if (!EFI_ERROR(Status)) {\r
+ if (!EFI_ERROR (Status)) {\r
S3ErrorReport = TRUE;\r
}\r
}\r
} else {\r
Status = Tpm2Startup (TPM_SU_CLEAR);\r
}\r
- if (EFI_ERROR (Status) ) {\r
+\r
+ if (EFI_ERROR (Status)) {\r
goto Done;\r
}\r
}\r
}\r
\r
if (mImageInMemory) {\r
- Status = PeimEntryMP ((EFI_PEI_SERVICES**)PeiServices);\r
+ Status = PeimEntryMP ((EFI_PEI_SERVICES **)PeiServices);\r
return Status;\r
}\r
\r
Done:\r
if (EFI_ERROR (Status)) {\r
DEBUG ((DEBUG_ERROR, "TPM2 error! Build Hob\n"));\r
- BuildGuidHob (&gTpmErrorHobGuid,0);\r
+ BuildGuidHob (&gTpmErrorHobGuid, 0);\r
REPORT_STATUS_CODE (\r
EFI_ERROR_CODE | EFI_ERROR_MINOR,\r
(PcdGet32 (PcdStatusCodeSubClassTpmDevice) | EFI_P_EC_INTERFACE_ERROR)\r
);\r
}\r
+\r
//\r
// Always install TpmInitializationDonePpi no matter success or fail.\r
// Other driver can know TPM initialization state by TpmInitializedPpi.\r