/** @file | |
This file defines the EFI EAP Configuration protocol. | |
Copyright (c) 2015 - 2018, Intel Corporation. All rights reserved.<BR> | |
This program and the accompanying materials | |
are licensed and made available under the terms and conditions of the BSD License | |
which accompanies this distribution. The full text of the license may be found at | |
http://opensource.org/licenses/bsd-license.php | |
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
@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 |