1/**
2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the mingw-w64 runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
5 */
6#ifndef _INC_EAPTYPES
7#define _INC_EAPTYPES
8
9#ifdef __cplusplus
10extern "C" {
11#endif
12
13
14typedef DWORD EAP_SESSIONID;
15typedef void* EAP_SESSION_HANDLE;
16
17#define EAP_FLAG_Reserved1 0x00000001
18#define EAP_FLAG_NON_INTERACTIVE 0x00000002
19#define EAP_FLAG_LOGON 0x00000004
20#define EAP_FLAG_PREVIEW 0x00000008
21#define EAP_FLAG_Reserved2 0x00000010
22#define EAP_FLAG_MACHINE_AUTH 0x00000020
23#define EAP_FLAG_GUEST_ACCESS 0x00000040
24#define EAP_FLAG_Reserved3 0x00000080
25#define EAP_FLAG_Reserved4 0x00000100
26#define EAP_FLAG_RESUME_FROM_HIBERNATE 0x00000200
27#define EAP_FLAG_Reserved5 0x00000400
28#define EAP_FLAG_Reserved6 0x00000800
29#define EAP_FLAG_FULL_AUTH 0x00001000
30#define EAP_FLAG_PREFER_ALT_CREDENTIALS 0x00002000
31#define EAP_FLAG_Reserved7 0x00004000
32#define EAP_PEER_FLAG_HEALTH_STATE_CHANGE 0x00008000
33#define EAP_FLAG_SUPRESS_UI 0x00010000
34#define EAP_FLAG_PRE_LOGON 0x00020000
35#define EAP_FLAG_USER_AUTH 0x00040000
36#define EAP_FLAG_CONFG_READONLY 0x00080000
37#define EAP_FLAG_Reserved8 0x00100000
38
39typedef enum _EAP_ATTRIBUTE_TYPE {
40  eatMinimum                  = 0,
41  eatUserName                 = 1,
42  eatUserPassword             = 2,
43  eatMD5CHAPPassword          = 3,
44  eatNASIPAddress             = 4,
45  eatNASport                  = 5,
46  eatServiceType              = 6,
47  eatFramedProtocol           = 7,
48  eatFramedIPAddress          = 8,
49  eatFramedIPNetmask          = 9,
50  eatFramedRouting            = 10,
51  eatFilterId                 = 11,
52  eatFramedMTU                = 12,
53  eatFramedCompression        = 13,
54  eatLoginIPHost              = 14,
55  eatLoginService             = 15,
56  eatLoginTCPPort             = 16,
57  eatUnassigned17             = 17,
58  eatReplyMessage             = 18,
59  eatCallbackNumber           = 19,
60  eatCallbackId               = 20,
61  eatUnassigned21             = 21,
62  eatFramedRoute              = 22,
63  eatFramedIPXNetwork         = 23,
64  eatState                    = 24,
65  eatClass                    = 25,
66  eatVendorSpecific           = 26,
67  eatSessionTimeout           = 27,
68  eatIdleTimeout              = 28,
69  eatTerminationAction        = 29,
70  eatCalledStationId          = 30,
71  eatCallingStationId         = 31,
72  eatNASIdentifier            = 32,
73  eatProxyState               = 33,
74  eatLoginLATService          = 34,
75  eatLoginLATNode             = 35,
76  eatLoginLATGroup            = 36,
77  eatFramedAppleTalkLink      = 37,
78  eatFramedAppleTalkNetwork   = 38,
79  eatFramedAppleTalkZone      = 39,
80  eatAcctStatusType           = 40,
81  eatAcctDelayTime            = 41,
82  eatAcctInputOctets          = 42,
83  eatAcctOutputOctets         = 43,
84  eatAcctSessionId            = 44,
85  eatAcctAuthentic            = 45,
86  eatAcctSessionTime          = 46,
87  eatAcctInputPackets         = 47,
88  eatAcctOutputPackets        = 48,
89  eatAcctTerminateCause       = 49,
90  eatAcctMultiSessionId       = 50,
91  eatAcctLinkCount            = 51,
92  eatAcctEventTimeStamp       = 55,
93  eatMD5CHAPChallenge         = 60,
94  eatNASPortType              = 61,
95  eatPortLimit                = 62,
96  eatLoginLATPort             = 63,
97  eatTunnelType               = 64,
98  eatTunnelMediumType         = 65,
99  eatTunnelClientEndpoint     = 66,
100  eatTunnelServerEndpoint     = 67,
101  eatARAPPassword             = 70,
102  eatARAPFeatures             = 71,
103  eatARAPZoneAccess           = 72,
104  eatARAPSecurity             = 73,
105  eatARAPSecurityData         = 74,
106  eatPasswordRetry            = 75,
107  eatPrompt                   = 76,
108  eatConnectInfo              = 77,
109  eatConfigurationToken       = 78,
110  eatEAPMessage               = 79,
111  eatSignature                = 80,
112  eatARAPChallengeResponse    = 84,
113  eatAcctInterimInterval      = 85,
114  eatNASIPv6Address           = 95,
115  eatFramedInterfaceId        = 96,
116  eatFramedIPv6Prefix         = 97,
117  eatLoginIPv6Host            = 98,
118  eatFramedIPv6Route          = 99,
119  eatFramedIPv6Pool           = 100,
120  eatARAPGuestLogon           = 8096,
121  eatCertificateOID           = 8097,
122  eatEAPConfiguration         = 8098,
123  eatPEAPEmbeddedEAPTypeId    = 8099,
124  eatPEAPFastRoamedSession    = 8100,
125  eatEAPTLV                   = 8102,
126  eatCredentialsChanged       = 8103,
127  eatInnerEapMethodType       = 8104,
128  eatClearTextPassword        = 8107,
129  eatQuarantineSoH            = 8150,
130  eatPeerId                   = 9000,
131  eatServerId                 = 9001,
132  eatMethodId                 = 9002,
133  eatEMSK                     = 9003,
134  eatSessionId                = 9004,
135  eatReserved                 = 0xFFFFFFFF
136} EAP_ATTRIBUTE_TYPE, EapAttributeType;
137
138typedef struct _EAP_ATTRIBUTE {
139  EAP_ATTRIBUTE_TYPE eapType;
140  DWORD              dwLength;
141  BYTE *             pValue;
142} EAP_ATTRIBUTE, EapAttribute;
143
144typedef struct _EAP_ATTRIBUTES {
145  DWORD         dwNumberOfAttributes;
146  EAP_ATTRIBUTE *pAttribs;
147} EAP_ATTRIBUTES, EapAttributes;
148
149typedef struct _EAP_TYPE {
150  BYTE  type;
151  DWORD dwVendorId;
152  DWORD dwVendorType;
153} EAP_TYPE;
154
155typedef struct _EAP_METHOD_TYPE {
156  EAP_TYPE eapType;
157  DWORD    dwAuthorId;
158} EAP_METHOD_TYPE;
159
160typedef struct _EAP_ERROR {
161  DWORD           dwWinError;
162  EAP_METHOD_TYPE type;
163  DWORD           dwReasonCode;
164  GUID            rootCauseGuid;
165  GUID            repairGuid;
166  GUID            helpLinkGuid;
167  LPWSTR          pRootCauseString;
168  LPWSTR          pRepairString;
169} EAP_ERROR;
170
171typedef enum _EAP_CONFIG_INPUT_FIELD_TYPE {
172  EapConfigInputUsername = 0,
173  EapConfigInputPassword,
174  EapConfigInputNetworkUsername,
175  EapConfigInputNetworkPassword,
176  EapConfigInputPin,
177  EapConfigInputPSK,
178  EapConfigInputEdit,
179  EapConfigSmartCardUsername,
180  EapConfigSmartCardError
181} EAP_CONFIG_INPUT_FIELD_TYPE;
182
183typedef enum _EAP_INTERACTIVE_UI_DATA_TYPE {
184  EapCredReq,
185  EapCredResp,
186  EapCredExpiryReq,
187  EapCredExpiryResp
188} EAP_INTERACTIVE_UI_DATA_TYPE;
189
190#define EAP_UI_INPUT_FIELD_PROPS_DEFAULT 0x00000000
191#define EAP_CONFIG_INPUT_FIELD_PROPS_DEFAULT 0x00000000
192#define EAP_UI_INPUT_FIELD_PROPS_NON_DISPLAYABLE 0x00000001
193#define EAP_CONFIG_INPUT_FIELD_PROPS_NON_DISPLAYABLE 0x00000001
194#define EAP_UI_INPUT_FIELD_PROPS_NON_PERSIST 0x00000002
195#define EAP_CONFIG_INPUT_FIELD_PROPS_NON_PERSIST 0x00000002
196#define EAP_UI_INPUT_FIELD_PROPS_READ_ONLY 0x00000004
197
198#define MAX_EAP_CONFIG_INPUT_FIELD_LENGTH 256
199
200#define MAX_EAP_CONFIG_INPUT_FIELD_VALUE_LENGTH 1024
201
202typedef struct _EAP_CONFIG_INPUT_FIELD_DATA {
203  DWORD                       dwSize;
204  EAP_CONFIG_INPUT_FIELD_TYPE Type;
205  DWORD                       dwFlagProps;
206  LPWSTR                      pwszLabel;
207  LPWSTR                      pwszData;
208  DWORD                       dwMinDataLength;
209  DWORD                       dwMaxDataLength;
210} EAP_CONFIG_INPUT_FIELD_DATA, *PEAP_CONFIG_INPUT_FIELD_DATA;
211
212#define EAP_CREDENTIAL_VERSION 1
213
214typedef struct _EAP_CONFIG_INPUT_FIELD_ARRAY {
215  DWORD                       dwVersion;
216  DWORD                       dwNumberOfFields;
217  DWORD                       dwSize;
218  EAP_CONFIG_INPUT_FIELD_DATA *pFields;
219} EAP_CONFIG_INPUT_FIELD_ARRAY, *PEAP_CONFIG_INPUT_FIELD_ARRAY;
220
221typedef EAP_CONFIG_INPUT_FIELD_ARRAY EAP_CRED_REQ;
222typedef EAP_CONFIG_INPUT_FIELD_ARRAY EAP_CRED_RESP;
223typedef struct _EAP_CRED_EXPIRY_REQ EAP_CRED_EXPIRY_REQ;
224
225typedef union _EAP_UI_DATA_FORMAT {
226  EAP_CRED_REQ *      credData;
227  EAP_CRED_EXPIRY_REQ *credExpiryData;
228} EAP_UI_DATA_FORMAT;
229
230typedef struct _EAP_INTERACTIVE_UI_DATA {
231  DWORD                        dwVersion;
232  DWORD                        dwSize;
233  EAP_INTERACTIVE_UI_DATA_TYPE dwDataType;
234  DWORD                        cbUiData;
235  EAP_UI_DATA_FORMAT           pbUiData;
236} EAP_INTERACTIVE_UI_DATA;
237
238#define eapPropCipherSuiteNegotiation 0x00000001
239#define eapPropMutualAuth 0x00000002
240#define eapPropIntegrity 0x00000004
241#define eapPropReplayProtection 0x00000008
242#define eapPropConfidentiality 0x00000010
243#define eapPropKeyDerivation 0x00000020
244#define eapPropKeyStrength64 0x00000040
245#define eapPropKeyStrength128 0x00000080
246#define eapPropKeyStrength256 0x00000100
247#define eapPropKeyStrength512 0x00000200
248#define eapPropKeyStrength1024 0x00000400
249#define eapPropDictionaryAttackResistance 0x00000800
250#define eapPropFastReconnect 0x00001000
251#define eapPropCryptoBinding 0x00002000
252#define eapPropSessionIndependence 0x00004000
253#define eapPropFragmentation 0x00008000
254#define eapPropChannelBinding 0x00010000
255#define eapPropNap 0x00020000
256#define eapPropStandalone 0x00040000
257#define eapPropMppeEncryption 0x00080000
258#define eapPropTunnelMethod 0x00100000
259#define eapPropSupportsConfig 0x00200000
260#define eapPropCertifiedMethod 0x00400000
261#if (_WIN32_WINNT >= 0x0601)
262#define eapPropmachineAuth 0x01000000
263#define eapPropUserAuth 0x02000000
264#define eapPropIdentityPrivacy 0x04000000
265#define eapPropMethodChaining 0x08000000
266#define eapPropSharedStateEquivalence 0x10000000
267#endif /*(_WIN32_WINNT >= 0x0601)*/
268#define eapPropReserved 0x20000000
269
270typedef struct _EAP_METHOD_INFO {
271  EAP_METHOD_TYPE         eapType;
272  LPWSTR                  pwszAuthorName;
273  LPWSTR                  pwszFriendlyName;
274  DWORD                   eapProperties;
275  struct _EAP_METHOD_INFO *pInnerMethodInfo;
276} EAP_METHOD_INFO;
277
278typedef struct _EAP_METHOD_INFO_ARRAY {
279  DWORD           dwNumberOfMethods;
280  EAP_METHOD_INFO *pEapMethods;
281} EAP_METHOD_INFO_ARRAY, *PEAP_METHOD_INFO_ARRAY;
282
283typedef struct _EAP_METHOD_INFO_EX {
284  EAP_METHOD_TYPE                  eapType;
285  LPWSTR                           pwszAuthorName;
286  LPWSTR                           pwszFriendlyName;
287  DWORD                            eapProperties;
288  struct _EAP_METHOD_INFO_ARRAY_EX *pInnerMethodInfoArray;
289} EAP_METHOD_INFO_EX;
290
291typedef struct _EAP_METHOD_INFO_ARRAY_EX {
292  DWORD              dwNumberOfMethods;
293  EAP_METHOD_INFO_EX *pEapMethods;
294} EAP_METHOD_INFO_ARRAY_EX, *PEAP_METHOD_INFO_ARRAY_EX;
295
296typedef struct _EAP_CRED_EXPIRY_REQ {
297  EAP_CONFIG_INPUT_FIELD_ARRAY curCreds;
298  EAP_CONFIG_INPUT_FIELD_ARRAY newCreds;
299} /* EAP_CRED_EXPIRY_REQ, */ *PEAP_CRED_EXPIRY_REQ;
300
301typedef struct _EAP_CRED_EXPIRY_RESP {
302  EAP_CONFIG_INPUT_FIELD_ARRAY curCreds;
303  EAP_CONFIG_INPUT_FIELD_ARRAY newCreds;
304} EAP_CRED_EXPIRY_RESP, *PEAP_CRED_EXPIRY_RESP;
305
306#ifdef __cplusplus
307}
308#endif
309
310#endif /*_INC_EAPTYPES*/
311