/** @file | |
This file defines the EFI EAP Management2 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_MANAGEMENT2_PROTOCOL_H__ | |
#define __EFI_EAP_MANAGEMENT2_PROTOCOL_H__ | |
#include <Protocol/EapManagement.h> | |
/// | |
/// This EFI EAP Management2 protocol provides the ability to configure and control EAPOL | |
/// state machine, and retrieve the information, status and the statistics information of | |
/// EAPOL state machine. | |
/// | |
#define EFI_EAP_MANAGEMENT2_PROTOCOL_GUID \ | |
{ \ | |
0x5e93c847, 0x456d, 0x40b3, {0xa6, 0xb4, 0x78, 0xb0, 0xc9, 0xcf, 0x7f, 0x20 } \ | |
} | |
typedef struct _EFI_EAP_MANAGEMENT2_PROTOCOL EFI_EAP_MANAGEMENT2_PROTOCOL; | |
/** | |
Return key generated through EAP process. | |
The GetKey() function return the key generated through EAP process, so that the 802.11 | |
MAC layer driver can use MSK to derive more keys, e.g. PMK (Pairwise Master Key). | |
@param[in] This Pointer to the EFI_EAP_MANAGEMENT2_PROTOCOL instance. | |
@param[in, out] Msk Pointer to MSK (Master Session Key) buffer. | |
@param[in, out] MskSize MSK buffer size. | |
@param[in, out] Emsk Pointer to EMSK (Extended Master Session Key) buffer. | |
@param[in, out] EmskSize EMSK buffer size. | |
@retval EFI_SUCCESS The operation completed successfully. | |
@retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: | |
Msk is NULL. | |
MskSize is NULL. | |
Emsk is NULL. | |
EmskSize is NULL. | |
@retval EFI_NOT_READY MSK and EMSK are not generated in current session yet. | |
**/ | |
typedef | |
EFI_STATUS | |
(EFIAPI *EFI_EAP_GET_KEY) ( | |
IN EFI_EAP_MANAGEMENT2_PROTOCOL *This, | |
IN OUT UINT8 *Msk, | |
IN OUT UINTN *MskSize, | |
IN OUT UINT8 *Emsk, | |
IN OUT UINT8 *EmskSize | |
); | |
/// | |
/// The EFI_EAP_MANAGEMENT2_PROTOCOL | |
/// is used to control, configure and monitor EAPOL state machine on a Port, and return | |
/// information of the Port. EAPOL state machine is built on a per-Port basis. Herein, a | |
/// Port means a NIC. For the details of EAPOL, please refer to IEEE 802.1x | |
/// specification. | |
/// | |
struct _EFI_EAP_MANAGEMENT2_PROTOCOL { | |
EFI_EAP_GET_SYSTEM_CONFIGURATION GetSystemConfiguration; | |
EFI_EAP_SET_SYSTEM_CONFIGURATION SetSystemConfiguration; | |
EFI_EAP_INITIALIZE_PORT InitializePort; | |
EFI_EAP_USER_LOGON UserLogon; | |
EFI_EAP_USER_LOGOFF UserLogoff; | |
EFI_EAP_GET_SUPPLICANT_STATUS GetSupplicantStatus; | |
EFI_EAP_SET_SUPPLICANT_CONFIGURATION SetSupplicantConfiguration; | |
EFI_EAP_GET_SUPPLICANT_STATISTICS GetSupplicantStatistics; | |
EFI_EAP_GET_KEY GetKey; | |
}; | |
extern EFI_GUID gEfiEapManagement2ProtocolGuid; | |
#endif |