Home | History | Annotate | Download | only in Protocol
      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