/** @file
This file defines the EFI EAP Management2 protocol.
Copyright (c) 2015, Intel Corporation. All rights reserved.
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
///
/// 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