From 177dca331f8ebf5cde4d0df14988e47b5fb25877 Mon Sep 17 00:00:00 2001 From: Eric Dong Date: Mon, 14 Nov 2016 14:47:41 +0800 Subject: 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 Reviewed-by: Chao Zhang Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Eric Dong --- SecurityPkg/Tcg/TcgSmm/TcgSmm.c | 23 +++++++++++++++++++++++ SecurityPkg/Tcg/TcgSmm/TcgSmm.h | 2 ++ SecurityPkg/Tcg/TcgSmm/TcgSmm.inf | 1 + 3 files changed, 26 insertions(+) (limited to 'SecurityPkg/Tcg') diff --git a/SecurityPkg/Tcg/TcgSmm/TcgSmm.c b/SecurityPkg/Tcg/TcgSmm/TcgSmm.c index 589bab694b..743b3ebbe1 100644 --- a/SecurityPkg/Tcg/TcgSmm/TcgSmm.c +++ b/SecurityPkg/Tcg/TcgSmm/TcgSmm.c @@ -55,6 +55,7 @@ PhysicalPresenceCallback ( EFI_PHYSICAL_PRESENCE PpData; EFI_PHYSICAL_PRESENCE_FLAGS Flags; BOOLEAN RequestConfirmed; + UINT32 StorageFlags; // // Get the Physical Presence variable @@ -150,6 +151,11 @@ PhysicalPresenceCallback ( return EFI_SUCCESS; } + // + // Get the Physical Presence storage flags + // + StorageFlags = TcgPhysicalPresenceStorageLibReturnStorageFlags(); + RequestConfirmed = FALSE; switch (mTcgNvs->PPRequestUserConfirm) { @@ -201,6 +207,23 @@ PhysicalPresenceCallback ( // mTcgNvs->PhysicalPresence.ReturnCode = TCG_PP_GET_USER_CONFIRMATION_NOT_IMPLEMENTED; 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: break; } diff --git a/SecurityPkg/Tcg/TcgSmm/TcgSmm.h b/SecurityPkg/Tcg/TcgSmm/TcgSmm.h index 21e4ad96d2..148638c20a 100644 --- a/SecurityPkg/Tcg/TcgSmm/TcgSmm.h +++ b/SecurityPkg/Tcg/TcgSmm/TcgSmm.h @@ -18,6 +18,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include #include #include +#include #include #include @@ -37,6 +38,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. #include #include #include +#include #pragma pack(1) typedef struct { diff --git a/SecurityPkg/Tcg/TcgSmm/TcgSmm.inf b/SecurityPkg/Tcg/TcgSmm/TcgSmm.inf index be7a96bc62..5f2d3a3779 100644 --- a/SecurityPkg/Tcg/TcgSmm/TcgSmm.inf +++ b/SecurityPkg/Tcg/TcgSmm/TcgSmm.inf @@ -50,6 +50,7 @@ TpmMeasurementLib PcdLib TcgPpVendorLib + TcgPhysicalPresenceStorageLib [Guids] ## SOMETIMES_PRODUCES ## Variable:L"PhysicalPresence" -- cgit v1.2.3