mirror of
https://github.com/acidanthera/audk.git
synced 2025-07-23 21:54:27 +02:00
OvmfPkg/SecTpmMeasurementLib: Fix the mapping error of PCR and RTMR index
BZ: https://bugzilla.tianocore.org/show_bug.cgi?id=4179 TDVF has the feature to do RTMR measurement in SEC phase. In the same time it builds a GUID hob which carries the hash value of the measurement so that in DXE phase a td event can be created based on this GUID Hob. There is a mapping error between TPM PCR index and RTMR index according to UEFI 2.10. That PCR6 is missing in the mapping. This patch fixes this issue. Cc: Erdem Aktas <erdemaktas@google.com> [ruleof2] Cc: James Bottomley <jejb@linux.ibm.com> [jejb] Cc: Jiewen Yao <jiewen.yao@intel.com> [jyao1] Cc: Tom Lendacky <thomas.lendacky@amd.com> [tlendacky] Cc: Arti Gupta <ARGU@microsoft.com> Signed-off-by: Min Xu <min.m.xu@intel.com> Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
This commit is contained in:
parent
fb91d6cbd0
commit
01c0d3c0d5
@ -33,12 +33,11 @@ typedef struct {
|
|||||||
/**
|
/**
|
||||||
Get the mapped RTMR index based on the input PCRIndex.
|
Get the mapped RTMR index based on the input PCRIndex.
|
||||||
RTMR[0] => PCR[1,7]
|
RTMR[0] => PCR[1,7]
|
||||||
RTMR[1] => PCR[2,3,4,5]
|
RTMR[1] => PCR[2,3,4,5,6]
|
||||||
RTMR[2] => PCR[8~15]
|
RTMR[2] => PCR[8~15]
|
||||||
RTMR[3] => NA
|
RTMR[3] => NA
|
||||||
Note:
|
Note:
|
||||||
PCR[0] is mapped to MRTD and should not appear here.
|
PCR[0] is mapped to MRTD and should not appear here.
|
||||||
PCR[6] is reserved for OEM. It is not used.
|
|
||||||
|
|
||||||
@param[in] PCRIndex The input PCR index
|
@param[in] PCRIndex The input PCR index
|
||||||
|
|
||||||
@ -51,7 +50,7 @@ GetMappedRtmrIndex (
|
|||||||
{
|
{
|
||||||
UINT8 RtmrIndex;
|
UINT8 RtmrIndex;
|
||||||
|
|
||||||
if ((PCRIndex == 6) || (PCRIndex == 0) || (PCRIndex > 15)) {
|
if ((PCRIndex == 0) || (PCRIndex > 15)) {
|
||||||
DEBUG ((DEBUG_ERROR, "Invalid PCRIndex(%d) map to MR Index.\n", PCRIndex));
|
DEBUG ((DEBUG_ERROR, "Invalid PCRIndex(%d) map to MR Index.\n", PCRIndex));
|
||||||
ASSERT (FALSE);
|
ASSERT (FALSE);
|
||||||
return INVALID_PCR2MR_INDEX;
|
return INVALID_PCR2MR_INDEX;
|
||||||
@ -60,7 +59,7 @@ GetMappedRtmrIndex (
|
|||||||
RtmrIndex = 0;
|
RtmrIndex = 0;
|
||||||
if ((PCRIndex == 1) || (PCRIndex == 7)) {
|
if ((PCRIndex == 1) || (PCRIndex == 7)) {
|
||||||
RtmrIndex = 0;
|
RtmrIndex = 0;
|
||||||
} else if ((PCRIndex >= 2) && (PCRIndex < 6)) {
|
} else if ((PCRIndex >= 2) && (PCRIndex <= 6)) {
|
||||||
RtmrIndex = 1;
|
RtmrIndex = 1;
|
||||||
} else if ((PCRIndex >= 8) && (PCRIndex <= 15)) {
|
} else if ((PCRIndex >= 8) && (PCRIndex <= 15)) {
|
||||||
RtmrIndex = 2;
|
RtmrIndex = 2;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user