/** @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