+++ /dev/null
-/** @file\r
- Password Credential Provider driver header file.\r
-\r
-Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>\r
-This program and the accompanying materials\r
-are licensed and made available under the terms and conditions of the BSD License\r
-which accompanies this distribution. The full text of the license may be found at\r
-http://opensource.org/licenses/bsd-license.php\r
-\r
-THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
-WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
-\r
-**/\r
-\r
-#ifndef _PASSWORD_CREDENTIAL_PROVIDER_H_\r
-#define _PASSWORD_CREDENTIAL_PROVIDER_H_\r
-\r
-#include <Uefi.h>\r
-\r
-#include <Guid/GlobalVariable.h>\r
-\r
-#include <Protocol/HiiConfigAccess.h>\r
-#include <Protocol/UserCredential2.h>\r
-#include <Protocol/UserManager.h>\r
-\r
-#include <Library/UefiRuntimeServicesTableLib.h>\r
-#include <Library/UefiBootServicesTableLib.h>\r
-#include <Library/MemoryAllocationLib.h>\r
-#include <Library/BaseMemoryLib.h>\r
-#include <Library/DevicePathLib.h>\r
-#include <Library/DebugLib.h>\r
-#include <Library/UefiLib.h>\r
-#include <Library/PrintLib.h>\r
-#include <Library/HiiLib.h>\r
-#include <Library/BaseCryptLib.h>\r
-\r
-#include "PwdCredentialProviderData.h"\r
-\r
-extern UINT8 PwdCredentialProviderStrings[];\r
-extern UINT8 PwdCredentialProviderVfrBin[];\r
-\r
-#define PASSWORD_TABLE_INC 16\r
-#define CREDENTIAL_LEN 20\r
-\r
-//\r
-// Password credential information.\r
-//\r
-typedef struct {\r
- EFI_USER_INFO_IDENTIFIER UserId;\r
- CHAR8 Password[CREDENTIAL_LEN];\r
-} PASSWORD_INFO;\r
-\r
-//\r
-// Password credential table.\r
-//\r
-typedef struct {\r
- UINTN Count;\r
- UINTN MaxCount;\r
- UINTN ValidIndex;\r
- PASSWORD_INFO UserInfo[1];\r
-} CREDENTIAL_TABLE;\r
-\r
-//\r
-// The user information on the password provider.\r
-//\r
-typedef struct {\r
- UINTN Count;\r
- EFI_USER_INFO *Info[1];\r
-} PASSWORD_CREDENTIAL_INFO;\r
-\r
-///\r
-/// HII specific Vendor Device Path definition.\r
-///\r
-typedef struct {\r
- VENDOR_DEVICE_PATH VendorDevicePath;\r
- EFI_DEVICE_PATH_PROTOCOL End;\r
-} HII_VENDOR_DEVICE_PATH;\r
-\r
-#define PWD_PROVIDER_SIGNATURE SIGNATURE_32 ('P', 'W', 'D', 'P')\r
-\r
-typedef struct {\r
- UINTN Signature;\r
- EFI_HANDLE DriverHandle;\r
- EFI_HII_HANDLE HiiHandle;\r
- //\r
- // Produced protocol.\r
- //\r
- EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess;\r
-} PWD_PROVIDER_CALLBACK_INFO;\r
-\r
-\r
-/**\r
- Enroll a user on a credential provider.\r
-\r
- This function enrolls a user on this credential provider. If the user exists on\r
- this credential provider, update the user information on this credential provider;\r
- otherwise delete the user information on credential provider.\r
-\r
- @param[in] This Points to this instance of EFI_USER_CREDENTIAL2_PROTOCOL.\r
- @param[in] User The user profile to enroll.\r
-\r
- @retval EFI_SUCCESS User profile was successfully enrolled.\r
- @retval EFI_ACCESS_DENIED Current user profile does not permit enrollment on the\r
- user profile handle. Either the user profile cannot enroll\r
- on any user profile or cannot enroll on a user profile\r
- other than the current user profile.\r
- @retval EFI_UNSUPPORTED This credential provider does not support enrollment in\r
- the pre-OS.\r
- @retval EFI_DEVICE_ERROR The new credential could not be created because of a device\r
- error.\r
- @retval EFI_INVALID_PARAMETER User does not refer to a valid user profile handle.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CredentialEnroll (\r
- IN CONST EFI_USER_CREDENTIAL2_PROTOCOL *This,\r
- IN EFI_USER_PROFILE_HANDLE User\r
- );\r
-\r
-/**\r
- Returns the user interface information used during user identification.\r
-\r
- This function returns information about the form used when interacting with the\r
- user during user identification. The form is the first enabled form in the form-set\r
- class EFI_HII_USER_CREDENTIAL_FORMSET_GUID installed on the HII handle HiiHandle. If\r
- the user credential provider does not require a form to identify the user, then this\r
- function should return EFI_NOT_FOUND.\r
-\r
- @param[in] This Points to this instance of the EFI_USER_CREDENTIAL2_PROTOCOL.\r
- @param[out] Hii On return, holds the HII database handle.\r
- @param[out] FormSetId On return, holds the identifier of the form set which contains\r
- the form used during user identification.\r
- @param[out] FormId On return, holds the identifier of the form used during user\r
- identification.\r
-\r
- @retval EFI_SUCCESS Form returned successfully.\r
- @retval EFI_NOT_FOUND Form not returned.\r
- @retval EFI_INVALID_PARAMETER Hii is NULL or FormSetId is NULL or FormId is NULL.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CredentialForm (\r
- IN CONST EFI_USER_CREDENTIAL2_PROTOCOL *This,\r
- OUT EFI_HII_HANDLE *Hii,\r
- OUT EFI_GUID *FormSetId,\r
- OUT EFI_FORM_ID *FormId\r
- );\r
-\r
-/**\r
- Returns bitmap used to describe the credential provider type.\r
-\r
- This optional function returns a bitmap which is less than or equal to the number\r
- of pixels specified by Width and Height. If no such bitmap exists, then EFI_NOT_FOUND\r
- is returned.\r
-\r
- @param[in] This Points to this instance of the EFI_USER_CREDENTIAL2_PROTOCOL.\r
- @param[in, out] Width On entry, points to the desired bitmap width. If NULL then no\r
- bitmap information will be returned. On exit, points to the\r
- width of the bitmap returned.\r
- @param[in, out] Height On entry, points to the desired bitmap height. If NULL then no\r
- bitmap information will be returned. On exit, points to the\r
- height of the bitmap returned\r
- @param[out] Hii On return, holds the HII database handle.\r
- @param[out] Image On return, holds the HII image identifier.\r
-\r
- @retval EFI_SUCCESS Image identifier returned successfully.\r
- @retval EFI_NOT_FOUND Image identifier not returned.\r
- @retval EFI_INVALID_PARAMETER Hii is NULL or Image is NULL.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CredentialTile (\r
- IN CONST EFI_USER_CREDENTIAL2_PROTOCOL *This,\r
- IN OUT UINTN *Width,\r
- IN OUT UINTN *Height,\r
- OUT EFI_HII_HANDLE *Hii,\r
- OUT EFI_IMAGE_ID *Image\r
- );\r
-\r
-/**\r
- Returns string used to describe the credential provider type.\r
-\r
- This function returns a string which describes the credential provider. If no\r
- such string exists, then EFI_NOT_FOUND is returned.\r
-\r
- @param[in] This Points to this instance of the EFI_USER_CREDENTIAL2_PROTOCOL.\r
- @param[out] Hii On return, holds the HII database handle.\r
- @param[out] String On return, holds the HII string identifier.\r
-\r
- @retval EFI_SUCCESS String identifier returned successfully.\r
- @retval EFI_NOT_FOUND String identifier not returned.\r
- @retval EFI_INVALID_PARAMETER Hii is NULL or String is NULL.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CredentialTitle (\r
- IN CONST EFI_USER_CREDENTIAL2_PROTOCOL *This,\r
- OUT EFI_HII_HANDLE *Hii,\r
- OUT EFI_STRING_ID *String\r
- );\r
-\r
-/**\r
- Return the user identifier associated with the currently authenticated user.\r
-\r
- This function returns the user identifier of the user authenticated by this credential\r
- provider. This function is called after the credential-related information has been\r
- submitted on a form OR after a call to Default() has returned that this credential is\r
- ready to log on.\r
-\r
- @param[in] This Points to this instance of the EFI_USER_CREDENTIAL2_PROTOCOL.\r
- @param[in] User The user profile handle of the user profile currently being\r
- considered by the user identity manager. If NULL, then no user\r
- profile is currently under consideration.\r
- @param[out] Identifier On return, points to the user identifier.\r
-\r
- @retval EFI_SUCCESS User identifier returned successfully.\r
- @retval EFI_NOT_READY No user identifier can be returned.\r
- @retval EFI_ACCESS_DENIED The user has been locked out of this user credential.\r
- @retval EFI_INVALID_PARAMETER This is NULL, or Identifier is NULL.\r
- @retval EFI_NOT_FOUND User is not NULL, and the specified user handle can't be\r
- found in user profile database\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CredentialUser (\r
- IN CONST EFI_USER_CREDENTIAL2_PROTOCOL *This,\r
- IN EFI_USER_PROFILE_HANDLE User,\r
- OUT EFI_USER_INFO_IDENTIFIER *Identifier\r
- );\r
-\r
-/**\r
- Indicate that user interface interaction has begun for the specified credential.\r
-\r
- This function is called when a credential provider is selected by the user. If\r
- AutoLogon returns FALSE, then the user interface will be constructed by the User\r
- Identity Manager.\r
-\r
- @param[in] This Points to this instance of the EFI_USER_CREDENTIAL2_PROTOCOL.\r
- @param[out] AutoLogon On return, points to the credential provider's capabilities\r
- after the credential provider has been selected by the user.\r
-\r
- @retval EFI_SUCCESS Credential provider successfully selected.\r
- @retval EFI_INVALID_PARAMETER AutoLogon is NULL.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CredentialSelect (\r
- IN CONST EFI_USER_CREDENTIAL2_PROTOCOL *This,\r
- OUT EFI_CREDENTIAL_LOGON_FLAGS *AutoLogon\r
- );\r
-\r
-/**\r
- Indicate that user interface interaction has ended for the specified credential.\r
-\r
- This function is called when a credential provider is deselected by the user.\r
-\r
- @param[in] This Points to this instance of the EFI_USER_CREDENTIAL2_PROTOCOL.\r
-\r
- @retval EFI_SUCCESS Credential provider successfully deselected.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CredentialDeselect (\r
- IN CONST EFI_USER_CREDENTIAL2_PROTOCOL *This\r
- );\r
-\r
-/**\r
- Return the default logon behavior for this user credential.\r
-\r
- This function reports the default login behavior regarding this credential provider.\r
-\r
- @param[in] This Points to this instance of the EFI_USER_CREDENTIAL2_PROTOCOL.\r
- @param[out] AutoLogon On return, holds whether the credential provider should be used\r
- by default to automatically log on the user.\r
-\r
- @retval EFI_SUCCESS Default information successfully returned.\r
- @retval EFI_INVALID_PARAMETER AutoLogon is NULL.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CredentialDefault (\r
- IN CONST EFI_USER_CREDENTIAL2_PROTOCOL *This,\r
- OUT EFI_CREDENTIAL_LOGON_FLAGS *AutoLogon\r
- );\r
-\r
-/**\r
- Return information attached to the credential provider.\r
-\r
- This function returns user information.\r
-\r
- @param[in] This Points to this instance of the EFI_USER_CREDENTIAL2_PROTOCOL.\r
- @param[in] UserInfo Handle of the user information data record.\r
- @param[out] Info On entry, points to a buffer of at least *InfoSize bytes. On\r
- exit, holds the user information. If the buffer is too small\r
- to hold the information, then EFI_BUFFER_TOO_SMALL is returned\r
- and InfoSize is updated to contain the number of bytes actually\r
- required.\r
- @param[in, out] InfoSize On entry, points to the size of Info. On return, points to the\r
- size of the user information.\r
-\r
- @retval EFI_SUCCESS Information returned successfully.\r
- @retval EFI_BUFFER_TOO_SMALL The size specified by InfoSize is too small to hold all of the\r
- user information. The size required is returned in *InfoSize.\r
- @retval EFI_INVALID_PARAMETER Info is NULL or InfoSize is NULL.\r
- @retval EFI_NOT_FOUND The specified UserInfo does not refer to a valid user info handle.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CredentialGetInfo (\r
- IN CONST EFI_USER_CREDENTIAL2_PROTOCOL *This,\r
- IN EFI_USER_INFO_HANDLE UserInfo,\r
- OUT EFI_USER_INFO *Info,\r
- IN OUT UINTN *InfoSize\r
- );\r
-\r
-\r
-/**\r
- Enumerate all of the user informations on the credential provider.\r
-\r
- This function returns the next user information record. To retrieve the first user\r
- information record handle, point UserInfo at a NULL. Each subsequent call will retrieve\r
- another user information record handle until there are no more, at which point UserInfo\r
- will point to NULL.\r
-\r
- @param[in] This Points to this instance of the EFI_USER_CREDENTIAL2_PROTOCOL.\r
- @param[in, out] UserInfo On entry, points to the previous user information handle or NULL\r
- to start enumeration. On exit, points to the next user information\r
- handle or NULL if there is no more user information.\r
-\r
- @retval EFI_SUCCESS User information returned.\r
- @retval EFI_NOT_FOUND No more user information found.\r
- @retval EFI_INVALID_PARAMETER UserInfo is NULL.\r
-\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CredentialGetNextInfo (\r
- IN CONST EFI_USER_CREDENTIAL2_PROTOCOL *This,\r
- IN OUT EFI_USER_INFO_HANDLE *UserInfo\r
- );\r
-\r
-/**\r
- Delete a user on this credential provider.\r
-\r
- This function deletes a user on this credential provider.\r
-\r
- @param[in] This Points to this instance of the EFI_USER_CREDENTIAL2_PROTOCOL.\r
- @param[in] User The user profile handle to delete.\r
-\r
- @retval EFI_SUCCESS User profile was successfully deleted.\r
- @retval EFI_ACCESS_DENIED Current user profile does not permit deletion on the user profile handle.\r
- Either the user profile cannot delete on any user profile or cannot delete\r
- on a user profile other than the current user profile.\r
- @retval EFI_UNSUPPORTED This credential provider does not support deletion in the pre-OS.\r
- @retval EFI_DEVICE_ERROR The new credential could not be deleted because of a device error.\r
- @retval EFI_INVALID_PARAMETER User does not refer to a valid user profile handle.\r
-**/\r
-EFI_STATUS\r
-EFIAPI\r
-CredentialDelete (\r
- IN CONST EFI_USER_CREDENTIAL2_PROTOCOL *This,\r
- IN EFI_USER_PROFILE_HANDLE User\r
- );\r
-\r
-#endif\r