MdePkg[all]  1.08
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
Supplicant.h File Reference

Data Structures

struct  EFI_SUPPLICANT_KEY_REFRESH
 
struct  EFI_SUPPLICANT_KEY
 
struct  EFI_SUPPLICANT_GTK_LIST
 
struct  EFI_SUPPLICANT_FRAGMENT_DATA
 
struct  _EFI_SUPPLICANT_PROTOCOL
 

Macros

#define EFI_SUPPLICANT_SERVICE_BINDING_PROTOCOL_GUID
 
#define EFI_SUPPLICANT_PROTOCOL_GUID
 
#define EFI_MAX_KEY_LEN   64
 

Typedefs

typedef struct
_EFI_SUPPLICANT_PROTOCOL 
EFI_SUPPLICANT_PROTOCOL
 
typedef IN UINT8RequestBuffer
 
typedef IN UINT8 IN UINTN RequestBufferSize
 
typedef IN UINT8 IN UINTN OUT
UINT8
Buffer
 
typedef IN UINT8 IN UINTN OUT
UINT8 IN OUT UINTN
BufferSize
 
typedef IN OUT
EFI_SUPPLICANT_FRAGMENT_DATA ** 
FragmentTable
 
typedef IN OUT
EFI_SUPPLICANT_FRAGMENT_DATA
IN UINT32
FragmentCount
 
typedef IN OUT
EFI_SUPPLICANT_FRAGMENT_DATA
IN UINT32 IN
EFI_SUPPLICANT_CRYPT_MODE 
CryptMode
 
typedef IN EFI_SUPPLICANT_DATA_TYPE DataType
 
typedef IN
EFI_SUPPLICANT_DATA_TYPE IN
VOID
Data
 
typedef IN
EFI_SUPPLICANT_DATA_TYPE IN
VOID IN UINTN 
DataSize
 

Enumerations

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

Functions

typedef EFI_STATUS (EFIAPI *EFI_SUPPLICANT_BUILD_RESPONSE_PACKET)(IN EFI_SUPPLICANT_PROTOCOL *This
 

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

Macro Definition Documentation

#define EFI_MAX_KEY_LEN   64
#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.

#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.

Typedef Documentation

Enumeration Type Documentation

EFI_80211_LINK_STATE

Enumerator
Ieee80211UnauthenticatedUnassociated 
Ieee80211AuthenticatedUnassociated 
Ieee80211PendingRSNAuthentication 
Ieee80211AuthenticatedAssociated 

EFI_SUPPLICANT_CRYPT_MODE

Enumerator
EfiSupplicantEncrypt 
EfiSupplicantDecrypt 

EFI_SUPPLICANT_DATA_TYPE

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

EFI_SUPPLICANT_KEY_DIRECTION (IEEE Std 802.11 Section 6.3.19.1.2)

Enumerator
Receive 
Transmit 
Both 

EFI_SUPPLICANT_KEY_TYPE (IEEE Std 802.11 Section 6.3.19.1.2)

Enumerator
Group 
Pairwise 
PeerKey 
IGTK 

Function Documentation

typedef EFI_STATUS ( EFIAPI EFI_SUPPLICANT_GET_DATA)

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.

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.

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.

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.

Variable Documentation

EFI_GUID gEfiSupplicantProtocolGuid
EFI_GUID gEfiSupplicantServiceBindingProtocolGuid