Home | History | Annotate | Download | only in Protocol
      1 /** @file
      2   EFI EAP(Extended Authenticaton Protocol) Protocol Definition
      3   The EFI EAP Protocol is used to abstract the ability to configure and extend the
      4   EAP framework.
      5   The definitions in this file are defined in UEFI Specification 2.3.1B, which have
      6   not been verified by one implementation yet.
      7 
      8   Copyright (c) 2009 - 2015, Intel Corporation. All rights reserved.<BR>
      9   This program and the accompanying materials
     10   are licensed and made available under the terms and conditions of the BSD License
     11   which accompanies this distribution.  The full text of the license may be found at
     12   http://opensource.org/licenses/bsd-license.php
     13 
     14   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     15   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     16 
     17   @par Revision Reference:
     18   This Protocol is introduced in UEFI Specification 2.2
     19 
     20 **/
     21 
     22 #ifndef __EFI_EAP_PROTOCOL_H__
     23 #define __EFI_EAP_PROTOCOL_H__
     24 
     25 
     26 #define EFI_EAP_PROTOCOL_GUID \
     27   { \
     28     0x5d9f96db, 0xe731, 0x4caa, {0xa0, 0xd, 0x72, 0xe1, 0x87, 0xcd, 0x77, 0x62 } \
     29   }
     30 
     31 typedef struct _EFI_EAP_PROTOCOL EFI_EAP_PROTOCOL;
     32 
     33 ///
     34 /// Type for the identification number assigned to the Port by the
     35 /// System in which the Port resides.
     36 ///
     37 typedef VOID *  EFI_PORT_HANDLE;
     38 
     39 ///
     40 /// EAP Authentication Method Type (RFC 3748)
     41 ///@{
     42 #define EFI_EAP_TYPE_TLS 13 ///< REQUIRED - RFC 5216
     43 ///@}
     44 
     45 //
     46 // EAP_TYPE MD5, OTP and TOEKN_CARD has been removed from UEFI2.3.1B.
     47 // Definitions are kept for backward compatibility.
     48 //
     49 #define EFI_EAP_TYPE_MD5                4
     50 #define EFI_EAP_TYPE_OTP                5
     51 #define EFI_EAP_TYPE_TOKEN_CARD         6
     52 
     53 /**
     54   One user provided EAP authentication method.
     55 
     56   Build EAP response packet in response to the EAP request packet specified by
     57   (RequestBuffer, RequestSize).
     58 
     59   @param[in]      PortNumber     Specified the Port where the EAP request packet comes.
     60   @param[in]      RequestBuffer  Pointer to the most recently received EAP- Request packet.
     61   @param[in]      RequestSize    Packet size in bytes for the most recently received
     62                                  EAP-Request packet.
     63   @param[in]      Buffer         Pointer to the buffer to hold the built packet.
     64   @param[in, out] BufferSize     Pointer to the buffer size in bytes.
     65                                  On input, it is the buffer size provided by the caller.
     66                                  On output, it is the buffer size in fact needed to contain
     67                                  the packet.
     68 
     69   @retval EFI_SUCCESS            The required EAP response packet is built successfully.
     70   @retval others                 Failures are encountered during the packet building process.
     71 
     72 **/
     73 typedef
     74 EFI_STATUS
     75 (EFIAPI *EFI_EAP_BUILD_RESPONSE_PACKET)(
     76   IN EFI_PORT_HANDLE        PortNumber,
     77   IN UINT8                  *RequestBuffer,
     78   IN UINTN                  RequestSize,
     79   IN UINT8                  *Buffer,
     80   IN OUT UINTN              *BufferSize
     81   );
     82 
     83 /**
     84   Set the desired EAP authentication method for the Port.
     85 
     86   The SetDesiredAuthMethod() function sets the desired EAP authentication method indicated
     87   by EapAuthType for the Port.
     88 
     89   If EapAuthType is an invalid EAP authentication type, then EFI_INVALID_PARAMETER is
     90   returned.
     91   If the EAP authentication method of EapAuthType is unsupported by the Ports, then it will
     92   return EFI_UNSUPPORTED.
     93   The cryptographic strength of EFI_EAP_TYPE_TLS shall be at least of hash strength
     94   SHA-256 and RSA key length of at least 2048 bits.
     95 
     96   @param[in] This                A pointer to the EFI_EAP_PROTOCOL instance that indicates
     97                                  the calling context.
     98   @param[in] EapAuthType         The type of the EAP authentication method to register. It should
     99                                  be the type value defined by RFC. See RFC 2284 for details.
    100   @param[in] Handler             The handler of the EAP authentication method to register.
    101 
    102   @retval EFI_SUCCESS            The EAP authentication method of EapAuthType is
    103                                  registered successfully.
    104   @retval EFI_INVALID_PARAMETER  EapAuthType is an invalid EAP authentication type.
    105   @retval EFI_UNSUPPORTED        The EAP authentication method of EapAuthType is
    106                                  unsupported by the Port.
    107 
    108 **/
    109 typedef
    110 EFI_STATUS
    111 (EFIAPI *EFI_EAP_SET_DESIRED_AUTHENTICATION_METHOD)(
    112   IN EFI_EAP_PROTOCOL            *This,
    113   IN UINT8                       EapAuthType
    114   );
    115 
    116 /**
    117   Register an EAP authentication method.
    118 
    119   The RegisterAuthMethod() function registers the user provided EAP authentication method,
    120   the type of which is EapAuthType and the handler of which is Handler.
    121 
    122   If EapAuthType is an invalid EAP authentication type, then EFI_INVALID_PARAMETER is
    123   returned.
    124   If there is not enough system memory to perform the registration, then
    125   EFI_OUT_OF_RESOURCES is returned.
    126 
    127   @param[in] This                A pointer to the EFI_EAP_PROTOCOL instance that indicates
    128                                  the calling context.
    129   @param[in] EapAuthType         The type of the EAP authentication method to register. It should
    130                                  be the type value defined by RFC. See RFC 2284 for details.
    131   @param[in] Handler             The handler of the EAP authentication method to register.
    132 
    133   @retval EFI_SUCCESS            The EAP authentication method of EapAuthType is
    134                                  registered successfully.
    135   @retval EFI_INVALID_PARAMETER  EapAuthType is an invalid EAP authentication type.
    136   @retval EFI_OUT_OF_RESOURCES   There is not enough system memory to perform the registration.
    137 
    138 **/
    139 typedef
    140 EFI_STATUS
    141 (EFIAPI *EFI_EAP_REGISTER_AUTHENTICATION_METHOD)(
    142   IN EFI_EAP_PROTOCOL                     *This,
    143   IN UINT8                                EapAuthType,
    144   IN EFI_EAP_BUILD_RESPONSE_PACKET        Handler
    145   );
    146 
    147 ///
    148 /// EFI_EAP_PROTOCOL
    149 /// is used to configure the desired EAP authentication method for the EAP
    150 /// framework and extend the EAP framework by registering new EAP authentication
    151 /// method on a Port. The EAP framework is built on a per-Port basis. Herein, a
    152 /// Port means a NIC. For the details of EAP protocol, please refer to RFC 2284.
    153 ///
    154 struct _EFI_EAP_PROTOCOL {
    155   EFI_EAP_SET_DESIRED_AUTHENTICATION_METHOD   SetDesiredAuthMethod;
    156   EFI_EAP_REGISTER_AUTHENTICATION_METHOD      RegisterAuthMethod;
    157 };
    158 
    159 extern EFI_GUID gEfiEapProtocolGuid;
    160 
    161 #endif
    162 
    163