1 /** @file 2 This file defines the EFI EAP Configuration protocol. 3 4 Copyright (c) 2015, Intel Corporation. All rights reserved.<BR> 5 This program and the accompanying materials 6 are licensed and made available under the terms and conditions of the BSD License 7 which accompanies this distribution. The full text of the license may be found at 8 http://opensource.org/licenses/bsd-license.php 9 10 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 11 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 12 13 @par Revision Reference: 14 This Protocol is introduced in UEFI Specification 2.5 15 16 **/ 17 18 #ifndef __EFI_EAP_CONFIGURATION_PROTOCOL_H__ 19 #define __EFI_EAP_CONFIGURATION_PROTOCOL_H__ 20 21 /// 22 /// EFI EAP Configuration protocol provides a way to set and get EAP configuration. 23 /// 24 #define EFI_EAP_CONFIGURATION_PROTOCOL_GUID \ 25 { \ 26 0xe5b58dbb, 0x7688, 0x44b4, {0x97, 0xbf, 0x5f, 0x1d, 0x4b, 0x7c, 0xc8, 0xdb } \ 27 } 28 29 typedef struct _EFI_EAP_CONFIGURATION_PROTOCOL EFI_EAP_CONFIGURATION_PROTOCOL; 30 31 /// 32 /// Make sure it not conflict with any real EapTypeXXX 33 /// 34 #define EFI_EAP_TYPE_ATTRIBUTE 0 35 36 typedef enum { 37 /// 38 /// EFI_EAP_TYPE_ATTRIBUTE 39 /// 40 EfiEapConfigEapAuthMethod, 41 EfiEapConfigEapSupportedAuthMethod, 42 /// 43 /// EapTypeIdentity 44 /// 45 EfiEapConfigIdentityString, 46 /// 47 /// EapTypeEAPTLS/EapTypePEAP 48 /// 49 EfiEapConfigEapTlsCACert, 50 EfiEapConfigEapTlsClientCert, 51 EfiEapConfigEapTlsClientPrivateKeyFile, 52 EfiEapConfigEapTlsClientPrivateKeyFilePassword, // ASCII format, Volatile 53 EfiEapConfigEapTlsCipherSuite, 54 EfiEapConfigEapTlsSupportedCipherSuite, 55 /// 56 /// EapTypeMSChapV2 57 /// 58 EfiEapConfigEapMSChapV2Password, // UNICODE format, Volatile 59 /// 60 /// EapTypePEAP 61 /// 62 EfiEapConfigEap2ndAuthMethod, 63 /// 64 /// More... 65 /// 66 } EFI_EAP_CONFIG_DATA_TYPE; 67 68 /// 69 /// EFI_EAP_TYPE 70 /// 71 typedef UINT8 EFI_EAP_TYPE; 72 #define EFI_EAP_TYPE_ATTRIBUTE 0 73 #define EFI_EAP_TYPE_IDENTITY 1 74 #define EFI_EAP_TYPE_NOTIFICATION 2 75 #define EFI_EAP_TYPE_NAK 3 76 #define EFI_EAP_TYPE_MD5CHALLENGE 4 77 #define EFI_EAP_TYPE_OTP 5 78 #define EFI_EAP_TYPE_GTC 6 79 #define EFI_EAP_TYPE_EAPTLS 13 80 #define EFI_EAP_TYPE_EAPSIM 18 81 #define EFI_EAP_TYPE_TTLS 21 82 #define EFI_EAP_TYPE_PEAP 25 83 #define EFI_EAP_TYPE_MSCHAPV2 26 84 #define EFI_EAP_TYPE_EAP_EXTENSION 33 85 86 /** 87 Set EAP configuration data. 88 89 The SetData() function sets EAP configuration to non-volatile storage or volatile 90 storage. 91 92 @param[in] This Pointer to the EFI_EAP_CONFIGURATION_PROTOCOL instance. 93 @param[in] EapType EAP type. 94 @param[in] DataType Configuration data type. 95 @param[in] Data Pointer to configuration data. 96 @param[in] DataSize Total size of configuration data. 97 98 @retval EFI_SUCCESS The EAP configuration data is set successfully. 99 @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: 100 Data is NULL. 101 DataSize is 0. 102 @retval EFI_UNSUPPORTED The EapType or DataType is unsupported. 103 @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated. 104 **/ 105 typedef 106 EFI_STATUS 107 (EFIAPI *EFI_EAP_CONFIGURATION_SET_DATA) ( 108 IN EFI_EAP_CONFIGURATION_PROTOCOL *This, 109 IN EFI_EAP_TYPE EapType, 110 IN EFI_EAP_CONFIG_DATA_TYPE DataType, 111 IN VOID *Data, 112 IN UINTN DataSize 113 ); 114 115 /** 116 Get EAP configuration data. 117 118 The GetData() function gets EAP configuration. 119 120 @param[in] This Pointer to the EFI_EAP_CONFIGURATION_PROTOCOL instance. 121 @param[in] EapType EAP type. 122 @param[in] DataType Configuration data type. 123 @param[in, out] Data Pointer to configuration data. 124 @param[in, out] DataSize Total size of configuration data. On input, it means 125 the size of Data buffer. On output, it means the size 126 of copied Data buffer if EFI_SUCCESS, and means the 127 size of desired Data buffer if EFI_BUFFER_TOO_SMALL. 128 129 @retval EFI_SUCCESS The EAP configuration data is got successfully. 130 @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: 131 Data is NULL. 132 DataSize is NULL. 133 @retval EFI_UNSUPPORTED The EapType or DataType is unsupported. 134 @retval EFI_NOT_FOUND The EAP configuration data is not found. 135 @retval EFI_BUFFER_TOO_SMALL The buffer is too small to hold the buffer. 136 **/ 137 typedef 138 EFI_STATUS 139 (EFIAPI *EFI_EAP_CONFIGURATION_GET_DATA) ( 140 IN EFI_EAP_CONFIGURATION_PROTOCOL *This, 141 IN EFI_EAP_TYPE EapType, 142 IN EFI_EAP_CONFIG_DATA_TYPE DataType, 143 IN OUT VOID *Data, 144 IN OUT UINTN *DataSize 145 ); 146 147 /// 148 /// The EFI_EAP_CONFIGURATION_PROTOCOL 149 /// is designed to provide a way to set and get EAP configuration, such as Certificate, 150 /// private key file. 151 /// 152 struct _EFI_EAP_CONFIGURATION_PROTOCOL { 153 EFI_EAP_CONFIGURATION_SET_DATA SetData; 154 EFI_EAP_CONFIGURATION_GET_DATA GetData; 155 }; 156 157 extern EFI_GUID gEfiEapConfigurationProtocolGuid; 158 159 #endif