iPXE
Data Structures | Macros | Typedefs | Enumerations | Functions | Variables
Supplicant.h File Reference

This file defines the EFI Supplicant Protocol. More...

#include <ipxe/efi/Protocol/WiFi2.h>

Go to the source code of this file.

Data Structures

struct  EFI_SUPPLICANT_KEY_REFRESH
 EFI_SUPPLICANT_KEY_REFRESH. More...
 
struct  EFI_SUPPLICANT_KEY
 EFI_SUPPLICANT_KEY. More...
 
struct  EFI_SUPPLICANT_GTK_LIST
 EFI_SUPPLICANT_GTK_LIST. More...
 
struct  EFI_SUPPLICANT_FRAGMENT_DATA
 EFI_SUPPLICANT_FRAGMENT_DATA. More...
 
struct  _EFI_SUPPLICANT_PROTOCOL
 The EFI_SUPPLICANT_PROTOCOL is designed to provide unified place for WIFI and EAP security management. More...
 

Macros

#define EFI_SUPPLICANT_SERVICE_BINDING_PROTOCOL_GUID
 The EFI Supplicant Service Binding Protocol is used to locate EFI Supplicant Protocol drivers to create and destroy child of the driver to communicate with other host using Supplicant protocol. More...
 
#define EFI_SUPPLICANT_PROTOCOL_GUID
 The EFI Supplicant protocol provides services to process authentication and data encryption/decryption for security management. More...
 
#define EFI_MAX_KEY_LEN   64
 

Typedefs

typedef struct _EFI_SUPPLICANT_PROTOCOL EFI_SUPPLICANT_PROTOCOL
 
typedef EFI_STATUS(EFIAPIEFI_SUPPLICANT_BUILD_RESPONSE_PACKET) (IN EFI_SUPPLICANT_PROTOCOL *This, IN UINT8 *RequestBuffer OPTIONAL, IN UINTN RequestBufferSize OPTIONAL, OUT UINT8 *Buffer, IN OUT UINTN *BufferSize)
 BuildResponsePacket() is called during STA and AP authentication is in progress. More...
 
typedef EFI_STATUS(EFIAPIEFI_SUPPLICANT_PROCESS_PACKET) (IN EFI_SUPPLICANT_PROTOCOL *This, IN OUT EFI_SUPPLICANT_FRAGMENT_DATA **FragmentTable, IN UINT32 *FragmentCount, IN EFI_SUPPLICANT_CRYPT_MODE CryptMode)
 ProcessPacket() is called to Supplicant driver to encrypt or decrypt the data depending type of authentication type. More...
 
typedef EFI_STATUS(EFIAPIEFI_SUPPLICANT_SET_DATA) (IN EFI_SUPPLICANT_PROTOCOL *This, IN EFI_SUPPLICANT_DATA_TYPE DataType, IN VOID *Data, IN UINTN DataSize)
 Set Supplicant configuration data. More...
 
typedef EFI_STATUS(EFIAPIEFI_SUPPLICANT_GET_DATA) (IN EFI_SUPPLICANT_PROTOCOL *This, IN EFI_SUPPLICANT_DATA_TYPE DataType, OUT UINT8 *Data OPTIONAL, IN OUT UINTN *DataSize)
 Get Supplicant configuration data. More...
 

Enumerations

enum  EFI_SUPPLICANT_CRYPT_MODE { EfiSupplicantEncrypt, EfiSupplicantDecrypt }
 EFI_SUPPLICANT_CRYPT_MODE. More...
 
enum  EFI_SUPPLICANT_DATA_TYPE {
  EfiSupplicant80211AKMSuite, EfiSupplicant80211GroupDataCipherSuite, EfiSupplicant80211PairwiseCipherSuite, EfiSupplicant80211PskPassword,
  EfiSupplicant80211TargetSSIDName, EfiSupplicant80211StationMac, EfiSupplicant80211TargetSSIDMac, EfiSupplicant80211PTK,
  EfiSupplicant80211GTK, EfiSupplicantState, EfiSupplicant80211LinkState, EfiSupplicantKeyRefresh,
  EfiSupplicant80211SupportedAKMSuites, EfiSupplicant80211SupportedSoftwareCipherSuites, EfiSupplicant80211SupportedHardwareCipherSuites, EfiSupplicant80211IGTK,
  EfiSupplicant80211PMK, EfiSupplicantDataTypeMaximum
}
 EFI_SUPPLICANT_DATA_TYPE. More...
 
enum  EFI_80211_LINK_STATE { Ieee80211UnauthenticatedUnassociated, Ieee80211AuthenticatedUnassociated, Ieee80211PendingRSNAuthentication, Ieee80211AuthenticatedAssociated }
 EFI_80211_LINK_STATE. More...
 
enum  EFI_SUPPLICANT_KEY_TYPE { Group, Pairwise, PeerKey, IGTK }
 EFI_SUPPLICANT_KEY_TYPE (IEEE Std 802.11 Section 6.3.19.1.2) More...
 
enum  EFI_SUPPLICANT_KEY_DIRECTION { Receive, Transmit, Both }
 EFI_SUPPLICANT_KEY_DIRECTION (IEEE Std 802.11 Section 6.3.19.1.2) More...
 

Functions

 FILE_LICENCE (BSD2_PATENT)
 

Variables

EFI_GUID gEfiSupplicantServiceBindingProtocolGuid
 
EFI_GUID gEfiSupplicantProtocolGuid
 

Detailed Description

This file defines the EFI Supplicant Protocol.

Copyright (c) 2016 - 2017, Intel Corporation. All rights reserved.
SPDX-License-Identifier: BSD-2-Clause-Patent

Revision Reference:
This Protocol is introduced in UEFI Specification 2.6

Definition in file Supplicant.h.

Macro Definition Documentation

◆ EFI_SUPPLICANT_SERVICE_BINDING_PROTOCOL_GUID

#define EFI_SUPPLICANT_SERVICE_BINDING_PROTOCOL_GUID
Value:
{ \
0x45bcd98e, 0x59ad, 0x4174, { 0x95, 0x46, 0x34, 0x4a, 0x7, 0x48, 0x58, 0x98 } \
}

The EFI Supplicant Service Binding Protocol is used to locate EFI Supplicant Protocol drivers to create and destroy child of the driver to communicate with other host using Supplicant protocol.

Definition at line 24 of file Supplicant.h.

◆ EFI_SUPPLICANT_PROTOCOL_GUID

#define EFI_SUPPLICANT_PROTOCOL_GUID
Value:
{ \
0x54fcc43e, 0xaa89, 0x4333, { 0x9a, 0x85, 0xcd, 0xea, 0x24, 0x5, 0x1e, 0x9e } \
}

The EFI Supplicant protocol provides services to process authentication and data encryption/decryption for security management.

Definition at line 33 of file Supplicant.h.

◆ EFI_MAX_KEY_LEN

#define EFI_MAX_KEY_LEN   64

Definition at line 220 of file Supplicant.h.

Typedef Documentation

◆ EFI_SUPPLICANT_PROTOCOL

Definition at line 38 of file Supplicant.h.

◆ EFI_SUPPLICANT_BUILD_RESPONSE_PACKET

typedef EFI_STATUS(EFIAPI * EFI_SUPPLICANT_BUILD_RESPONSE_PACKET) (IN EFI_SUPPLICANT_PROTOCOL *This, IN UINT8 *RequestBuffer OPTIONAL, IN UINTN RequestBufferSize OPTIONAL, OUT UINT8 *Buffer, IN OUT UINTN *BufferSize)

BuildResponsePacket() is called during STA and AP authentication is in progress.

Supplicant derives the PTK or session keys depend on type of authentication is being employed.

Parameters
[in]ThisPointer to the EFI_SUPPLICANT_PROTOCOL instance.
[in]RequestBufferPointer to the most recently received EAPOL packet. NULL means the supplicant need initiate the EAP authentication session and send EAPOL-Start message.
[in]RequestBufferSizePacket size in bytes for the most recently received EAPOL packet. 0 is only valid when RequestBuffer is NULL.
[out]BufferPointer to the buffer to hold the built packet.
[in,out]BufferSizePointer to the buffer size in bytes. On input, it is the buffer size provided by the caller. On output, it is the buffer size in fact needed to contain the packet.
Return values
EFI_SUCCESSThe required EAPOL packet is built successfully.
EFI_INVALID_PARAMETEROne or more of the following conditions is TRUE: RequestBuffer is NULL, but RequestSize is NOT 0. RequestBufferSize is 0. Buffer is NULL, but RequestBuffer is NOT 0. BufferSize is NULL.
EFI_BUFFER_TOO_SMALLBufferSize is too small to hold the response packet.
EFI_NOT_READYCurrent EAPOL session state is NOT ready to build ResponsePacket.

Definition at line 338 of file Supplicant.h.

◆ EFI_SUPPLICANT_PROCESS_PACKET

typedef EFI_STATUS(EFIAPI * EFI_SUPPLICANT_PROCESS_PACKET) (IN EFI_SUPPLICANT_PROTOCOL *This, IN OUT EFI_SUPPLICANT_FRAGMENT_DATA **FragmentTable, IN UINT32 *FragmentCount, IN EFI_SUPPLICANT_CRYPT_MODE CryptMode)

ProcessPacket() is called to Supplicant driver to encrypt or decrypt the data depending type of authentication type.

Parameters
[in]ThisPointer to the EFI_SUPPLICANT_PROTOCOL instance.
[in,out]FragmentTablePointer to a list of fragment. The caller will take responsible to handle the original FragmentTable while it may be reallocated in Supplicant driver.
[in]FragmentCountNumber of fragment.
[in]CryptModeCrypt mode.
Return values
EFI_SUCCESSThe operation completed successfully.
EFI_INVALID_PARAMETEROne or more of the following conditions is TRUE: FragmentTable is NULL. FragmentCount is NULL. CryptMode is invalid.
EFI_NOT_READYCurrent supplicant state is NOT Authenticated.
EFI_ABORTEDSomething wrong decryption the message.
EFI_UNSUPPORTEDThis API is not supported.

Definition at line 372 of file Supplicant.h.

◆ EFI_SUPPLICANT_SET_DATA

typedef EFI_STATUS(EFIAPI * EFI_SUPPLICANT_SET_DATA) (IN EFI_SUPPLICANT_PROTOCOL *This, IN EFI_SUPPLICANT_DATA_TYPE DataType, IN VOID *Data, IN UINTN DataSize)

Set Supplicant configuration data.

Parameters
[in]ThisPointer to the EFI_SUPPLICANT_PROTOCOL instance.
[in]DataTypeThe type of data.
[in]DataPointer to the buffer to hold the data.
[in]DataSizePointer to the buffer size in bytes.
Return values
EFI_SUCCESSThe Supplicant configuration data is set successfully.
EFI_INVALID_PARAMETEROne or more of the following conditions is TRUE: Data is NULL. DataSize is 0.
EFI_UNSUPPORTEDThe DataType is unsupported.
EFI_OUT_OF_RESOURCESRequired system resources could not be allocated.

Definition at line 400 of file Supplicant.h.

◆ EFI_SUPPLICANT_GET_DATA

typedef EFI_STATUS(EFIAPI * EFI_SUPPLICANT_GET_DATA) (IN EFI_SUPPLICANT_PROTOCOL *This, IN EFI_SUPPLICANT_DATA_TYPE DataType, OUT UINT8 *Data OPTIONAL, IN OUT UINTN *DataSize)

Get Supplicant configuration data.

Parameters
[in]ThisPointer to the EFI_SUPPLICANT_PROTOCOL instance.
[in]DataTypeThe type of data.
[out]DataPointer to the buffer to hold the data. Ignored if DataSize is 0.
[in,out]DataSizePointer to the buffer size in bytes. On input, it is the buffer size provided by the caller. On output, it is the buffer size in fact needed to contain the packet.
Return values
EFI_SUCCESSThe Supplicant configuration data is got successfully.
EFI_INVALID_PARAMETEROne or more of the following conditions is TRUE: This is NULL. DataSize is NULL. Data is NULL if *DataSize is not zero.
EFI_UNSUPPORTEDThe DataType is unsupported.
EFI_NOT_FOUNDThe Supplicant configuration data is not found.
EFI_BUFFER_TOO_SMALLThe size of Data is too small for the specified configuration data and the required size is returned in DataSize.

Definition at line 437 of file Supplicant.h.

Enumeration Type Documentation

◆ EFI_SUPPLICANT_CRYPT_MODE

EFI_SUPPLICANT_CRYPT_MODE.

Enumerator
EfiSupplicantEncrypt 
EfiSupplicantDecrypt 

Definition at line 43 of file Supplicant.h.

43  {
44  //
45  // Encrypt data provided in the fragment buffers.
46  //
48  //
49  // Decrypt data provided in the fragment buffers.
50  //
EFI_SUPPLICANT_CRYPT_MODE
EFI_SUPPLICANT_CRYPT_MODE.
Definition: Supplicant.h:43

◆ EFI_SUPPLICANT_DATA_TYPE

EFI_SUPPLICANT_DATA_TYPE.

Enumerator
EfiSupplicant80211AKMSuite 
EfiSupplicant80211GroupDataCipherSuite 
EfiSupplicant80211PairwiseCipherSuite 
EfiSupplicant80211PskPassword 
EfiSupplicant80211TargetSSIDName 
EfiSupplicant80211StationMac 
EfiSupplicant80211TargetSSIDMac 
EfiSupplicant80211PTK 
EfiSupplicant80211GTK 
EfiSupplicantState 
EfiSupplicant80211LinkState 
EfiSupplicantKeyRefresh 
EfiSupplicant80211SupportedAKMSuites 
EfiSupplicant80211SupportedSoftwareCipherSuites 
EfiSupplicant80211SupportedHardwareCipherSuites 
EfiSupplicant80211IGTK 
EfiSupplicant80211PMK 
EfiSupplicantDataTypeMaximum 

Definition at line 57 of file Supplicant.h.

57  {
58  //
59  // Session Configuration
60  //
61 
62  //
63  // Current authentication type in use. The corresponding Data is of type
64  // EFI_80211_AKM_SUITE_SELECTOR.
65  //
67  //
68  // Group data encryption type in use. The corresponding Data is of type
69  // EFI_SUPPLICANT_CIPHER_SUITE_SELECTOR.
70  //
72  //
73  // Pairwise encryption type in use. The corresponding Data is of type
74  // EFI_80211_CIPHER_SUITE_SELECTOR.
75  //
77  //
78  // PSK password. The corresponding Data is a NULL-terminated ASCII string.
79  //
81  //
82  // Target SSID name. The corresponding Data is of type EFI_80211_SSID.
83  //
85  //
86  // Station MAC address. The corresponding Data is of type
87  // EFI_80211_MAC_ADDRESS.
88  //
90  //
91  // Target SSID MAC address. The corresponding Data is 6 bytes MAC address.
92  //
94 
95  //
96  // Session Information
97  //
98 
99  //
100  // 802.11 PTK. The corresponding Data is of type EFI_SUPPLICANT_KEY.
101  //
103  //
104  // 802.11 GTK. The corresponding Data is of type EFI_SUPPLICANT_GTK_LIST.
105  //
107  //
108  // Supplicant state. The corresponding Data is
109  // EFI_EAPOL_SUPPLICANT_PAE_STATE.
110  //
112  //
113  // 802.11 link state. The corresponding Data is EFI_80211_LINK_STATE.
114  //
116  //
117  // Flag indicates key is refreshed. The corresponding Data is
118  // EFI_SUPPLICANT_KEY_REFRESH.
119  //
121 
122  //
123  // Session Configuration
124  //
125 
126  //
127  // Supported authentication types. The corresponding Data is of type
128  // EFI_80211_AKM_SUITE_SELECTOR.
129  //
131  //
132  // Supported software encryption types provided by supplicant driver. The
133  // corresponding Data is of type EFI_80211_CIPHER_SUITE_SELECTOR.
134  //
136  //
137  // Supported hardware encryption types provided by wireless UNDI driver. The
138  // corresponding Data is of type EFI_80211_CIPHER_SUITE_SELECTOR.
139  //
141 
142  //
143  // Session Information
144  //
145 
146  //
147  // 802.11 Integrity GTK. The corresponding Data is of type
148  // EFI_SUPPLICANT_GTK_LIST.
149  //
151  //
152  // 802.11 PMK. The corresponding Data is 32 bytes pairwise master key.
153  //
EFI_SUPPLICANT_DATA_TYPE
EFI_SUPPLICANT_DATA_TYPE.
Definition: Supplicant.h:57

◆ EFI_80211_LINK_STATE

EFI_80211_LINK_STATE.

Enumerator
Ieee80211UnauthenticatedUnassociated 
Ieee80211AuthenticatedUnassociated 
Ieee80211PendingRSNAuthentication 
Ieee80211AuthenticatedAssociated 

Definition at line 161 of file Supplicant.h.

161  {
162  //
163  // Indicates initial start state, unauthenticated, unassociated.
164  //
166  //
167  // Indicates authenticated, unassociated.
168  //
170  //
171  // Indicates authenticated and associated, but pending RSN authentication.
172  //
174  //
175  // Indicates authenticated and associated.
176  //
EFI_80211_LINK_STATE
EFI_80211_LINK_STATE.
Definition: Supplicant.h:161

◆ EFI_SUPPLICANT_KEY_TYPE

EFI_SUPPLICANT_KEY_TYPE (IEEE Std 802.11 Section 6.3.19.1.2)

Enumerator
Group 
Pairwise 
PeerKey 
IGTK 

Definition at line 183 of file Supplicant.h.

183  {
184  Group,
185  Pairwise,
186  PeerKey,
187  IGTK
EFI_SUPPLICANT_KEY_TYPE
EFI_SUPPLICANT_KEY_TYPE (IEEE Std 802.11 Section 6.3.19.1.2)
Definition: Supplicant.h:183

◆ EFI_SUPPLICANT_KEY_DIRECTION

EFI_SUPPLICANT_KEY_DIRECTION (IEEE Std 802.11 Section 6.3.19.1.2)

Enumerator
Receive 
Transmit 
Both 

Definition at line 193 of file Supplicant.h.

193  {
194  //
195  // Indicates that the keys are being installed for the receive direction.
196  //
197  Receive,
198  //
199  // Indicates that the keys are being installed for the transmit direction.
200  //
201  Transmit,
202  //
203  // Indicates that the keys are being installed for both the receive and
204  // transmit directions.
205  //
206  Both
EFI_SUPPLICANT_KEY_DIRECTION
EFI_SUPPLICANT_KEY_DIRECTION (IEEE Std 802.11 Section 6.3.19.1.2)
Definition: Supplicant.h:193

Function Documentation

◆ FILE_LICENCE()

FILE_LICENCE ( BSD2_PATENT  )

Variable Documentation

◆ gEfiSupplicantServiceBindingProtocolGuid

EFI_GUID gEfiSupplicantServiceBindingProtocolGuid

◆ gEfiSupplicantProtocolGuid

EFI_GUID gEfiSupplicantProtocolGuid