X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=SecurityPkg%2FUserIdentification%2FUserProfileManagerDxe%2FUserProfileAdd.c;fp=SecurityPkg%2FUserIdentification%2FUserProfileManagerDxe%2FUserProfileAdd.c;h=0000000000000000000000000000000000000000;hb=514c55c18597c48e1648b67f85cf25b5984da5cc;hp=6de7e75e7967575ae2b112f35639628a6992e970;hpb=28ce4cb3590bc3aaa91c3be75429d4e8722415e2;p=mirror_edk2.git diff --git a/SecurityPkg/UserIdentification/UserProfileManagerDxe/UserProfileAdd.c b/SecurityPkg/UserIdentification/UserProfileManagerDxe/UserProfileAdd.c deleted file mode 100644 index 6de7e75e79..0000000000 --- a/SecurityPkg/UserIdentification/UserProfileManagerDxe/UserProfileAdd.c +++ /dev/null @@ -1,372 +0,0 @@ -/** @file - The functions to add a user profile. - -Copyright (c) 2009 - 2018, 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 -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -**/ - -#include "UserProfileManager.h" - - -/** - Get user name from the popup windows. - - @param[in, out] UserNameLen On entry, point to UserName buffer lengh, in bytes. - On exit, point to input user name length, in bytes. - @param[out] UserName The buffer to hold the input user name. - - @retval EFI_ABORTED It is given up by pressing 'ESC' key. - @retval EFI_NOT_READY Not a valid input at all. - @retval EFI_SUCCESS Get a user name successfully. - -**/ -EFI_STATUS -GetUserNameInput ( - IN OUT UINTN *UserNameLen, - OUT CHAR16 *UserName - ) -{ - EFI_INPUT_KEY Key; - UINTN NameLen; - CHAR16 Name[USER_NAME_LENGTH]; - - NameLen = 0; - while (TRUE) { - Name[NameLen] = L'_'; - Name[NameLen + 1] = L'\0'; - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - L"Input User Name", - L"---------------------", - Name, - NULL - ); - // - // Check key. - // - if (Key.ScanCode == SCAN_NULL) { - if (Key.UnicodeChar == CHAR_CARRIAGE_RETURN) { - // - // Add the null terminator. - // - Name[NameLen] = 0; - NameLen++; - break; - } else if ((Key.UnicodeChar == CHAR_NULL) || - (Key.UnicodeChar == CHAR_TAB) || - (Key.UnicodeChar == CHAR_LINEFEED) - ) { - continue; - } else { - if (Key.UnicodeChar == CHAR_BACKSPACE) { - if (NameLen > 0) { - NameLen--; - } - } else { - Name[NameLen] = Key.UnicodeChar; - NameLen++; - if (NameLen + 1 == USER_NAME_LENGTH) { - // - // Add the null terminator. - // - Name[NameLen] = 0; - NameLen++; - break; - } - } - } - } - - if (Key.ScanCode == SCAN_ESC) { - return EFI_ABORTED; - } - } - - if (NameLen <= 1) { - return EFI_NOT_READY; - } - - if (*UserNameLen < NameLen * sizeof (CHAR16)) { - return EFI_NOT_READY; - } - - *UserNameLen = NameLen * sizeof (CHAR16); - CopyMem (UserName, Name, *UserNameLen); - - return EFI_SUCCESS; -} - -/** - Set a user's username. - - @param[in] User Handle of a user profile . - @param[in] UserNameLen The lengh of UserName. - @param[in] UserName Point to the buffer of user name. - - @retval EFI_NOT_READY The usernme in mAddUserName had been used. - @retval EFI_SUCCESS Change the user's username successfully with - username in mAddUserName. - -**/ -EFI_STATUS -SetUserName ( - IN EFI_USER_PROFILE_HANDLE User, - IN UINTN UserNameLen, - IN CHAR16 *UserName - ) -{ - EFI_STATUS Status; - EFI_USER_INFO_HANDLE UserInfo; - EFI_USER_PROFILE_HANDLE TempUser; - EFI_USER_INFO *NewUserInfo; - - NewUserInfo = AllocateZeroPool (sizeof (EFI_USER_INFO) + UserNameLen); - ASSERT (NewUserInfo != NULL); - - NewUserInfo->InfoType = EFI_USER_INFO_NAME_RECORD; - NewUserInfo->InfoAttribs = EFI_USER_INFO_STORAGE_PLATFORM_NV | - EFI_USER_INFO_PUBLIC | - EFI_USER_INFO_EXCLUSIVE; - NewUserInfo->InfoSize = (UINT32) (sizeof (EFI_USER_INFO) + UserNameLen); - CopyMem ((UINT8 *) (NewUserInfo + 1), UserName, UserNameLen); - TempUser = NULL; - Status = mUserManager->Find ( - mUserManager, - &TempUser, - NULL, - NewUserInfo, - NewUserInfo->InfoSize - ); - if (!EFI_ERROR (Status)) { - // - // The user name had been used, return error. - // - FreePool (NewUserInfo); - return EFI_NOT_READY; - } - - UserInfo = NULL; - mUserManager->SetInfo ( - mUserManager, - User, - &UserInfo, - NewUserInfo, - NewUserInfo->InfoSize - ); - FreePool (NewUserInfo); - return EFI_SUCCESS; -} - - -/** - Set create date of the specified user. - - @param[in] User Handle of a user profile. - -**/ -VOID -SetCreateDate ( - IN EFI_USER_PROFILE_HANDLE User - ) -{ - EFI_STATUS Status; - EFI_USER_INFO_HANDLE UserInfo; - EFI_USER_INFO_CREATE_DATE Date; - EFI_USER_INFO *NewUserInfo; - - NewUserInfo = AllocateZeroPool ( - sizeof (EFI_USER_INFO) + - sizeof (EFI_USER_INFO_CREATE_DATE) - ); - ASSERT (NewUserInfo != NULL); - - NewUserInfo->InfoType = EFI_USER_INFO_CREATE_DATE_RECORD; - NewUserInfo->InfoAttribs = EFI_USER_INFO_STORAGE_PLATFORM_NV | - EFI_USER_INFO_PUBLIC | - EFI_USER_INFO_EXCLUSIVE; - NewUserInfo->InfoSize = sizeof (EFI_USER_INFO) + sizeof (EFI_USER_INFO_CREATE_DATE); - Status = gRT->GetTime (&Date, NULL); - if (EFI_ERROR (Status)) { - FreePool (NewUserInfo); - return ; - } - - CopyMem ((UINT8 *) (NewUserInfo + 1), &Date, sizeof (EFI_USER_INFO_CREATE_DATE)); - UserInfo = NULL; - mUserManager->SetInfo ( - mUserManager, - User, - &UserInfo, - NewUserInfo, - NewUserInfo->InfoSize - ); - FreePool (NewUserInfo); -} - - -/** - Set the default identity policy of the specified user. - - @param[in] User Handle of a user profile. - -**/ -VOID -SetIdentityPolicy ( - IN EFI_USER_PROFILE_HANDLE User - ) -{ - EFI_USER_INFO_IDENTITY_POLICY *Policy; - EFI_USER_INFO_HANDLE UserInfo; - EFI_USER_INFO *NewUserInfo; - - NewUserInfo = AllocateZeroPool ( - sizeof (EFI_USER_INFO) + - sizeof (EFI_USER_INFO_IDENTITY_POLICY) - ); - ASSERT (NewUserInfo != NULL); - - Policy = (EFI_USER_INFO_IDENTITY_POLICY *) (NewUserInfo + 1); - Policy->Type = EFI_USER_INFO_IDENTITY_TRUE; - Policy->Length = sizeof (EFI_USER_INFO_IDENTITY_POLICY); - - NewUserInfo->InfoType = EFI_USER_INFO_IDENTITY_POLICY_RECORD; - NewUserInfo->InfoAttribs = EFI_USER_INFO_STORAGE_PLATFORM_NV | - EFI_USER_INFO_PUBLIC | - EFI_USER_INFO_EXCLUSIVE; - NewUserInfo->InfoSize = sizeof (EFI_USER_INFO) + Policy->Length; - UserInfo = NULL; - mUserManager->SetInfo ( - mUserManager, - User, - &UserInfo, - NewUserInfo, - NewUserInfo->InfoSize - ); - FreePool (NewUserInfo); -} - - -/** - Set the default access policy of the specified user. - - @param[in] User Handle of a user profile. - -**/ -VOID -SetAccessPolicy ( - IN EFI_USER_PROFILE_HANDLE User - ) -{ - EFI_USER_INFO_ACCESS_CONTROL *Control; - EFI_USER_INFO_HANDLE UserInfo; - EFI_USER_INFO *NewUserInfo; - - NewUserInfo = AllocateZeroPool ( - sizeof (EFI_USER_INFO) + - sizeof (EFI_USER_INFO_ACCESS_CONTROL) - ); - ASSERT (NewUserInfo != NULL); - - Control = (EFI_USER_INFO_ACCESS_CONTROL *) (NewUserInfo + 1); - Control->Type = EFI_USER_INFO_ACCESS_ENROLL_SELF; - Control->Size = sizeof (EFI_USER_INFO_ACCESS_CONTROL); - - NewUserInfo->InfoType = EFI_USER_INFO_ACCESS_POLICY_RECORD; - NewUserInfo->InfoAttribs = EFI_USER_INFO_STORAGE_PLATFORM_NV | - EFI_USER_INFO_PUBLIC | - EFI_USER_INFO_EXCLUSIVE; - NewUserInfo->InfoSize = sizeof (EFI_USER_INFO) + Control->Size; - UserInfo = NULL; - mUserManager->SetInfo ( - mUserManager, - User, - &UserInfo, - NewUserInfo, - NewUserInfo->InfoSize - ); - FreePool (NewUserInfo); -} - - -/** - Add a new user profile into the user profile database. - -**/ -VOID -CallAddUser ( - VOID - ) -{ - EFI_STATUS Status; - EFI_INPUT_KEY Key; - EFI_USER_PROFILE_HANDLE User; - UINTN UserNameLen; - CHAR16 UserName[USER_NAME_LENGTH]; - CHAR16 *QuestionStr; - CHAR16 *PromptStr; - - QuestionStr = NULL; - PromptStr = NULL; - - // - // Get user name to add. - // - UserNameLen = sizeof (UserName); - Status = GetUserNameInput (&UserNameLen, UserName); - if (EFI_ERROR (Status)) { - if (Status != EFI_ABORTED) { - QuestionStr = GetStringById (STRING_TOKEN (STR_GET_USERNAME_FAILED)); - PromptStr = GetStringById (STRING_TOKEN (STR_STROKE_KEY_CONTINUE)); - goto Done; - } - return ; - } - - // - // Create a new user profile. - // - User = NULL; - Status = mUserManager->Create (mUserManager, &User); - if (EFI_ERROR (Status)) { - QuestionStr = GetStringById (STRING_TOKEN (STR_CREATE_PROFILE_FAILED)); - PromptStr = GetStringById (STRING_TOKEN (STR_STROKE_KEY_CONTINUE)); - } else { - // - // Add default user information. - // - Status = SetUserName (User, UserNameLen, UserName); - if (EFI_ERROR (Status)) { - QuestionStr = GetStringById (STRING_TOKEN (STR_USER_ALREADY_EXISTED)); - PromptStr = GetStringById (STRING_TOKEN (STR_STROKE_KEY_CONTINUE)); - goto Done; - } - - SetCreateDate (User); - SetIdentityPolicy (User); - SetAccessPolicy (User); - - QuestionStr = GetStringById (STRING_TOKEN (STR_CREATE_PROFILE_SUCCESS)); - PromptStr = GetStringById (STRING_TOKEN (STR_STROKE_KEY_CONTINUE)); - } - -Done: - CreatePopUp ( - EFI_LIGHTGRAY | EFI_BACKGROUND_BLUE, - &Key, - QuestionStr, - L"", - PromptStr, - NULL - ); - FreePool (QuestionStr); - FreePool (PromptStr); -} -