--- /dev/null
+/** @file\r
+ This file defines the EFI EAP Management2 protocol.\r
+\r
+ Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>\r
+ This program and the accompanying materials\r
+ are licensed and made available under the terms and conditions of the BSD License\r
+ which accompanies this distribution. The full text of the license may be found at\r
+ http://opensource.org/licenses/bsd-license.php\r
+\r
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+\r
+ @par Revision Reference:\r
+ This Protocol is introduced in UEFI Specification 2.5\r
+\r
+**/\r
+\r
+#ifndef __EFI_EAP_MANAGEMENT2_PROTOCOL_H__\r
+#define __EFI_EAP_MANAGEMENT2_PROTOCOL_H__\r
+\r
+#include <Protocol/EapManagement.h>\r
+\r
+///\r
+/// This EFI EAP Management2 protocol provides the ability to configure and control EAPOL\r
+/// state machine, and retrieve the information, status and the statistics information of\r
+/// EAPOL state machine.\r
+///\r
+#define EFI_EAP_MANAGEMENT2_PROTOCOL_GUID \\r
+ { \\r
+ 0x5e93c847, 0x456d, 0x40b3, {0xa6, 0xb4, 0x78, 0xb0, 0xc9, 0xcf, 0x7f, 0x20 } \\r
+ }\r
+\r
+typedef struct _EFI_EAP_MANAGEMENT2_PROTOCOL EFI_EAP_MANAGEMENT2_PROTOCOL;\r
+\r
+/**\r
+ Return key generated through EAP process.\r
+\r
+ The GetKey() function return the key generated through EAP process, so that the 802.11\r
+ MAC layer driver can use MSK to derive more keys, e.g. PMK (Pairwise Master Key).\r
+\r
+ @param[in] This Pointer to the EFI_EAP_MANAGEMENT2_PROTOCOL instance.\r
+ @param[in, out] Msk Pointer to MSK (Master Session Key) buffer.\r
+ @param[in, out] MskSize MSK buffer size.\r
+ @param[in, out] Emsk Pointer to EMSK (Extended Master Session Key) buffer.\r
+ @param[in, out] EmskSize EMSK buffer size.\r
+\r
+ @retval EFI_SUCCESS The operation completed successfully.\r
+ @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE:\r
+ Msk is NULL.\r
+ MskSize is NULL.\r
+ Emsk is NULL.\r
+ EmskSize is NULL.\r
+ @retval EFI_NOT_READY MSK and EMSK are not generated in current session yet.\r
+\r
+**/\r
+typedef\r
+EFI_STATUS\r
+(EFIAPI *EFI_EAP_GET_KEY) (\r
+ IN EFI_EAP_MANAGEMENT2_PROTOCOL *This,\r
+ IN OUT UINT8 *Msk,\r
+ IN OUT UINTN *MskSize,\r
+ IN OUT UINT8 *Emsk,\r
+ IN OUT UINT8 *EmskSize\r
+ );\r
+\r
+///\r
+/// The EFI_EAP_MANAGEMENT2_PROTOCOL\r
+/// is used to control, configure and monitor EAPOL state machine on a Port, and return\r
+/// information of the Port. EAPOL state machine is built on a per-Port basis. Herein, a\r
+/// Port means a NIC. For the details of EAPOL, please refer to IEEE 802.1x\r
+/// specification.\r
+///\r
+struct _EFI_EAP_MANAGEMENT2_PROTOCOL {\r
+ EFI_EAP_GET_SYSTEM_CONFIGURATION GetSystemConfiguration;\r
+ EFI_EAP_SET_SYSTEM_CONFIGURATION SetSystemConfiguration;\r
+ EFI_EAP_INITIALIZE_PORT InitializePort;\r
+ EFI_EAP_USER_LOGON UserLogon;\r
+ EFI_EAP_USER_LOGOFF UserLogoff;\r
+ EFI_EAP_GET_SUPPLICANT_STATUS GetSupplicantStatus;\r
+ EFI_EAP_SET_SUPPLICANT_CONFIGURATION SetSupplicantConfiguration;\r
+ EFI_EAP_GET_SUPPLICANT_STATISTICS GetSupplicantStatistics;\r
+ EFI_EAP_GET_KEY GetKey;\r
+};\r
+\r
+extern EFI_GUID gEfiEapManagement2ProtocolGuid;\r
+\r
+#endif\r
## Include/Protocol/WiFi.h\r
gEfiWiFiProtocolGuid = { 0xda55bc9, 0x45f8, 0x4bb4, {0x87, 0x19, 0x52, 0x24, 0xf1, 0x8a, 0x4d, 0x45 }}\r
\r
+ ## Include/Protocol/EapManagement2.h\r
+ gEfiEapManagement2ProtocolGuid = { 0x5e93c847, 0x456d, 0x40b3, {0xa6, 0xb4, 0x78, 0xb0, 0xc9, 0xcf, 0x7f, 0x20 }}\r
+\r
#\r
# [Error.gEfiMdePkgTokenSpaceGuid]\r
# 0x80000001 | Invalid value provided.\r