/** @file Header file for UserAuthenticationDxe. Copyright (c) 2019, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent **/ #ifndef _USER_AUTHENTICATION_DXE_H_ #define _USER_AUTHENTICATION_DXE_H_ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "UserAuthenticationDxeFormset.h" extern UINT8 UserAuthenticationDxeVfrBin[]; extern UINT8 UserAuthenticationDxeStrings[]; extern EFI_SMM_COMMUNICATION_PROTOCOL *mSmmCommunication; typedef struct { EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess; EFI_HANDLE DriverHandle; EFI_HII_HANDLE HiiHandle; UINT8 PasswordState; CHAR16 OldPassword[PASSWORD_MAX_SIZE]; } USER_AUTHENTICATION_PRIVATE_DATA; #pragma pack(1) /// /// HII specific Vendor Device Path definition. /// typedef struct { VENDOR_DEVICE_PATH VendorDevicePath; EFI_DEVICE_PATH_PROTOCOL End; } HII_VENDOR_DEVICE_PATH; #pragma pack() /** Validate if the password is correct. @param[in] Password The user input password. @param[in] PasswordSize The size of Password in byte. @retval EFI_SUCCESS The password is correct. @retval EFI_SECURITY_VIOLATION The password is incorrect. @retval EFI_INVALID_PARAMETER The password or size is invalid. @retval EFI_OUT_OF_RESOURCES Insufficient resources to verify the password. @retval EFI_ACCESS_DENIED Password retry count reach. **/ EFI_STATUS VerifyPassword ( IN CHAR16 *Password, IN UINTN PasswordSize ); /** Set a new password. @param[in] NewPassword The user input new password. NULL means clear password. @param[in] NewPasswordSize The size of NewPassword in byte. @param[in] OldPassword The user input old password. NULL means no old password. @param[in] OldPasswordSize The size of OldPassword in byte. @retval EFI_SUCCESS The NewPassword is set successfully. @retval EFI_SECURITY_VIOLATION The OldPassword is incorrect. @retval EFI_INVALID_PARAMETER The password or size is invalid. @retval EFI_OUT_OF_RESOURCES Insufficient resources to set the password. @retval EFI_ACCESS_DENIED Password retry count reach. @retval EFI_UNSUPPORTED NewPassword is not strong enough. @retval EFI_ALREADY_STARTED NewPassword is in history. **/ EFI_STATUS SetPassword ( IN CHAR16 *NewPassword, OPTIONAL IN UINTN NewPasswordSize, IN CHAR16 *OldPassword, OPTIONAL IN UINTN OldPasswordSize ); /** Return if the password is set. @retval TRUE The password is set. @retval FALSE The password is not set. **/ BOOLEAN IsPasswordInstalled ( VOID ); /** Get password verification policy. @param[out] VerifyPolicy Verification policy. @retval EFI_SUCCESS Get verification policy successfully. @retval EFI_OUT_OF_RESOURCES Insufficient resources to get verification policy. **/ EFI_STATUS GetPasswordVerificationPolicy ( OUT SMM_PASSWORD_COMMUNICATE_VERIFY_POLICY *VerifyPolicy ); /** Return if the password was verified. @retval TRUE The password was verified. @retval FALSE The password was not verified. **/ BOOLEAN WasPasswordVerified ( VOID ); #endif