/** @file This file defines the EFI EAP Configuration protocol. Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent @par Revision Reference: This Protocol is introduced in UEFI Specification 2.5 **/ #ifndef __EFI_EAP_CONFIGURATION_PROTOCOL_H__ #define __EFI_EAP_CONFIGURATION_PROTOCOL_H__ /// /// EFI EAP Configuration protocol provides a way to set and get EAP configuration. /// #define EFI_EAP_CONFIGURATION_PROTOCOL_GUID \ { \ 0xe5b58dbb, 0x7688, 0x44b4, {0x97, 0xbf, 0x5f, 0x1d, 0x4b, 0x7c, 0xc8, 0xdb } \ } typedef struct _EFI_EAP_CONFIGURATION_PROTOCOL EFI_EAP_CONFIGURATION_PROTOCOL; /// /// Make sure it not conflict with any real EapTypeXXX /// #define EFI_EAP_TYPE_ATTRIBUTE 0 typedef enum { /// /// EFI_EAP_TYPE_ATTRIBUTE /// EfiEapConfigEapAuthMethod, EfiEapConfigEapSupportedAuthMethod, /// /// EapTypeIdentity /// EfiEapConfigIdentityString, /// /// EapTypeEAPTLS/EapTypePEAP /// EfiEapConfigEapTlsCACert, EfiEapConfigEapTlsClientCert, EfiEapConfigEapTlsClientPrivateKeyFile, EfiEapConfigEapTlsClientPrivateKeyFilePassword, // ASCII format, Volatile EfiEapConfigEapTlsCipherSuite, EfiEapConfigEapTlsSupportedCipherSuite, /// /// EapTypeMSChapV2 /// EfiEapConfigEapMSChapV2Password, // UNICODE format, Volatile /// /// EapTypePEAP /// EfiEapConfigEap2ndAuthMethod, /// /// More... /// } EFI_EAP_CONFIG_DATA_TYPE; /// /// EFI_EAP_TYPE /// typedef UINT8 EFI_EAP_TYPE; #define EFI_EAP_TYPE_ATTRIBUTE 0 #define EFI_EAP_TYPE_IDENTITY 1 #define EFI_EAP_TYPE_NOTIFICATION 2 #define EFI_EAP_TYPE_NAK 3 #define EFI_EAP_TYPE_MD5CHALLENGE 4 #define EFI_EAP_TYPE_OTP 5 #define EFI_EAP_TYPE_GTC 6 #define EFI_EAP_TYPE_EAPTLS 13 #define EFI_EAP_TYPE_EAPSIM 18 #define EFI_EAP_TYPE_TTLS 21 #define EFI_EAP_TYPE_PEAP 25 #define EFI_EAP_TYPE_MSCHAPV2 26 #define EFI_EAP_TYPE_EAP_EXTENSION 33 /** Set EAP configuration data. The SetData() function sets EAP configuration to non-volatile storage or volatile storage. @param[in] This Pointer to the EFI_EAP_CONFIGURATION_PROTOCOL instance. @param[in] EapType EAP type. @param[in] DataType Configuration data type. @param[in] Data Pointer to configuration data. @param[in] DataSize Total size of configuration data. @retval EFI_SUCCESS The EAP configuration data is set successfully. @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: Data is NULL. DataSize is 0. @retval EFI_UNSUPPORTED The EapType or DataType is unsupported. @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated. **/ typedef EFI_STATUS (EFIAPI *EFI_EAP_CONFIGURATION_SET_DATA)( IN EFI_EAP_CONFIGURATION_PROTOCOL *This, IN EFI_EAP_TYPE EapType, IN EFI_EAP_CONFIG_DATA_TYPE DataType, IN VOID *Data, IN UINTN DataSize ); /** Get EAP configuration data. The GetData() function gets EAP configuration. @param[in] This Pointer to the EFI_EAP_CONFIGURATION_PROTOCOL instance. @param[in] EapType EAP type. @param[in] DataType Configuration data type. @param[in, out] Data Pointer to configuration data. @param[in, out] DataSize Total size of configuration data. On input, it means the size of Data buffer. On output, it means the size of copied Data buffer if EFI_SUCCESS, and means the size of desired Data buffer if EFI_BUFFER_TOO_SMALL. @retval EFI_SUCCESS The EAP configuration data is got successfully. @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: Data is NULL. DataSize is NULL. @retval EFI_UNSUPPORTED The EapType or DataType is unsupported. @retval EFI_NOT_FOUND The EAP configuration data is not found. @retval EFI_BUFFER_TOO_SMALL The buffer is too small to hold the buffer. **/ typedef EFI_STATUS (EFIAPI *EFI_EAP_CONFIGURATION_GET_DATA)( IN EFI_EAP_CONFIGURATION_PROTOCOL *This, IN EFI_EAP_TYPE EapType, IN EFI_EAP_CONFIG_DATA_TYPE DataType, IN OUT VOID *Data, IN OUT UINTN *DataSize ); /// /// The EFI_EAP_CONFIGURATION_PROTOCOL /// is designed to provide a way to set and get EAP configuration, such as Certificate, /// private key file. /// struct _EFI_EAP_CONFIGURATION_PROTOCOL { EFI_EAP_CONFIGURATION_SET_DATA SetData; EFI_EAP_CONFIGURATION_GET_DATA GetData; }; extern EFI_GUID gEfiEapConfigurationProtocolGuid; #endif