From c99bcf3d8aa5c098881360e8598b4c9e612d0a2b Mon Sep 17 00:00:00 2001 From: Liming Gao Date: Thu, 23 Jun 2016 17:52:33 +0800 Subject: [PATCH] SecurityPkg: Update PlatformSecureLibNull with PCD to get physical presence. This is an incompatible change. It uses PcdUserPhysicalPresence value instead of hard code TRUE. Because PcdUserPhysicalPresence default value is FALSE, this patch changes UserPhysicalPresent() return value from TRUE to FALSE. From Security point, it is not safe to always return TRUE. If user wants this behavior, he can still configure PcdUserPhysicalPresence value to TRUE in the platform DSC file. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Liming Gao Reviewed-by: Giri P Mudusuru --- .../PlatformSecureLibNull.c | 29 +++++++++++++++++-- .../PlatformSecureLibNull.inf | 9 ++++-- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/SecurityPkg/Library/PlatformSecureLibNull/PlatformSecureLibNull.c b/SecurityPkg/Library/PlatformSecureLibNull/PlatformSecureLibNull.c index 1450ac44ab..8dc07ec74a 100644 --- a/SecurityPkg/Library/PlatformSecureLibNull/PlatformSecureLibNull.c +++ b/SecurityPkg/Library/PlatformSecureLibNull/PlatformSecureLibNull.c @@ -4,7 +4,7 @@ related features during platform enabling and development. It should be replaced by a platform-specific method(e.g. Button pressed) in a real platform for product. -Copyright (c) 2011 - 2012, Intel Corporation. All rights reserved.
+Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.
This program and the accompanying materials are licensed and made available under the terms and conditions of the BSD License which accompanies this distribution. The full text of the license may be found at @@ -15,6 +15,8 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ +BOOLEAN mUserPhysicalPresence = FALSE; + /** This function provides a platform-specific method to detect whether the platform @@ -38,5 +40,28 @@ UserPhysicalPresent ( VOID ) { - return TRUE; + return mUserPhysicalPresence; +} + + +/** + Save user physical presence state from a PCD to mUserPhysicalPresence. + + @param ImageHandle ImageHandle of the loaded driver. + @param SystemTable Pointer to the EFI System Table. + + @retval EFI_SUCCESS PcdUserPhysicalPresence is got successfully. + +**/ +EFI_STATUS +EFIAPI +PlatformSecureLibNullConstructor ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) +{ + + mUserPhysicalPresence = PcdGetBool(PcdUserPhysicalPresence); + + return EFI_SUCCESS; } diff --git a/SecurityPkg/Library/PlatformSecureLibNull/PlatformSecureLibNull.inf b/SecurityPkg/Library/PlatformSecureLibNull/PlatformSecureLibNull.inf index 7a5229d039..be415f4166 100644 --- a/SecurityPkg/Library/PlatformSecureLibNull/PlatformSecureLibNull.inf +++ b/SecurityPkg/Library/PlatformSecureLibNull/PlatformSecureLibNull.inf @@ -6,7 +6,7 @@ # related features during platform enabling and development. It should be replaced # by a platform-specific method(e.g. Button pressed) in a real platform for product. # -# Copyright (c) 2011 - 2014, Intel Corporation. All rights reserved.
+# Copyright (c) 2011 - 2016, Intel Corporation. All rights reserved.
# This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License # which accompanies this distribution. The full text of the license may be found at @@ -24,7 +24,7 @@ MODULE_TYPE = DXE_DRIVER VERSION_STRING = 1.0 LIBRARY_CLASS = PlatformSecureLib|DXE_RUNTIME_DRIVER DXE_SMM_DRIVER DXE_DRIVER - + CONSTRUCTOR = PlatformSecureLibNullConstructor # # The following information is for reference only and not required by the build tools. @@ -37,3 +37,8 @@ [Packages] MdePkg/MdePkg.dec + SecurityPkg/SecurityPkg.dec + +[Pcd] + gEfiSecurityPkgTokenSpaceGuid.PcdUserPhysicalPresence ## CONSUMES +