TianoCore EDK2 master
Loading...
Searching...
No Matches
Supplicant.h
Go to the documentation of this file.
1
12#ifndef __EFI_SUPPLICANT_PROTOCOL_H__
13#define __EFI_SUPPLICANT_PROTOCOL_H__
14
15#include <Protocol/WiFi2.h>
16
22#define EFI_SUPPLICANT_SERVICE_BINDING_PROTOCOL_GUID \
23 { \
24 0x45bcd98e, 0x59ad, 0x4174, { 0x95, 0x46, 0x34, 0x4a, 0x7, 0x48, 0x58, 0x98 } \
25 }
26
31#define EFI_SUPPLICANT_PROTOCOL_GUID \
32 { \
33 0x54fcc43e, 0xaa89, 0x4333, { 0x9a, 0x85, 0xcd, 0xea, 0x24, 0x5, 0x1e, 0x9e } \
34 }
35
37
41typedef enum {
42 //
43 // Encrypt data provided in the fragment buffers.
44 //
45 EfiSupplicantEncrypt,
46 //
47 // Decrypt data provided in the fragment buffers.
48 //
49 EfiSupplicantDecrypt,
51
55typedef enum {
56 //
57 // Session Configuration
58 //
59
60 //
61 // Current authentication type in use. The corresponding Data is of type
62 // EFI_80211_AKM_SUITE_SELECTOR.
63 //
64 EfiSupplicant80211AKMSuite,
65 //
66 // Group data encryption type in use. The corresponding Data is of type
67 // EFI_SUPPLICANT_CIPHER_SUITE_SELECTOR.
68 //
69 EfiSupplicant80211GroupDataCipherSuite,
70 //
71 // Pairwise encryption type in use. The corresponding Data is of type
72 // EFI_80211_CIPHER_SUITE_SELECTOR.
73 //
74 EfiSupplicant80211PairwiseCipherSuite,
75 //
76 // PSK password. The corresponding Data is a NULL-terminated ASCII string.
77 //
78 EfiSupplicant80211PskPassword,
79 //
80 // Target SSID name. The corresponding Data is of type EFI_80211_SSID.
81 //
82 EfiSupplicant80211TargetSSIDName,
83 //
84 // Station MAC address. The corresponding Data is of type
85 // EFI_80211_MAC_ADDRESS.
86 //
87 EfiSupplicant80211StationMac,
88 //
89 // Target SSID MAC address. The corresponding Data is 6 bytes MAC address.
90 //
91 EfiSupplicant80211TargetSSIDMac,
92
93 //
94 // Session Information
95 //
96
97 //
98 // 802.11 PTK. The corresponding Data is of type EFI_SUPPLICANT_KEY.
99 //
100 EfiSupplicant80211PTK,
101 //
102 // 802.11 GTK. The corresponding Data is of type EFI_SUPPLICANT_GTK_LIST.
103 //
104 EfiSupplicant80211GTK,
105 //
106 // Supplicant state. The corresponding Data is
107 // EFI_EAPOL_SUPPLICANT_PAE_STATE.
108 //
109 EfiSupplicantState,
110 //
111 // 802.11 link state. The corresponding Data is EFI_80211_LINK_STATE.
112 //
113 EfiSupplicant80211LinkState,
114 //
115 // Flag indicates key is refreshed. The corresponding Data is
116 // EFI_SUPPLICANT_KEY_REFRESH.
117 //
118 EfiSupplicantKeyRefresh,
119
120 //
121 // Session Configuration
122 //
123
124 //
125 // Supported authentication types. The corresponding Data is of type
126 // EFI_80211_AKM_SUITE_SELECTOR.
127 //
128 EfiSupplicant80211SupportedAKMSuites,
129 //
130 // Supported software encryption types provided by supplicant driver. The
131 // corresponding Data is of type EFI_80211_CIPHER_SUITE_SELECTOR.
132 //
133 EfiSupplicant80211SupportedSoftwareCipherSuites,
134 //
135 // Supported hardware encryption types provided by wireless UNDI driver. The
136 // corresponding Data is of type EFI_80211_CIPHER_SUITE_SELECTOR.
137 //
138 EfiSupplicant80211SupportedHardwareCipherSuites,
139
140 //
141 // Session Information
142 //
143
144 //
145 // 802.11 Integrity GTK. The corresponding Data is of type
146 // EFI_SUPPLICANT_GTK_LIST.
147 //
148 EfiSupplicant80211IGTK,
149 //
150 // 802.11 PMK. The corresponding Data is 32 bytes pairwise master key.
151 //
152 EfiSupplicant80211PMK,
153 EfiSupplicantDataTypeMaximum
155
159typedef enum {
160 //
161 // Indicates initial start state, unauthenticated, unassociated.
162 //
163 Ieee80211UnauthenticatedUnassociated,
164 //
165 // Indicates authenticated, unassociated.
166 //
167 Ieee80211AuthenticatedUnassociated,
168 //
169 // Indicates authenticated and associated, but pending RSN authentication.
170 //
171 Ieee80211PendingRSNAuthentication,
172 //
173 // Indicates authenticated and associated.
174 //
175 Ieee80211AuthenticatedAssociated
177
181typedef enum {
182 Group,
183 Pairwise,
184 PeerKey,
185 IGTK
187
191typedef enum {
192 //
193 // Indicates that the keys are being installed for the receive direction.
194 //
195 Receive,
196 //
197 // Indicates that the keys are being installed for the transmit direction.
198 //
199 Transmit,
200 //
201 // Indicates that the keys are being installed for both the receive and
202 // transmit directions.
203 //
204 Both
206
210typedef struct {
211 //
212 // If TRUE, indicates GTK is just refreshed after a successful call to
213 // EFI_SUPPLICANT_PROTOCOL.BuildResponsePacket().
214 //
215 BOOLEAN GTKRefresh;
217
218#define EFI_MAX_KEY_LEN 64
219
223typedef struct {
224 //
225 // The key value.
226 //
227 UINT8 Key[EFI_MAX_KEY_LEN];
228 //
229 // Length in bytes of the Key. Should be up to EFI_MAX_KEY_LEN.
230 //
231 UINT8 KeyLen;
232 //
233 // The key identifier.
234 //
235 UINT8 KeyId;
236 //
237 // Defines whether this key is a group key, pairwise key, PeerKey, or
238 // Integrity Group.
239 //
241 //
242 // The value is set according to the KeyType.
243 //
245 //
246 // The Receive Sequence Count value.
247 //
248 UINT8 Rsc[8];
249 //
250 // Length in bytes of the Rsc. Should be up to 8.
251 //
252 UINT8 RscLen;
253 //
254 // Indicates whether the key is configured by the Authenticator or
255 // Supplicant. The value true indicates Authenticator.
256 //
257 BOOLEAN IsAuthenticator;
258 //
259 // The cipher suite required for this association.
260 //
261 EFI_80211_SUITE_SELECTOR CipherSuite;
262 //
263 // Indicates the direction for which the keys are to be installed.
264 //
267
271typedef struct {
272 //
273 // Indicates the number of GTKs that are contained in GTKList.
274 //
275 UINT8 GTKCount;
276 //
277 // A variable-length array of GTKs of type EFI_SUPPLICANT_KEY. The number of
278 // entries is specified by GTKCount.
279 //
280 EFI_SUPPLICANT_KEY GTKList[1];
282
286typedef struct {
287 //
288 // Length of data buffer in the fragment.
289 //
290 UINT32 FragmentLength;
291 //
292 // Pointer to the data buffer in the fragment.
293 //
294 VOID *FragmentBuffer;
296
334typedef
338 IN UINT8 *RequestBuffer OPTIONAL,
339 IN UINTN RequestBufferSize OPTIONAL,
340 OUT UINT8 *Buffer,
341 IN OUT UINTN *BufferSize
342 );
343
368typedef
372 IN OUT EFI_SUPPLICANT_FRAGMENT_DATA **FragmentTable,
373 IN UINT32 *FragmentCount,
375 );
376
396typedef
401 IN VOID *Data,
402 IN UINTN DataSize
403 );
404
433typedef
438 OUT UINT8 *Data OPTIONAL,
439 IN OUT UINTN *DataSize
440 );
441
449 EFI_SUPPLICANT_BUILD_RESPONSE_PACKET BuildResponsePacket;
450 EFI_SUPPLICANT_PROCESS_PACKET ProcessPacket;
453};
454
455extern EFI_GUID gEfiSupplicantServiceBindingProtocolGuid;
456extern EFI_GUID gEfiSupplicantProtocolGuid;
457
458#endif
UINT64 UINTN
#define OPTIONAL
Definition: Base.h:290
#define IN
Definition: Base.h:279
#define OUT
Definition: Base.h:284
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)
Definition: Supplicant.h:336
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)
Definition: Supplicant.h:370
EFI_STATUS(EFIAPI * EFI_SUPPLICANT_SET_DATA)(IN EFI_SUPPLICANT_PROTOCOL *This, IN EFI_SUPPLICANT_DATA_TYPE DataType, IN VOID *Data, IN UINTN DataSize)
Definition: Supplicant.h:398
EFI_SUPPLICANT_DATA_TYPE
Definition: Supplicant.h:55
EFI_SUPPLICANT_CRYPT_MODE
Definition: Supplicant.h:41
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)
Definition: Supplicant.h:435
EFI_SUPPLICANT_KEY_TYPE
Definition: Supplicant.h:181
EFI_SUPPLICANT_KEY_DIRECTION
Definition: Supplicant.h:191
EFI_80211_LINK_STATE
Definition: Supplicant.h:159
RETURN_STATUS EFI_STATUS
Definition: UefiBaseType.h:29
Definition: Base.h:213