4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/** @file
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI EAP(Extended Authenticaton Protocol) Protocol Definition
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The EFI EAP Protocol is used to abstract the ability to configure and extend the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EAP framework.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The definitions in this file are defined in UEFI Specification 2.3, which have
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync not been verified by one implementation yet.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Copyright (c) 2009 - 2011, Intel Corporation. All rights reserved.<BR>
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This program and the accompanying materials
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync are licensed and made available under the terms and conditions of the BSD License
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync which accompanies this distribution. The full text of the license may be found at
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync http://opensource.org/licenses/bsd-license.php
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @par Revision Reference:
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync This Protocol is introduced in UEFI Specification 2.2
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#ifndef __EFI_EAP_PROTOCOL_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define __EFI_EAP_PROTOCOL_H__
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_EAP_PROTOCOL_GUID \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync { \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync 0x5d9f96db, 0xe731, 0x4caa, {0xa0, 0xd, 0x72, 0xe1, 0x87, 0xcd, 0x77, 0x62 } \
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync }
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef struct _EFI_EAP_PROTOCOL EFI_EAP_PROTOCOL;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Type for the identification number assigned to the Port by the
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// System in which the Port resides.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef VOID * EFI_PORT_HANDLE;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// EAP Authentication Method Type (RFC 2284 Section 3)
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///@{
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_EAP_TYPE_MD5 0x4 ///< REQUIRED
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_EAP_TYPE_OTP 0x5 ///< OPTIONAL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#define EFI_EAP_TYPE_TOKEN_CARD 0x6 ///< OPTIONAL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///@}
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync One user provided EAP authentication method.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Build EAP response packet in response to the EAP request packet specified by
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync (RequestBuffer, RequestSize).
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] PortNumber Specified the Port where the EAP request packet comes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] RequestBuffer Pointer to the most recently received EAP- Request packet.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] RequestSize Packet size in bytes for the most recently received
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EAP-Request packet.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Buffer Pointer to the buffer to hold the built packet.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in, out] BufferSize Pointer to the buffer size in bytes.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync On input, it is the buffer size provided by the caller.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync On output, it is the buffer size in fact needed to contain
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the packet.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The required EAP response packet is built successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval others Failures are encountered during the packet building process.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_EAP_BUILD_RESPONSE_PACKET)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_PORT_HANDLE PortNumber,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 *RequestBuffer,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINTN RequestSize,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 *Buffer,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN OUT UINTN *BufferSize
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Set the desired EAP authentication method for the Port.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The SetDesiredAuthMethod() function sets the desired EAP authentication method indicated
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync by EapAuthType for the Port.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync If EapAuthType is an invalid EAP authentication type, then EFI_INVALID_PARAMETER is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync If the EAP authentication method of EapAuthType is unsupported by the Ports, then it will
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync return EFI_UNSUPPORTED.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] This A pointer to the EFI_EAP_PROTOCOL instance that indicates
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the calling context.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] EapAuthType The type of the EAP authentication method to register. It should
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync be the type value defined by RFC. See RFC 2284 for details.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Handler The handler of the EAP authentication method to register.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The EAP authentication method of EapAuthType is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync registered successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER EapAuthType is an invalid EAP authentication type.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_UNSUPPORTED The EAP authentication method of EapAuthType is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync unsupported by the Port.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_EAP_SET_DESIRED_AUTHENTICATION_METHOD)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_EAP_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 EapAuthType
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/**
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync Register an EAP authentication method.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync The RegisterAuthMethod() function registers the user provided EAP authentication method,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the type of which is EapAuthType and the handler of which is Handler.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync If EapAuthType is an invalid EAP authentication type, then EFI_INVALID_PARAMETER is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync If there is not enough system memory to perform the registration, then
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_OUT_OF_RESOURCES is returned.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] This A pointer to the EFI_EAP_PROTOCOL instance that indicates
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync the calling context.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] EapAuthType The type of the EAP authentication method to register. It should
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync be the type value defined by RFC. See RFC 2284 for details.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @param[in] Handler The handler of the EAP authentication method to register.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_SUCCESS The EAP authentication method of EapAuthType is
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync registered successfully.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_INVALID_PARAMETER EapAuthType is an invalid EAP authentication type.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync @retval EFI_OUT_OF_RESOURCES There is not enough system memory to perform the registration.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync**/
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsynctypedef
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncEFI_STATUS
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync(EFIAPI *EFI_EAP_REGISTER_AUTHENTICATION_METHOD)(
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_EAP_PROTOCOL *This,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN UINT8 EapAuthType,
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync IN EFI_EAP_BUILD_RESPONSE_PACKET Handler
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync );
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// EFI_EAP_PROTOCOL
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// is used to configure the desired EAP authentication method for the EAP
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// framework and extend the EAP framework by registering new EAP authentication
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// method on a Port. The EAP framework is built on a per-Port basis. Herein, a
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync/// Port means a NIC. For the details of EAP protocol, please refer to RFC 2284.
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync///
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncstruct _EFI_EAP_PROTOCOL {
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_EAP_SET_DESIRED_AUTHENTICATION_METHOD SetDesiredAuthMethod;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync EFI_EAP_REGISTER_AUTHENTICATION_METHOD RegisterAuthMethod;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync};
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsyncextern EFI_GUID gEfiEapProtocolGuid;
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync#endif
4fd606d1f5abe38e1f42c38de1d2e895166bd0f4vboxsync