MdeModulePkg/DriverSample: Remove the password related codes

In current DriverSampleDxe, the sample code of password is
not a good example, so we plan to remove it.

Cc: Liming Gao <liming.gao@intel.com>
Cc: Eric Dong <eric.dong@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Dandan Bi <dandan.bi@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
Dandan Bi
2016-11-17 13:15:33 +08:00
committed by Star Zeng
parent 87f04621ad
commit 6bfd7ea7d6
5 changed files with 1 additions and 294 deletions

View File

@@ -261,233 +261,6 @@ InternalStopMonitor(
return EFI_SUCCESS;
}
/**
Encode the password using a simple algorithm.
@param Password The string to be encoded.
@param MaxSize The size of the string.
**/
VOID
EncodePassword (
IN CHAR16 *Password,
IN UINTN MaxSize
)
{
UINTN Index;
UINTN Loop;
CHAR16 *Buffer;
CHAR16 *Key;
Key = L"MAR10648567";
Buffer = AllocateZeroPool (MaxSize);
ASSERT (Buffer != NULL);
for (Index = 0; Key[Index] != 0; Index++) {
for (Loop = 0; Loop < (UINT8) (MaxSize / 2); Loop++) {
Buffer[Loop] = (CHAR16) (Password[Loop] ^ Key[Index]);
}
}
CopyMem (Password, Buffer, MaxSize);
FreePool (Buffer);
return ;
}
/**
Validate the user's password.
@param PrivateData This driver's private context data.
@param StringId The user's input.
@retval EFI_SUCCESS The user's input matches the password.
@retval EFI_NOT_READY The user's input does not match the password.
**/
EFI_STATUS
ValidatePassword (
IN DRIVER_SAMPLE_PRIVATE_DATA *PrivateData,
IN EFI_STRING_ID StringId
)
{
EFI_STATUS Status;
UINTN Index;
UINTN BufferSize;
UINTN PasswordMaxSize;
CHAR16 *Password;
CHAR16 *EncodedPassword;
BOOLEAN OldPassword;
//
// Get encoded password first
//
BufferSize = sizeof (DRIVER_SAMPLE_CONFIGURATION);
Status = gRT->GetVariable (
VariableName,
&gDriverSampleFormSetGuid,
NULL,
&BufferSize,
&PrivateData->Configuration
);
if (EFI_ERROR (Status)) {
//
// Old password not exist, prompt for new password
//
return EFI_SUCCESS;
}
OldPassword = FALSE;
PasswordMaxSize = sizeof (PrivateData->Configuration.WhatIsThePassword2);
//
// Check whether we have any old password set
//
for (Index = 0; Index < PasswordMaxSize / sizeof (UINT16); Index++) {
if (PrivateData->Configuration.WhatIsThePassword2[Index] != 0) {
OldPassword = TRUE;
break;
}
}
if (!OldPassword) {
//
// Old password not exist, return EFI_SUCCESS to prompt for new password
//
return EFI_SUCCESS;
}
//
// Get user input password
//
Password = HiiGetString (PrivateData->HiiHandle[0], StringId, NULL);
if (Password == NULL) {
return EFI_NOT_READY;
}
if (StrSize (Password) > PasswordMaxSize) {
FreePool (Password);
return EFI_NOT_READY;
}
//
// Validate old password
//
EncodedPassword = AllocateZeroPool (PasswordMaxSize);
ASSERT (EncodedPassword != NULL);
StrnCpyS (EncodedPassword, PasswordMaxSize / sizeof (CHAR16), Password, StrLen (Password));
EncodePassword (EncodedPassword, StrLen (EncodedPassword) * sizeof (CHAR16));
if (CompareMem (EncodedPassword, PrivateData->Configuration.WhatIsThePassword2, PasswordMaxSize) != 0) {
//
// Old password mismatch, return EFI_NOT_READY to prompt for error message
//
Status = EFI_NOT_READY;
} else {
Status = EFI_SUCCESS;
}
FreePool (Password);
FreePool (EncodedPassword);
return Status;
}
/**
Encode the password using a simple algorithm.
@param PrivateData This driver's private context data.
@param StringId The password from User.
@retval EFI_SUCESS The operation is successful.
@return Other value if gRT->SetVariable () fails.
**/
EFI_STATUS
SetPassword (
IN DRIVER_SAMPLE_PRIVATE_DATA *PrivateData,
IN EFI_STRING_ID StringId
)
{
EFI_STATUS Status;
CHAR16 *Password;
CHAR16 *TempPassword;
UINTN PasswordSize;
DRIVER_SAMPLE_CONFIGURATION *Configuration;
UINTN BufferSize;
//
// Get Buffer Storage data from EFI variable
//
BufferSize = sizeof (DRIVER_SAMPLE_CONFIGURATION);
Status = gRT->GetVariable (
VariableName,
&gDriverSampleFormSetGuid,
NULL,
&BufferSize,
&PrivateData->Configuration
);
if (EFI_ERROR (Status)) {
return Status;
}
//
// Get user input password
//
Password = PrivateData->Configuration.WhatIsThePassword2;
PasswordSize = sizeof (PrivateData->Configuration.WhatIsThePassword2);
ZeroMem (Password, PasswordSize);
TempPassword = HiiGetString (PrivateData->HiiHandle[0], StringId, NULL);
if (TempPassword == NULL) {
return EFI_NOT_READY;
}
if (StrSize (TempPassword) > PasswordSize) {
FreePool (TempPassword);
return EFI_NOT_READY;
}
StrnCpyS (Password, PasswordSize / sizeof (CHAR16), TempPassword, StrLen (TempPassword));
FreePool (TempPassword);
//
// Retrieve uncommitted data from Browser
//
Configuration = AllocateZeroPool (sizeof (DRIVER_SAMPLE_CONFIGURATION));
ASSERT (Configuration != NULL);
if (HiiGetBrowserData (&gDriverSampleFormSetGuid, VariableName, sizeof (DRIVER_SAMPLE_CONFIGURATION), (UINT8 *) Configuration)) {
//
// Update password's clear text in the screen
//
CopyMem (Configuration->PasswordClearText, Password, StrSize (Password));
//
// Update uncommitted data of Browser
//
HiiSetBrowserData (
&gDriverSampleFormSetGuid,
VariableName,
sizeof (DRIVER_SAMPLE_CONFIGURATION),
(UINT8 *) Configuration,
NULL
);
}
//
// Free Configuration Buffer
//
FreePool (Configuration);
//
// Set password
//
EncodePassword (Password, StrLen (Password) * 2);
Status = gRT->SetVariable(
VariableName,
&gDriverSampleFormSetGuid,
EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS,
sizeof (DRIVER_SAMPLE_CONFIGURATION),
&PrivateData->Configuration
);
return Status;
}
/**
Update names of Name/Value storage to current language.
@@ -1728,40 +1501,6 @@ DriverCallback (
HiiFreeOpCodeHandle (EndOpCodeHandle);
break;
case 0x2000:
//
// Only used to update the state.
//
if ((Type == EFI_IFR_TYPE_STRING) && (Value->string == 0) &&
(PrivateData->PasswordState == BROWSER_STATE_SET_PASSWORD)) {
PrivateData->PasswordState = BROWSER_STATE_VALIDATE_PASSWORD;
return EFI_INVALID_PARAMETER;
}
//
// When try to set a new password, user will be chanlleged with old password.
// The Callback is responsible for validating old password input by user,
// If Callback return EFI_SUCCESS, it indicates validation pass.
//
switch (PrivateData->PasswordState) {
case BROWSER_STATE_VALIDATE_PASSWORD:
Status = ValidatePassword (PrivateData, Value->string);
if (Status == EFI_SUCCESS) {
PrivateData->PasswordState = BROWSER_STATE_SET_PASSWORD;
}
break;
case BROWSER_STATE_SET_PASSWORD:
Status = SetPassword (PrivateData, Value->string);
PrivateData->PasswordState = BROWSER_STATE_VALIDATE_PASSWORD;
break;
default:
break;
}
break;
default:
break;
}
@@ -1983,7 +1722,6 @@ DriverSampleInit (
mPrivateData->ConfigAccess.ExtractConfig = ExtractConfig;
mPrivateData->ConfigAccess.RouteConfig = RouteConfig;
mPrivateData->ConfigAccess.Callback = DriverCallback;
mPrivateData->PasswordState = BROWSER_STATE_VALIDATE_PASSWORD;
//
// Locate Hii Database protocol