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
10 extern "C" {
11 #endif
12 
13 
14 typedef DWORD EAP_SESSIONID;
15 typedef 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 
39 typedef 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 
138 typedef struct _EAP_ATTRIBUTE {
139   EAP_ATTRIBUTE_TYPE eapType;
140   DWORD              dwLength;
141   BYTE *             pValue;
142 } EAP_ATTRIBUTE, EapAttribute;
143 
144 typedef struct _EAP_ATTRIBUTES {
145   DWORD         dwNumberOfAttributes;
146   EAP_ATTRIBUTE *pAttribs;
147 } EAP_ATTRIBUTES, EapAttributes;
148 
149 typedef struct _EAP_TYPE {
150   BYTE  type;
151   DWORD dwVendorId;
152   DWORD dwVendorType;
153 } EAP_TYPE;
154 
155 typedef struct _EAP_METHOD_TYPE {
156   EAP_TYPE eapType;
157   DWORD    dwAuthorId;
158 } EAP_METHOD_TYPE;
159 
160 typedef 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 
171 typedef 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 
183 typedef 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 
202 typedef 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 
214 typedef 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 
221 typedef EAP_CONFIG_INPUT_FIELD_ARRAY EAP_CRED_REQ;
222 typedef EAP_CONFIG_INPUT_FIELD_ARRAY EAP_CRED_RESP;
223 typedef struct _EAP_CRED_EXPIRY_REQ EAP_CRED_EXPIRY_REQ;
224 
225 typedef union _EAP_UI_DATA_FORMAT {
226   EAP_CRED_REQ *      credData;
227   EAP_CRED_EXPIRY_REQ *credExpiryData;
228 } EAP_UI_DATA_FORMAT;
229 
230 typedef 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 
270 typedef 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 
278 typedef struct _EAP_METHOD_INFO_ARRAY {
279   DWORD           dwNumberOfMethods;
280   EAP_METHOD_INFO *pEapMethods;
281 } EAP_METHOD_INFO_ARRAY, *PEAP_METHOD_INFO_ARRAY;
282 
283 typedef 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 
291 typedef 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 
296 typedef 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 
301 typedef 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