Rename Trusted Hob to Measured FV hob and add Guided Hob layout structure

Signed-off-by : Chao Zhang<chao.b.zhang@intel.com>
Reviewed-by   : Dong Guo  <guo.dong@intel.com>


git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13762 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
czhang46 2012-09-28 00:57:02 +00:00
parent 751915bcd9
commit 0758c830f7
6 changed files with 39 additions and 36 deletions

View File

@ -1,5 +1,5 @@
/** @file /** @file
Defines the HOB GUID used to pass all PEI trusted FV info to Defines the HOB GUID used to pass all PEI measured FV info to
DXE Driver. DXE Driver.
Copyright (c) 2012, Intel Corporation. All rights reserved.<BR> Copyright (c) 2012, Intel Corporation. All rights reserved.<BR>
@ -13,17 +13,24 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
**/ **/
#ifndef _TRUSTED_FV_HOB_H_ #ifndef _MEASURED_FV_HOB_H_
#define _TRUSTED_FV_HOB_H_ #define _MEASURED_FV_HOB_H_
#include <IndustryStandard/UefiTcgPlatform.h>
/// ///
/// The Global ID of a GUIDed HOB used to pass all PEI trusted FV info to DXE Driver. /// The Global ID of a GUIDed HOB used to pass all PEI measured FV info to DXE Driver.
/// ///
#define EFI_TRUSTED_FV_HOB_GUID \ #define EFI_MEASURED_FV_HOB_GUID \
{ \ { \
0xb2360b42, 0x7173, 0x420a, { 0x86, 0x96, 0x46, 0xca, 0x6b, 0xab, 0x10, 0x60 } \ 0xb2360b42, 0x7173, 0x420a, { 0x86, 0x96, 0x46, 0xca, 0x6b, 0xab, 0x10, 0x60 } \
} }
extern EFI_GUID gTrustedFvHobGuid; extern EFI_GUID gMeasuredFvHobGuid;
typedef struct {
UINT32 Num;
EFI_PLATFORM_FIRMWARE_BLOB MeasuredFvBuf[1];
} MEASURED_HOB_DATA;
#endif #endif

View File

@ -34,7 +34,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <Protocol/DevicePathToText.h> #include <Protocol/DevicePathToText.h>
#include <Protocol/FirmwareVolumeBlock.h> #include <Protocol/FirmwareVolumeBlock.h>
#include <Guid/TrustedFvHob.h> #include <Guid/MeasuredFvHob.h>
#include <Library/BaseLib.h> #include <Library/BaseLib.h>
#include <Library/DebugLib.h> #include <Library/DebugLib.h>
@ -59,7 +59,7 @@ UINTN mImageSize;
// Measured FV handle cache // Measured FV handle cache
// //
EFI_HANDLE mCacheMeasuredHandle = NULL; EFI_HANDLE mCacheMeasuredHandle = NULL;
UINT32 *mGuidHobData = NULL; MEASURED_HOB_DATA *mMeasuredHobData = NULL;
/** /**
Reads contents of a PE/COFF image in memory buffer. Reads contents of a PE/COFF image in memory buffer.
@ -740,7 +740,6 @@ DxeTpmMeasureBootHandler (
PE_COFF_LOADER_IMAGE_CONTEXT ImageContext; PE_COFF_LOADER_IMAGE_CONTEXT ImageContext;
EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *FvbProtocol; EFI_FIRMWARE_VOLUME_BLOCK_PROTOCOL *FvbProtocol;
EFI_PHYSICAL_ADDRESS FvAddress; EFI_PHYSICAL_ADDRESS FvAddress;
EFI_PLATFORM_FIRMWARE_BLOB *TrustedFvBuf;
UINT32 Index; UINT32 Index;
Status = gBS->LocateProtocol (&gEfiTcgProtocolGuid, NULL, (VOID **) &TcgProtocol); Status = gBS->LocateProtocol (&gEfiTcgProtocolGuid, NULL, (VOID **) &TcgProtocol);
@ -848,14 +847,14 @@ DxeTpmMeasureBootHandler (
return EFI_SUCCESS; return EFI_SUCCESS;
} }
// //
// The PE image from untrusted Firmware volume need be measured // The PE image from unmeasured Firmware volume need be measured
// The PE image from trusted Firmware volume will be mearsured according to policy below. // The PE image from measured Firmware volume will be mearsured according to policy below.
// if it is driver, do not measure // If it is driver, do not measure
// If it is application, still measure. // If it is application, still measure.
// //
ApplicationRequired = TRUE; ApplicationRequired = TRUE;
if (mCacheMeasuredHandle != Handle && mGuidHobData != NULL) { if (mCacheMeasuredHandle != Handle && mMeasuredHobData != NULL) {
// //
// Search for Root FV of this PE image // Search for Root FV of this PE image
// //
@ -877,11 +876,10 @@ DxeTpmMeasureBootHandler (
return Status; return Status;
} }
TrustedFvBuf = (EFI_PLATFORM_FIRMWARE_BLOB *)(mGuidHobData + 1);
ApplicationRequired = FALSE; ApplicationRequired = FALSE;
for (Index = 0; Index < *mGuidHobData; Index++) { for (Index = 0; Index < mMeasuredHobData->Num; Index++) {
if(TrustedFvBuf[Index].BlobBase == FvAddress) { if(mMeasuredHobData->MeasuredFvBuf[Index].BlobBase == FvAddress) {
// //
// Cache measured FV for next measurement // Cache measured FV for next measurement
// //
@ -996,10 +994,10 @@ DxeTpmMeasureBootLibConstructor (
GuidHob = NULL; GuidHob = NULL;
GuidHob = GetFirstGuidHob (&gTrustedFvHobGuid); GuidHob = GetFirstGuidHob (&gMeasuredFvHobGuid);
if (GuidHob != NULL) { if (GuidHob != NULL) {
mGuidHobData = GET_GUID_HOB_DATA (GuidHob); mMeasuredHobData = GET_GUID_HOB_DATA (GuidHob);
} }
return RegisterSecurity2Handler ( return RegisterSecurity2Handler (

View File

@ -53,7 +53,7 @@
HobLib HobLib
[Guids] [Guids]
gTrustedFvHobGuid gMeasuredFvHobGuid
[Protocols] [Protocols]
gEfiTcgProtocolGuid ## CONSUMES gEfiTcgProtocolGuid ## CONSUMES

View File

@ -47,8 +47,8 @@
## Include/Guid/TcgEventHob.h ## Include/Guid/TcgEventHob.h
gTcgEventEntryHobGuid = { 0x2e3044ac, 0x879f, 0x490f, {0x97, 0x60, 0xbb, 0xdf, 0xaf, 0x69, 0x5f, 0x50 }} gTcgEventEntryHobGuid = { 0x2e3044ac, 0x879f, 0x490f, {0x97, 0x60, 0xbb, 0xdf, 0xaf, 0x69, 0x5f, 0x50 }}
## Include/Guid/TrustedFvHob.h ## Include/Guid/MeasuredFvHob.h
gTrustedFvHobGuid = { 0xb2360b42, 0x7173, 0x420a, { 0x86, 0x96, 0x46, 0xca, 0x6b, 0xab, 0x10, 0x60 }} gMeasuredFvHobGuid = { 0xb2360b42, 0x7173, 0x420a, { 0x86, 0x96, 0x46, 0xca, 0x6b, 0xab, 0x10, 0x60 }}
## Include/Guid/PhysicalPresenceData.h ## Include/Guid/PhysicalPresenceData.h
gEfiPhysicalPresenceGuid = { 0xf6499b1, 0xe9ad, 0x493d, { 0xb9, 0xc2, 0x2f, 0x90, 0x81, 0x5c, 0x6c, 0xbc }} gEfiPhysicalPresenceGuid = { 0xf6499b1, 0xe9ad, 0x493d, { 0xb9, 0xc2, 0x2f, 0x90, 0x81, 0x5c, 0x6c, 0xbc }}

View File

@ -23,7 +23,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <Ppi/EndOfPeiPhase.h> #include <Ppi/EndOfPeiPhase.h>
#include <Guid/TcgEventHob.h> #include <Guid/TcgEventHob.h>
#include <Guid/TrustedFvHob.h> #include <Guid/MeasuredFvHob.h>
#include <Library/DebugLib.h> #include <Library/DebugLib.h>
#include <Library/BaseMemoryLib.h> #include <Library/BaseMemoryLib.h>
@ -148,35 +148,33 @@ EndofPeiSignalNotifyCallBack (
IN VOID *Ppi IN VOID *Ppi
) )
{ {
UINT8 *HobData; MEASURED_HOB_DATA *MeasuredHobData;
HobData = NULL; MeasuredHobData = NULL;
// //
// Create a Guid hob to save all trusted Fv // Create a Guid hob to save all measured Fv
// //
HobData = BuildGuidHob( MeasuredHobData = BuildGuidHob(
&gTrustedFvHobGuid, &gMeasuredFvHobGuid,
sizeof(UINTN) + sizeof(EFI_PLATFORM_FIRMWARE_BLOB) * (mMeasuredBaseFvIndex + mMeasuredChildFvIndex) sizeof(UINTN) + sizeof(EFI_PLATFORM_FIRMWARE_BLOB) * (mMeasuredBaseFvIndex + mMeasuredChildFvIndex)
); );
if (HobData != NULL){ if (MeasuredHobData != NULL){
// //
// Save measured FV info enty number // Save measured FV info enty number
// //
*(UINT32 *)HobData = mMeasuredBaseFvIndex + mMeasuredChildFvIndex; MeasuredHobData->Num = mMeasuredBaseFvIndex + mMeasuredChildFvIndex;
HobData += sizeof(UINT32);
// //
// Save measured base Fv info // Save measured base Fv info
// //
CopyMem (HobData, mMeasuredBaseFvInfo, sizeof(EFI_PLATFORM_FIRMWARE_BLOB) * (mMeasuredBaseFvIndex)); CopyMem (MeasuredHobData->MeasuredFvBuf, mMeasuredBaseFvInfo, sizeof(EFI_PLATFORM_FIRMWARE_BLOB) * (mMeasuredBaseFvIndex));
HobData += sizeof(EFI_PLATFORM_FIRMWARE_BLOB) * (mMeasuredBaseFvIndex);
// //
// Save measured child Fv info // Save measured child Fv info
// //
CopyMem (HobData, mMeasuredChildFvInfo, sizeof(EFI_PLATFORM_FIRMWARE_BLOB) * (mMeasuredChildFvIndex)); CopyMem (&MeasuredHobData->MeasuredFvBuf[mMeasuredBaseFvIndex] , mMeasuredChildFvInfo, sizeof(EFI_PLATFORM_FIRMWARE_BLOB) * (mMeasuredChildFvIndex));
} }
return EFI_SUCCESS; return EFI_SUCCESS;

View File

@ -51,7 +51,7 @@
[Guids] [Guids]
gTcgEventEntryHobGuid gTcgEventEntryHobGuid
gTrustedFvHobGuid gMeasuredFvHobGuid
[Ppis] [Ppis]
gPeiLockPhysicalPresencePpiGuid gPeiLockPhysicalPresencePpiGuid