//\r
// Update the BlockSID status string.\r
//\r
- PpStorageFlag = TcgPhysicalPresenceStorageLibReturnStorageFlags();\r
+ PpStorageFlag = Tcg2PhysicalPresenceLibGetManagementFlags ();\r
\r
- if ((PpStorageFlag & TCG_BIOS_STORAGE_MANAGEMENT_FLAG_ENABLE_BLOCK_SID) != 0) {\r
+ if ((PpStorageFlag & TCG2_BIOS_STORAGE_MANAGEMENT_FLAG_ENABLE_BLOCK_SID) != 0) {\r
NewString = HiiGetString (gHiiPackageListHandle, STRING_TOKEN(STR_ENABLED), NULL);\r
if (NewString == NULL) {\r
DEBUG ((DEBUG_INFO, "HiiSetCurrentConfiguration: HiiGetString( ) failed\n"));\r
HiiSetString(gHiiPackageListHandle, STRING_TOKEN(STR_BLOCKSID_STATUS1), NewString, NULL);\r
FreePool (NewString);\r
\r
- if ((PpStorageFlag & TCG_BIOS_STORAGE_MANAGEMENT_FLAG_PP_REQUIRED_FOR_ENABLE_BLOCK_SID) != 0) {\r
+ if ((PpStorageFlag & TCG2_BIOS_STORAGE_MANAGEMENT_FLAG_PP_REQUIRED_FOR_ENABLE_BLOCK_SID) != 0) {\r
NewString = HiiGetString (gHiiPackageListHandle, STRING_TOKEN(STR_DISK_INFO_ENABLE_BLOCKSID_TRUE), NULL);\r
if (NewString == NULL) {\r
DEBUG ((DEBUG_INFO, "HiiSetCurrentConfiguration: HiiGetString( ) failed\n"));\r
HiiSetString(gHiiPackageListHandle, STRING_TOKEN(STR_BLOCKSID_STATUS2), NewString, NULL);\r
FreePool (NewString);\r
\r
- if ((PpStorageFlag & TCG_BIOS_STORAGE_MANAGEMENT_FLAG_PP_REQUIRED_FOR_DISABLE_BLOCK_SID) != 0) {\r
+ if ((PpStorageFlag & TCG2_BIOS_STORAGE_MANAGEMENT_FLAG_PP_REQUIRED_FOR_DISABLE_BLOCK_SID) != 0) {\r
NewString = HiiGetString (gHiiPackageListHandle, STRING_TOKEN(STR_DISK_INFO_DISABLE_BLOCKSID_TRUE), NULL);\r
if (NewString == NULL) {\r
DEBUG ((DEBUG_INFO, "HiiSetCurrentConfiguration: HiiGetString( ) failed\n"));\r
\r
case HII_KEY_ID_ENTER_PASSWORD:\r
return HiiPasswordEntered(Value->string);\r
+\r
+ case HII_KEY_ID_ENTER_PSID:\r
+ return HiiPsidRevert(Value->string);\r
+\r
}\r
} else if (Action == EFI_BROWSER_ACTION_CHANGED) {\r
switch (HiiKeyId) {\r
- case HII_KEY_ID_ENTER_PSID:\r
- HiiPsidRevert();\r
- *ActionRequest = EFI_BROWSER_ACTION_REQUEST_FORM_APPLY;\r
- return EFI_SUCCESS;\r
-\r
case HII_KEY_ID_BLOCKSID:\r
switch (Value->u8) {\r
case 0:\r
/**\r
Reverts the Opal disk to factory default.\r
\r
+ @param PsidStringId The string id for the PSID info.\r
+\r
@retval EFI_SUCCESS Do the required action success.\r
\r
**/\r
EFI_STATUS\r
HiiPsidRevert(\r
- VOID\r
+ EFI_STRING_ID PsidStringId\r
)\r
{\r
CHAR8 Response[DEFAULT_RESPONSE_SIZE];\r
OPAL_DISK *OpalDisk;\r
TCG_RESULT Ret;\r
OPAL_SESSION Session;\r
+ CHAR16 *UnicodeStr;\r
UINT8 TmpBuf[PSID_CHARACTER_STRING_END_LENGTH];\r
\r
Ret = TcgResultFailure;\r
\r
- OpalHiiGetBrowserData();\r
-\r
+ UnicodeStr = HiiGetString (gHiiPackageListHandle, PsidStringId, NULL);\r
ZeroMem (TmpBuf, sizeof (TmpBuf));\r
- UnicodeStrToAsciiStrS (gHiiConfiguration.Psid, (CHAR8*)TmpBuf, PSID_CHARACTER_STRING_END_LENGTH);\r
+ UnicodeStrToAsciiStrS (UnicodeStr, (CHAR8*)TmpBuf, PSID_CHARACTER_STRING_END_LENGTH);\r
CopyMem (Psid.Psid, TmpBuf, PSID_CHARACTER_LENGTH);\r
+ HiiSetString (gHiiPackageListHandle, PsidStringId, L"", NULL);\r
+ ZeroMem (TmpBuf, sizeof (TmpBuf));\r
+ ZeroMem (UnicodeStr, StrSize (UnicodeStr));\r
+ FreePool (UnicodeStr);\r
\r
OpalDisk = HiiGetOpalDiskCB (gHiiConfiguration.SelectedDiskIndex);\r
if (OpalDisk != NULL) {\r
Ret = OpalSupportPsidRevert(&Session, Psid.Psid, (UINT32)sizeof(Psid.Psid), OpalDisk->OpalDevicePath);\r
}\r
\r
+ ZeroMem (Psid.Psid, PSID_CHARACTER_LENGTH);\r
+\r
if (Ret == TcgResultSuccess) {\r
AsciiSPrint( Response, DEFAULT_RESPONSE_SIZE, "%a", "PSID Revert: Success" );\r
} else {\r
EFI_STRING_ID Str\r
)\r
{\r
- OPAL_DISK* OpalDisk;\r
- CHAR8 Password[MAX_PASSWORD_CHARACTER_LENGTH + 1];\r
+ OPAL_DISK* OpalDisk;\r
+ CHAR8 Password[MAX_PASSWORD_CHARACTER_LENGTH + 1];\r
CHAR16* UniStr;\r
UINT32 PassLength;\r
EFI_STATUS Status;\r
if (UniStr == NULL) {\r
return EFI_NOT_FOUND;\r
}\r
+\r
+ HiiSetString(gHiiPackageListHandle, Str, L"", NULL);\r
+\r
PassLength = (UINT32) StrLen (UniStr);\r
if (PassLength >= sizeof(Password)) {\r
HiiSetFormString(STRING_TOKEN(STR_ACTION_STATUS), "Password too long");\r
- gBS->FreePool(UniStr);\r
+ ZeroMem (UniStr, StrSize (UniStr));\r
+ FreePool(UniStr);\r
return EFI_BUFFER_TOO_SMALL;\r
}\r
\r
UnicodeStrToAsciiStrS (UniStr, Password, sizeof (Password));\r
- gBS->FreePool(UniStr);\r
+ ZeroMem (UniStr, StrSize (UniStr));\r
+ FreePool(UniStr);\r
\r
if (gHiiConfiguration.SelectedAction == HII_KEY_ID_GOTO_UNLOCK) {\r
Status = HiiUnlock (OpalDisk, Password, PassLength);\r
Status = HiiSetPassword(OpalDisk, Password, PassLength);\r
}\r
\r
+ ZeroMem (Password, sizeof (Password));\r
+\r
OpalHiiSetBrowserData ();\r
\r
return Status;\r
}\r
\r
/**\r
- Update block sid info.\r
+ Send BlockSid request through TPM physical presence module.\r
\r
- @param Enable Enable/disable BlockSid.\r
+ @param PpRequest TPM physical presence operation request.\r
\r
@retval EFI_SUCCESS Do the required action success.\r
@retval Others Other error occur.\r
UINT32 ReturnCode;\r
EFI_STATUS Status;\r
\r
- //\r
- // Process TCG Physical Presence request just after trusted console is ready\r
- // Platform can connect trusted consoles and then call the below function.\r
- //\r
- ReturnCode = TcgPhysicalPresenceStorageLibSubmitRequestToPreOSFunction (PpRequest, 0);\r
+ ReturnCode = Tcg2PhysicalPresenceLibSubmitRequestToPreOSFunction (PpRequest, 0);\r
if (ReturnCode == TCG_PP_SUBMIT_REQUEST_TO_PREOS_SUCCESS) {\r
Status = EFI_SUCCESS;\r
} else if (ReturnCode == TCG_PP_SUBMIT_REQUEST_TO_PREOS_GENERAL_FAILURE) {\r
)\r
{\r
EFI_STATUS Status;\r
+ EFI_STRING ConfigRequest;\r
+ EFI_STRING ConfigRequestHdr;\r
+ UINTN BufferSize;\r
+ UINTN Size;\r
+ BOOLEAN AllocatedRequest;\r
+ EFI_HANDLE DriverHandle;\r
\r
//\r
// Check for valid parameters\r
return EFI_NOT_FOUND;\r
}\r
\r
+ AllocatedRequest = FALSE;\r
+ BufferSize = sizeof (OPAL_HII_CONFIGURATION);\r
+ ConfigRequest = Request;\r
+ if ((Request == NULL) || (StrStr (Request, L"OFFSET") == NULL)) {\r
+ //\r
+ // Request has no request element, construct full request string.\r
+ // Allocate and fill a buffer large enough to hold the <ConfigHdr> template\r
+ // followed by "&OFFSET=0&WIDTH=WWWWWWWWWWWWWWWW" followed by a Null-terminator\r
+ //\r
+ DriverHandle = HiiGetDriverImageHandleCB();\r
+ ConfigRequestHdr = HiiConstructConfigHdr (&gHiiSetupVariableGuid, OpalPasswordStorageName, DriverHandle);\r
+ Size = (StrLen (ConfigRequestHdr) + 32 + 1) * sizeof (CHAR16);\r
+ ConfigRequest = AllocateZeroPool (Size);\r
+ if (ConfigRequest == NULL) {\r
+ return EFI_OUT_OF_RESOURCES;\r
+ }\r
+ AllocatedRequest = TRUE;\r
+ UnicodeSPrint (ConfigRequest, Size, L"%s&OFFSET=0&WIDTH=%016LX", ConfigRequestHdr, (UINT64)BufferSize);\r
+ FreePool (ConfigRequestHdr);\r
+ }\r
+\r
//\r
// Convert Buffer Data to <ConfigResp> by helper function BlockToConfig( )\r
//\r
Status = gHiiConfigRouting->BlockToConfig(\r
gHiiConfigRouting,\r
- Request,\r
+ ConfigRequest,\r
(UINT8*)&gHiiConfiguration,\r
sizeof(OPAL_HII_CONFIGURATION),\r
Results,\r
Progress\r
);\r
\r
+ //\r
+ // Free the allocated config request string.\r
+ //\r
+ if (AllocatedRequest) {\r
+ FreePool (ConfigRequest);\r
+ ConfigRequest = NULL;\r
+ }\r
+\r
+ //\r
+ // Set Progress string to the original request string.\r
+ //\r
+ if (Request == NULL) {\r
+ *Progress = NULL;\r
+ } else if (StrStr (Request, L"OFFSET") == NULL) {\r
+ *Progress = Request + StrLen (Request);\r
+ }\r
+\r
return (Status);\r
}\r
\r