/** @file
This file defines the EFI EAP Configuration protocol.
Copyright (c) 2015, 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