mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-31 01:24:12 +02:00
SecurityPkg/PeiTpmMeasurementLib: Support CC Measurement
PeiTpmMeasurementLib is updated to support both TCG measurement and CC Measurement. gEfiPeiMasterBootModePpiGuid is removed from [Depex] because it is not needed for the library. Cc: Jiewen Yao <jiewen.yao@intel.com> Signed-off-by: Min Xu <min.m.xu@intel.com> Signed-off-by: Ceping Sun <cepingx.sun@intel.com>
This commit is contained in:
parent
3b07a2fb52
commit
b2df9a89ba
@ -7,17 +7,80 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
|
||||
**/
|
||||
|
||||
#include <PiPei.h>
|
||||
|
||||
#include <Library/BaseMemoryLib.h>
|
||||
#include <Library/PeiServicesLib.h>
|
||||
#include <Library/PeiServicesTablePointerLib.h>
|
||||
#include <Library/DebugLib.h>
|
||||
#include <Library/HobLib.h>
|
||||
#include <Library/TpmMeasurementLib.h>
|
||||
|
||||
#include <Ppi/Tcg.h>
|
||||
#include <Ppi/CcMeasurement.h>
|
||||
#include <IndustryStandard/UefiTcgPlatform.h>
|
||||
|
||||
EFI_STATUS
|
||||
CcMeasureAndLogData (
|
||||
EDKII_CC_PPI *CcPpi,
|
||||
IN UINT32 PcrIndex,
|
||||
IN UINT32 EventType,
|
||||
IN VOID *EventLog,
|
||||
IN UINT32 LogLen,
|
||||
IN VOID *HashData,
|
||||
IN UINT64 HashDataLen
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
CC_EVENT_HDR CcEventHdr;
|
||||
EFI_CC_MR_INDEX MrIndex;
|
||||
|
||||
Status = CcPpi->MapPcrToMrIndex (CcPpi, PcrIndex, &MrIndex);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
}
|
||||
|
||||
CcEventHdr.MrIndex = MrIndex;
|
||||
CcEventHdr.EventType = EventType;
|
||||
CcEventHdr.EventSize = LogLen;
|
||||
|
||||
Status = CcPpi->HashLogExtendEvent (
|
||||
CcPpi,
|
||||
0,
|
||||
(EFI_PHYSICAL_ADDRESS)(UINTN)HashData,
|
||||
(UINTN)HashDataLen,
|
||||
&CcEventHdr,
|
||||
EventLog
|
||||
);
|
||||
return Status;
|
||||
}
|
||||
|
||||
EFI_STATUS
|
||||
TcgMeasureAndLogData (
|
||||
EDKII_TCG_PPI *TcgPpi,
|
||||
IN UINT32 PcrIndex,
|
||||
IN UINT32 EventType,
|
||||
IN VOID *EventLog,
|
||||
IN UINT32 LogLen,
|
||||
IN VOID *HashData,
|
||||
IN UINT64 HashDataLen
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
TCG_PCR_EVENT_HDR TcgEventHdr;
|
||||
|
||||
TcgEventHdr.PCRIndex = PcrIndex;
|
||||
TcgEventHdr.EventType = EventType;
|
||||
TcgEventHdr.EventSize = LogLen;
|
||||
|
||||
Status = TcgPpi->HashLogExtendEvent (
|
||||
TcgPpi,
|
||||
0,
|
||||
HashData,
|
||||
(UINTN)HashDataLen,
|
||||
&TcgEventHdr,
|
||||
EventLog
|
||||
);
|
||||
return Status;
|
||||
}
|
||||
|
||||
/**
|
||||
Tpm measure and log data, and extend the measurement result into a specific PCR.
|
||||
|
||||
@ -44,9 +107,20 @@ TpmMeasureAndLogData (
|
||||
IN UINT64 HashDataLen
|
||||
)
|
||||
{
|
||||
EFI_STATUS Status;
|
||||
EDKII_TCG_PPI *TcgPpi;
|
||||
TCG_PCR_EVENT_HDR TcgEventHdr;
|
||||
EFI_STATUS Status;
|
||||
EDKII_TCG_PPI *TcgPpi;
|
||||
EDKII_CC_PPI *CcPpi;
|
||||
|
||||
Status = PeiServicesLocatePpi (
|
||||
&gEdkiiCcPpiGuid,
|
||||
0,
|
||||
NULL,
|
||||
(VOID **)&CcPpi
|
||||
);
|
||||
if (!EFI_ERROR (Status)) {
|
||||
DEBUG ((DEBUG_INFO, "PeiTpmMeasureAndLogData with Cc Measurement Ppi \n"));
|
||||
return CcMeasureAndLogData (CcPpi, PcrIndex, EventType, EventLog, LogLen, HashData, HashDataLen);
|
||||
}
|
||||
|
||||
Status = PeiServicesLocatePpi (
|
||||
&gEdkiiTcgPpiGuid,
|
||||
@ -54,21 +128,10 @@ TpmMeasureAndLogData (
|
||||
NULL,
|
||||
(VOID **)&TcgPpi
|
||||
);
|
||||
if (EFI_ERROR (Status)) {
|
||||
return Status;
|
||||
if (!EFI_ERROR (Status)) {
|
||||
DEBUG ((DEBUG_INFO, "PeiTpmMeasureAndLogData with Tcg Ppi \n"));
|
||||
Status = TcgMeasureAndLogData (TcgPpi, PcrIndex, EventType, EventLog, LogLen, HashData, HashDataLen);
|
||||
}
|
||||
|
||||
TcgEventHdr.PCRIndex = PcrIndex;
|
||||
TcgEventHdr.EventType = EventType;
|
||||
TcgEventHdr.EventSize = LogLen;
|
||||
|
||||
Status = TcgPpi->HashLogExtendEvent (
|
||||
TcgPpi,
|
||||
0,
|
||||
HashData,
|
||||
(UINTN)HashDataLen,
|
||||
&TcgEventHdr,
|
||||
EventLog
|
||||
);
|
||||
return Status;
|
||||
}
|
||||
|
@ -44,6 +44,7 @@
|
||||
|
||||
[Ppis]
|
||||
gEdkiiTcgPpiGuid ## CONSUMES
|
||||
gEdkiiCcPpiGuid ## CONSUMES
|
||||
|
||||
[Depex]
|
||||
gEfiPeiMasterBootModePpiGuid
|
||||
TRUE
|
||||
|
Loading…
x
Reference in New Issue
Block a user