Reviewed-by: Liming Gao <[email protected]> > -----Original Message----- > From: Bi, Dandan > Sent: Wednesday, November 23, 2016 4:42 PM > To: [email protected] > Cc: Gao, Liming <[email protected]>; Dong, Eric <[email protected]>; > Yao, Jiewen <[email protected]> > Subject: [PATCH v2] MdeModulePkg/DriverSample: Remove the password > related codes > > V2: Remove the PasswordState which is not used anymore. > > In current DriverSampleDxe, the sample code of password is > not a good example, so we plan to remove it. > > Cc: Liming Gao <[email protected]> > Cc: Eric Dong <[email protected]> > Cc: Jiewen Yao <[email protected]> > Contributed-under: TianoCore Contribution Agreement 1.0 > Signed-off-by: Dandan Bi <[email protected]> > --- > .../Universal/DriverSampleDxe/DriverSample.c | 262 > --------------------- > .../Universal/DriverSampleDxe/DriverSample.h | 1 - > .../Universal/DriverSampleDxe/NVDataStruc.h | 2 - > MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr | 20 -- > .../Universal/DriverSampleDxe/VfrStrings.uni | 8 - > 5 files changed, 293 deletions(-) > > diff --git a/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c > b/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c > index 3c494e3..1b58a8d 100644 > --- a/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c > +++ b/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.c > @@ -259,237 +259,10 @@ 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. > > @param PrivateData Points to the driver private data. > > @@ -1726,44 +1499,10 @@ DriverCallback ( > HiiFreeOpCodeHandle (StartOpCodeHandle); > HiiFreeOpCodeHandle (OptionsOpCodeHandle); > 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; > } > } > break; > @@ -1981,11 +1720,10 @@ DriverSampleInit ( > mPrivateData->Signature = DRIVER_SAMPLE_PRIVATE_SIGNATURE; > > mPrivateData->ConfigAccess.ExtractConfig = ExtractConfig; > mPrivateData->ConfigAccess.RouteConfig = RouteConfig; > mPrivateData->ConfigAccess.Callback = DriverCallback; > - mPrivateData->PasswordState = BROWSER_STATE_VALIDATE_PASSWORD; > > // > // Locate Hii Database protocol > // > Status = gBS->LocateProtocol (&gEfiHiiDatabaseProtocolGuid, NULL, (VOID > **) &HiiDatabase); > diff --git a/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.h > b/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.h > index 97dee9c..5b291bd 100644 > --- a/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.h > +++ b/MdeModulePkg/Universal/DriverSampleDxe/DriverSample.h > @@ -82,11 +82,10 @@ typedef struct { > > EFI_HANDLE DriverHandle[2]; > EFI_HII_HANDLE HiiHandle[2]; > DRIVER_SAMPLE_CONFIGURATION Configuration; > MY_EFI_VARSTORE_DATA VarStoreConfig; > - UINT8 PasswordState; > > // > // Name/Value storage Name list > // > EFI_STRING_ID NameStringId[NAME_VALUE_NAME_NUMBER]; > diff --git a/MdeModulePkg/Universal/DriverSampleDxe/NVDataStruc.h > b/MdeModulePkg/Universal/DriverSampleDxe/NVDataStruc.h > index 3dfacca..195cc8a 100644 > --- a/MdeModulePkg/Universal/DriverSampleDxe/NVDataStruc.h > +++ b/MdeModulePkg/Universal/DriverSampleDxe/NVDataStruc.h > @@ -32,13 +32,11 @@ Revision History: > > #define CONFIGURATION_VARSTORE_ID 0x1234 > > #pragma pack(1) > typedef struct { > - UINT16 WhatIsThePassword2[20]; > UINT16 MyStringData[40]; > - UINT16 PasswordClearText[20]; > UINT16 SomethingHiddenForHtml; > UINT8 HowOldAreYouInYearsManual; > UINT16 HowTallAreYouManual; > UINT8 HowOldAreYouInYears; > UINT16 HowTallAreYou; > diff --git a/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr > b/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr > index fe9a449..4bdaf76 100644 > --- a/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr > +++ b/MdeModulePkg/Universal/DriverSampleDxe/Vfr.vfr > @@ -456,30 +456,10 @@ formset > defaultstore = MyManufactureDefault, > prompt = STRING_TOKEN(STR_MANUFACTURE_DEFAULT_PROMPT), > help = STRING_TOKEN(STR_MANUFACTURE_DEFAULT_HELP), > endresetbutton; > > - string varid = MyIfrNVData.PasswordClearText, > - prompt = STRING_TOKEN(STR_MY_STRING_PROMPT), > - help = STRING_TOKEN(STR_MY_STRING_HELP), > - minsize = 6, > - maxsize = 0x14, > - default = STRING_TOKEN(STR_MY_STRING_DEFAULT), > - endstring; > - > - // > - // Interactive password, validate via ConfigAccess.Callback() > - // > - password varid = MyIfrNVData.WhatIsThePassword2, > - prompt = STRING_TOKEN(STR_PASSWORD_CALLBACK_PROMPT), > - help = STRING_TOKEN(STR_PASSWORD_HELP), > - flags = INTERACTIVE, > - key = 0x2000, > - minsize = 6, > - maxsize = 20, > - endpassword; > - > // > // Sample use case for IFR Security op-code > // > grayoutif NOT security (EFI_USER_INFO_ACCESS_SETUP_ADMIN_GUID); > text > diff --git a/MdeModulePkg/Universal/DriverSampleDxe/VfrStrings.uni > b/MdeModulePkg/Universal/DriverSampleDxe/VfrStrings.uni > index 8d4448c..8d24a47 100644 > --- a/MdeModulePkg/Universal/DriverSampleDxe/VfrStrings.uni > +++ b/MdeModulePkg/Universal/DriverSampleDxe/VfrStrings.uni > @@ -109,16 +109,12 @@ > #string STR_NUMERIC_HELP2 #language en-US "This is the help for > those who are too old to understand the question. Adjust how old you are > step by step. The valid range in this case is from 0 to 243 in step of 1. > Let's > see if you actually read this help and figure that out." > #language fr-FR "This is the help for > those who are too > old to understand the question. Adjust how old you are step by step. The > valid range in this case is from 0 to 243 in step of 1. Let's see if you > actually > read this help and figure that out." > #string STR_NUMERIC_HELP3 #language en-US "This is the help for > those who are curious about body height. Type how tall you are in a numeric > value. The valid range in this case is from 0 to 190. Let's see if you > actually > read this help and figure that out." > #language fr-FR "Ésta es la ayuda > para los que sean > demasiado viejos entender la pregunta. Pulse cómo es viejo usted está en > años." > > -#string STR_PASSWORD_CALLBACK_PROMPT #language en-US "Set the > system password - Interactive" > - #language fr-FR "Cuál es la palabra > mágica? - Interactive" > #string STR_PASSWORD_PROMPT #language en-US "Set the system > password" > #language fr-FR "Cuál es la palabra > mágica?" > -#string STR_PASSWORD_HELP #language en-US "This is a system > password which will likely be used by the BDS architecture in its platform > portion of the code. There is a very simple encryption in this sample and the > password will be stored in NVRAM in its encrypted form." > - #language fr-FR "Esto es analgous a > mí que le pregunta > cuál es su palabra de paso." > #string STR_TEXT_SECRUITY_TEST_TEXT #language en-US "Access only > permitted for Admin" > #language fr-FR "Access only > permitted for Admin" > #string STR_TEXT_SECRUITY_TEST_HELP #language en-US "If this label is > not gray, then current user has admin access setup permission. If this label > is > gray, then current user has no admin access setup permission." > #language fr-FR "If this label is not > gray, then current user > has admin access setup permission. If this label is gray, then current user > has > no admin access setup permission." > #string STR_GOTO_FORM1 #language en-US "Enter Page 1" > @@ -149,14 +145,10 @@ > #language fr-FR "Update the > destination through > "changing" call back type when user select it." > #string STR_ERROR_INCONSISTENT #language en-US "This is my > inconsistent error message" > #language fr-FR "Éste es mi mensaje > de error contrario." > #string STR_ERROR_POPUP #language en-US "You typed in > something bad!" > #language fr-FR "Esto es un mensaje > de error del > popup." > -#string STR_MY_STRING_PROMPT #language en-US "Password you > typed in is" > - #language fr-FR "Password you typed > in is" > -#string STR_MY_STRING_HELP #language en-US "This is my string > help" > - #language fr-FR "This is my string > help" > #string STR_MY_STRING_DEFAULT #language en-US "my password" > #language fr-FR "my password" > #string STR_MY_STRING_PROMPT2 #language en-US "String - > Interactive" > #language fr-FR "String - interactive" > #string STR_MY_STRING_HELP2 #language en-US "This is my string > help - Interactive" > -- > 1.9.5.msysgit.1
_______________________________________________ edk2-devel mailing list [email protected] https://lists.01.org/mailman/listinfo/edk2-devel

