https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Liming Gao <liming.gao@intel.com>
		
			
				
	
	
		
			287 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			287 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/** @file
 | 
						|
  UEFI 2.2 User Credential Protocol definition.It has been removed from UEFI 2.3.1 and replaced
 | 
						|
  by EFI_USER_CREDENTIAL2_PROTOCOL.
 | 
						|
 | 
						|
  Attached to a device handle, this protocol identifies a single means of identifying the user.
 | 
						|
 | 
						|
  Copyright (c) 2009 - 2018, Intel Corporation. All rights reserved.<BR>
 | 
						|
  SPDX-License-Identifier: BSD-2-Clause-Patent
 | 
						|
 | 
						|
**/
 | 
						|
 | 
						|
#ifndef __USER_CREDENTIAL_H__
 | 
						|
#define __USER_CREDENTIAL_H__
 | 
						|
 | 
						|
#include <Protocol/UserManager.h>
 | 
						|
 | 
						|
#define EFI_USER_CREDENTIAL_PROTOCOL_GUID \
 | 
						|
  { \
 | 
						|
    0x71ee5e94, 0x65b9, 0x45d5, { 0x82, 0x1a, 0x3a, 0x4d, 0x86, 0xcf, 0xe6, 0xbe } \
 | 
						|
  }
 | 
						|
 | 
						|
typedef struct _EFI_USER_CREDENTIAL_PROTOCOL  EFI_USER_CREDENTIAL_PROTOCOL;
 | 
						|
 | 
						|
/**
 | 
						|
  Enroll a user on a credential provider.
 | 
						|
 | 
						|
  This function enrolls and deletes a user profile using this credential provider. If a user profile
 | 
						|
  is successfully enrolled, it calls the User Manager Protocol function Notify() to notify the user
 | 
						|
  manager driver that credential information has changed. If an enrolled user does exist, delete the
 | 
						|
  user on the credential provider.
 | 
						|
 | 
						|
  @param[in] This                Points to this instance of the EFI_USER_CREDENTIAL_PROTOCOL.
 | 
						|
  @param[in] User                The user profile to enroll.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            User profile was successfully enrolled.
 | 
						|
  @retval EFI_ACCESS_DENIED      Current user profile does not permit enrollment on the user profile
 | 
						|
                                 handle. Either the user profile cannot enroll on any user profile or
 | 
						|
                                 cannot enroll on a user profile other than the current user profile.
 | 
						|
  @retval EFI_UNSUPPORTED        This credential provider does not support enrollment in the pre-OS.
 | 
						|
  @retval EFI_DEVICE_ERROR       The new credential could not be created because of a device error.
 | 
						|
  @retval EFI_INVALID_PARAMETER  User does not refer to a valid user profile handle.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_CREDENTIAL_ENROLL)(
 | 
						|
  IN CONST EFI_USER_CREDENTIAL_PROTOCOL  *This,
 | 
						|
  IN       EFI_USER_PROFILE_HANDLE       User
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Returns the user interface information used during user identification.
 | 
						|
 | 
						|
  This function returns information about the form used when interacting with the user during user
 | 
						|
  identification. The form is the first enabled form in the form-set class
 | 
						|
  EFI_HII_USER_CREDENTIAL_FORMSET_GUID installed on the HII handle HiiHandle. If
 | 
						|
  the user credential provider does not require a form to identify the user, then this function should
 | 
						|
  return EFI_NOT_FOUND.
 | 
						|
 | 
						|
  @param[in]  This               Points to this instance of the EFI_USER_CREDENTIAL_PROTOCOL.
 | 
						|
  @param[out] Hii                On return, holds the HII database handle.
 | 
						|
  @param[out] FormSetId          On return, holds the identifier of the form set which contains
 | 
						|
                                 the form used during user identification.
 | 
						|
  @param[out] FormId             On return, holds the identifier of the form used during user
 | 
						|
                                 identification.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            Form returned successfully.
 | 
						|
  @retval EFI_NOT_FOUND          Form not returned.
 | 
						|
  @retval EFI_INVALID_PARAMETER  Hii is NULL or FormSetId is NULL or FormId is NULL.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_CREDENTIAL_FORM)(
 | 
						|
  IN CONST EFI_USER_CREDENTIAL_PROTOCOL  *This,
 | 
						|
  OUT      EFI_HII_HANDLE                *Hii,
 | 
						|
  OUT      EFI_GUID                      *FormSetId,
 | 
						|
  OUT      EFI_FORM_ID                   *FormId
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Returns bitmap used to describe the credential provider type.
 | 
						|
 | 
						|
  This optional function returns a bitmap which is less than or equal to the number of pixels specified
 | 
						|
  by Width and Height. If no such bitmap exists, then EFI_NOT_FOUND is returned.
 | 
						|
 | 
						|
  @param[in]      This           Points to this instance of the EFI_USER_CREDENTIAL_PROTOCOL.
 | 
						|
  @param[in, out] Width          On entry, points to the desired bitmap width. If NULL then no bitmap
 | 
						|
                                 information will be returned. On exit, points to the width of the
 | 
						|
                                 bitmap returned.
 | 
						|
  @param[in, out] Height         On entry, points to the desired bitmap height. If NULL then no bitmap
 | 
						|
                                 information will be returned. On exit, points to the height of the
 | 
						|
                                 bitmap returned
 | 
						|
  @param[out]     Hii            On return, holds the HII database handle.
 | 
						|
  @param[out]     Image          On return, holds the HII image identifier.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            Image identifier returned successfully.
 | 
						|
  @retval EFI_NOT_FOUND          Image identifier not returned.
 | 
						|
  @retval EFI_INVALID_PARAMETER  Hii is NULL or Image is NULL.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_CREDENTIAL_TILE)(
 | 
						|
  IN CONST EFI_USER_CREDENTIAL_PROTOCOL  *This,
 | 
						|
  IN OUT   UINTN                         *Width,
 | 
						|
  IN OUT   UINTN                         *Height,
 | 
						|
  OUT      EFI_HII_HANDLE                *Hii,
 | 
						|
  OUT      EFI_IMAGE_ID                  *Image
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Returns string used to describe the credential provider type.
 | 
						|
 | 
						|
  This function returns a string which describes the credential provider. If no such string exists, then
 | 
						|
  EFI_NOT_FOUND is returned.
 | 
						|
 | 
						|
  @param[in]  This               Points to this instance of the EFI_USER_CREDENTIAL_PROTOCOL.
 | 
						|
  @param[out] Hii                On return, holds the HII database handle.
 | 
						|
  @param[out] String             On return, holds the HII string identifier.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            String identifier returned successfully.
 | 
						|
  @retval EFI_NOT_FOUND          String identifier not returned.
 | 
						|
  @retval EFI_INVALID_PARAMETER  Hii is NULL or String is NULL.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_CREDENTIAL_TITLE)(
 | 
						|
  IN CONST EFI_USER_CREDENTIAL_PROTOCOL  *This,
 | 
						|
  OUT      EFI_HII_HANDLE                *Hii,
 | 
						|
  OUT      EFI_STRING_ID                 *String
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Return the user identifier associated with the currently authenticated user.
 | 
						|
 | 
						|
  This function returns the user identifier of the user authenticated by this credential provider. This
 | 
						|
  function is called after the credential-related information has been submitted on a form OR after a
 | 
						|
  call to Default() has returned that this credential is ready to log on.
 | 
						|
 | 
						|
  @param[in]  This               Points to this instance of the EFI_USER_CREDENTIAL_PROTOCOL.
 | 
						|
  @param[in]  User               The user profile handle of the user profile currently being considered
 | 
						|
                                 by the user identity manager. If NULL, then no user profile is currently
 | 
						|
                                 under consideration.
 | 
						|
  @param[out] Identifier         On return, points to the user identifier.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            User identifier returned successfully.
 | 
						|
  @retval EFI_NOT_READY          No user identifier can be returned.
 | 
						|
  @retval EFI_ACCESS_DENIED      The user has been locked out of this user credential.
 | 
						|
  @retval EFI_NOT_FOUND          User is not NULL, and the specified user handle can't be found in user
 | 
						|
                                 profile database
 | 
						|
  @retval EFI_INVALID_PARAMETER  Identifier is NULL.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_CREDENTIAL_USER)(
 | 
						|
  IN CONST EFI_USER_CREDENTIAL_PROTOCOL  *This,
 | 
						|
  IN       EFI_USER_PROFILE_HANDLE       User,
 | 
						|
  OUT      EFI_USER_INFO_IDENTIFIER      *Identifier
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Indicate that user interface interaction has begun for the specified credential.
 | 
						|
 | 
						|
  This function is called when a credential provider is selected by the user. If AutoLogon returns
 | 
						|
  FALSE, then the user interface will be constructed by the User Identity Manager.
 | 
						|
 | 
						|
  @param[in]  This               Points to this instance of the EFI_USER_CREDENTIAL_PROTOCOL.
 | 
						|
  @param[out] AutoLogon          On return, points to the credential provider's capabilities after
 | 
						|
                                 the credential provider has been selected by the user.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            Credential provider successfully selected.
 | 
						|
  @retval EFI_INVALID_PARAMETER  AutoLogon is NULL.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_CREDENTIAL_SELECT)(
 | 
						|
  IN CONST EFI_USER_CREDENTIAL_PROTOCOL  *This,
 | 
						|
  OUT      EFI_CREDENTIAL_LOGON_FLAGS    *AutoLogon
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Indicate that user interface interaction has ended for the specified credential.
 | 
						|
 | 
						|
  This function is called when a credential provider is deselected by the user.
 | 
						|
 | 
						|
  @param[in] This        Points to this instance of the EFI_USER_CREDENTIAL_PROTOCOL.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS    Credential provider successfully deselected.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_CREDENTIAL_DESELECT)(
 | 
						|
  IN CONST EFI_USER_CREDENTIAL_PROTOCOL  *This
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Return the default logon behavior for this user credential.
 | 
						|
 | 
						|
  This function reports the default login behavior regarding this credential provider.
 | 
						|
 | 
						|
  @param[in]  This               Points to this instance of the EFI_USER_CREDENTIAL_PROTOCOL.
 | 
						|
  @param[out] AutoLogon          On return, holds whether the credential provider should be
 | 
						|
                                 used by default to automatically log on the user.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            Default information successfully returned.
 | 
						|
  @retval EFI_INVALID_PARAMETER  AutoLogon is NULL.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_CREDENTIAL_DEFAULT)(
 | 
						|
  IN  CONST EFI_USER_CREDENTIAL_PROTOCOL        *This,
 | 
						|
  OUT EFI_CREDENTIAL_LOGON_FLAGS                *AutoLogon
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Return information attached to the credential provider.
 | 
						|
 | 
						|
  This function returns user information.
 | 
						|
 | 
						|
  @param[in]     This           Points to this instance of the EFI_USER_CREDENTIAL_PROTOCOL.
 | 
						|
  @param[in]     UserInfo       Handle of the user information data record.
 | 
						|
  @param[out]    Info           On entry, points to a buffer of at least *InfoSize bytes. On exit, holds the user
 | 
						|
                                information. If the buffer is too small to hold the information, then
 | 
						|
                                EFI_BUFFER_TOO_SMALL is returned and InfoSize is updated to contain the
 | 
						|
                                number of bytes actually required.
 | 
						|
  @param[in,out] InfoSize       On entry, points to the size of Info. On return, points to the size of the user
 | 
						|
                                information.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS           Information returned successfully.
 | 
						|
  @retval EFI_BUFFER_TOO_SMALL  The size specified by InfoSize is too small to hold all of the user
 | 
						|
                                information. The size required is returned in *InfoSize.
 | 
						|
  @retval EFI_NOT_FOUND         The specified UserInfo does not refer to a valid user info handle.
 | 
						|
  @retval EFI_INVALID_PARAMETER Info is NULL or InfoSize is NULL.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_CREDENTIAL_GET_INFO)(
 | 
						|
  IN CONST EFI_USER_CREDENTIAL_PROTOCOL  *This,
 | 
						|
  IN       EFI_USER_INFO_HANDLE          UserInfo,
 | 
						|
  OUT      EFI_USER_INFO                 *Info,
 | 
						|
  IN OUT   UINTN                         *InfoSize
 | 
						|
  );
 | 
						|
 | 
						|
/**
 | 
						|
  Enumerate all of the user information records on the credential provider.
 | 
						|
 | 
						|
  This function returns the next user information record. To retrieve the first user information record
 | 
						|
  handle, point UserInfo at a NULL. Each subsequent call will retrieve another user information
 | 
						|
  record handle until there are no more, at which point UserInfo will point to NULL.
 | 
						|
 | 
						|
  @param[in]     This            Points to this instance of the EFI_USER_CREDENTIAL_PROTOCOL.
 | 
						|
  @param[in,out] UserInfo        On entry, points to the previous user information handle or NULL to
 | 
						|
                                 start enumeration. On exit, points to the next user information handle
 | 
						|
                                 or NULL if there is no more user information.
 | 
						|
 | 
						|
  @retval EFI_SUCCESS            User information returned.
 | 
						|
  @retval EFI_NOT_FOUND          No more user information found.
 | 
						|
  @retval EFI_INVALID_PARAMETER  UserInfo is NULL.
 | 
						|
**/
 | 
						|
typedef
 | 
						|
EFI_STATUS
 | 
						|
(EFIAPI *EFI_CREDENTIAL_GET_NEXT_INFO)(
 | 
						|
  IN CONST EFI_USER_CREDENTIAL_PROTOCOL  *This,
 | 
						|
  IN OUT   EFI_USER_INFO_HANDLE          *UserInfo
 | 
						|
  );
 | 
						|
 | 
						|
///
 | 
						|
/// This protocol provides support for a single class of credentials
 | 
						|
///
 | 
						|
struct _EFI_USER_CREDENTIAL_PROTOCOL {
 | 
						|
  EFI_GUID                      Identifier;  ///< Uniquely identifies this credential provider.
 | 
						|
  EFI_GUID                      Type;        ///< Identifies this class of User Credential Provider.
 | 
						|
  EFI_CREDENTIAL_ENROLL         Enroll;
 | 
						|
  EFI_CREDENTIAL_FORM           Form;
 | 
						|
  EFI_CREDENTIAL_TILE           Tile;
 | 
						|
  EFI_CREDENTIAL_TITLE          Title;
 | 
						|
  EFI_CREDENTIAL_USER           User;
 | 
						|
  EFI_CREDENTIAL_SELECT         Select;
 | 
						|
  EFI_CREDENTIAL_DESELECT       Deselect;
 | 
						|
  EFI_CREDENTIAL_DEFAULT        Default;
 | 
						|
  EFI_CREDENTIAL_GET_INFO       GetInfo;
 | 
						|
  EFI_CREDENTIAL_GET_NEXT_INFO  GetNextInfo;
 | 
						|
  EFI_CREDENTIAL_CAPABILITIES   Capabilities;
 | 
						|
};
 | 
						|
 | 
						|
extern EFI_GUID gEfiUserCredentialProtocolGuid;
 | 
						|
 | 
						|
#endif
 |