SecurityPkg TcgSmm: Enable Storage actions.

After enable storage related actions in the
TcgPhysicalPresenceStorageLib, use this library to support
storage related actions in this driver.

Reviewed-by: Jiewen Yao <jiewen.yao@intel.com>
Reviewed-by: Chao Zhang <chao.b.zhang@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Eric Dong <eric.dong@intel.com>
This commit is contained in:
Eric Dong 2016-11-14 14:47:41 +08:00 committed by Star Zeng
parent 509b0fe358
commit 177dca331f
3 changed files with 26 additions and 0 deletions

View File

@ -55,6 +55,7 @@ PhysicalPresenceCallback (
EFI_PHYSICAL_PRESENCE PpData; EFI_PHYSICAL_PRESENCE PpData;
EFI_PHYSICAL_PRESENCE_FLAGS Flags; EFI_PHYSICAL_PRESENCE_FLAGS Flags;
BOOLEAN RequestConfirmed; BOOLEAN RequestConfirmed;
UINT32 StorageFlags;
// //
// Get the Physical Presence variable // Get the Physical Presence variable
@ -150,6 +151,11 @@ PhysicalPresenceCallback (
return EFI_SUCCESS; return EFI_SUCCESS;
} }
//
// Get the Physical Presence storage flags
//
StorageFlags = TcgPhysicalPresenceStorageLibReturnStorageFlags();
RequestConfirmed = FALSE; RequestConfirmed = FALSE;
switch (mTcgNvs->PPRequestUserConfirm) { switch (mTcgNvs->PPRequestUserConfirm) {
@ -201,6 +207,23 @@ PhysicalPresenceCallback (
// //
mTcgNvs->PhysicalPresence.ReturnCode = TCG_PP_GET_USER_CONFIRMATION_NOT_IMPLEMENTED; mTcgNvs->PhysicalPresence.ReturnCode = TCG_PP_GET_USER_CONFIRMATION_NOT_IMPLEMENTED;
return EFI_SUCCESS; return EFI_SUCCESS;
case TCG2_PHYSICAL_PRESENCE_ENABLE_BLOCK_SID:
if ((StorageFlags & TCG_BIOS_STORAGE_MANAGEMENT_FLAG_PP_REQUIRED_FOR_ENABLE_BLOCK_SID) == 0) {
RequestConfirmed = TRUE;
}
break;
case TCG2_PHYSICAL_PRESENCE_DISABLE_BLOCK_SID:
if ((StorageFlags & TCG_BIOS_STORAGE_MANAGEMENT_FLAG_PP_REQUIRED_FOR_DISABLE_BLOCK_SID) == 0) {
RequestConfirmed = TRUE;
}
break;
case TCG2_PHYSICAL_PRESENCE_SET_PP_REQUIRED_FOR_ENABLE_BLOCK_SID_FUNC_TRUE:
case TCG2_PHYSICAL_PRESENCE_SET_PP_REQUIRED_FOR_DISABLE_BLOCK_SID_FUNC_TRUE:
break;
default: default:
break; break;
} }

View File

@ -18,6 +18,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <PiDxe.h> #include <PiDxe.h>
#include <IndustryStandard/Acpi.h> #include <IndustryStandard/Acpi.h>
#include <IndustryStandard/UefiTcgPlatform.h> #include <IndustryStandard/UefiTcgPlatform.h>
#include <IndustryStandard/TcgPhysicalPresence.h>
#include <Guid/PhysicalPresenceData.h> #include <Guid/PhysicalPresenceData.h>
#include <Guid/MemoryOverwriteControl.h> #include <Guid/MemoryOverwriteControl.h>
@ -37,6 +38,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
#include <Library/TpmMeasurementLib.h> #include <Library/TpmMeasurementLib.h>
#include <Library/PcdLib.h> #include <Library/PcdLib.h>
#include <Library/TcgPpVendorLib.h> #include <Library/TcgPpVendorLib.h>
#include <Library/TcgPhysicalPresenceStorageLib.h>
#pragma pack(1) #pragma pack(1)
typedef struct { typedef struct {

View File

@ -50,6 +50,7 @@
TpmMeasurementLib TpmMeasurementLib
PcdLib PcdLib
TcgPpVendorLib TcgPpVendorLib
TcgPhysicalPresenceStorageLib
[Guids] [Guids]
## SOMETIMES_PRODUCES ## Variable:L"PhysicalPresence" ## SOMETIMES_PRODUCES ## Variable:L"PhysicalPresence"