// Init state of Del. State may change due to secure check\r
//\r
Del = FALSE;\r
- if ((InCustomMode() && UserPhysicalPresent()) || (mPlatformMode == SETUP_MODE && !IsPk)) {\r
+ if ((InCustomMode() && mUserPhysicalPresent) || (mPlatformMode == SETUP_MODE && !IsPk)) {\r
Payload = (UINT8 *) Data + AUTHINFO2_SIZE (Data);\r
PayloadSize = DataSize - AUTHINFO2_SIZE (Data);\r
if (PayloadSize == 0) {\r
}\r
\r
Status = EFI_SUCCESS;\r
- if (mPlatformMode == USER_MODE && !(InCustomMode() && UserPhysicalPresent())) {\r
+ if (mPlatformMode == USER_MODE && !(InCustomMode() && mUserPhysicalPresent)) {\r
//\r
// Time-based, verify against X509 Cert KEK.\r
//\r
&OrgVariableInfo\r
);\r
\r
- if ((!EFI_ERROR (Status)) && IsDeleteAuthVariable (OrgVariableInfo.Attributes, Data, DataSize, Attributes) && UserPhysicalPresent()) {\r
+ if ((!EFI_ERROR (Status)) && IsDeleteAuthVariable (OrgVariableInfo.Attributes, Data, DataSize, Attributes) && mUserPhysicalPresent) {\r
//\r
// Allow the delete operation of common authenticated variable at user physical presence.\r
//\r
return Status;\r
}\r
\r
- if (NeedPhysicallyPresent (VariableName, VendorGuid) && !UserPhysicalPresent()) {\r
+ if (NeedPhysicallyPresent (VariableName, VendorGuid) && !mUserPhysicalPresent) {\r
//\r
// This variable is protected, only physical present user could modify its value.\r
//\r
UINT32 mMaxCertDbSize;\r
UINT32 mPlatformMode;\r
UINT8 mVendorKeyState;\r
+BOOLEAN mUserPhysicalPresent;\r
\r
EFI_GUID mSignatureSupport[] = {EFI_CERT_SHA1_GUID, EFI_CERT_SHA256_GUID, EFI_CERT_RSA2048_GUID, EFI_CERT_X509_GUID};\r
\r
AuthVarLibContextOut->AddressPointer = mAuthVarAddressPointer;\r
AuthVarLibContextOut->AddressPointerCount = sizeof (mAuthVarAddressPointer) / sizeof (mAuthVarAddressPointer[0]);\r
\r
+ //\r
+ // Cache UserPhysicalPresent State. \r
+ // Platform should report PhysicalPresent before this point\r
+ //\r
+ mUserPhysicalPresent = UserPhysicalPresent();\r
+\r
return Status;\r
}\r
\r