winapi_ui_automation/um/
eaptypes.rs

1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6use shared::guiddef::GUID;
7use shared::minwindef::{BOOL, BYTE, DWORD};
8use um::winnt::LPWSTR;
9pub const eapPropCipherSuiteNegotiation: DWORD = 0x00000001;
10pub const eapPropMutualAuth: DWORD = 0x00000002;
11pub const eapPropIntegrity: DWORD = 0x00000004;
12pub const eapPropReplayProtection: DWORD = 0x00000008;
13pub const eapPropConfidentiality: DWORD = 0x00000010;
14pub const eapPropKeyDerivation: DWORD = 0x00000020;
15pub const eapPropKeyStrength64: DWORD = 0x00000040;
16pub const eapPropKeyStrength128: DWORD = 0x00000080;
17pub const eapPropKeyStrength256: DWORD = 0x00000100;
18pub const eapPropKeyStrength512: DWORD = 0x00000200;
19pub const eapPropKeyStrength1024: DWORD = 0x00000400;
20pub const eapPropDictionaryAttackResistance: DWORD = 0x00000800;
21pub const eapPropFastReconnect: DWORD = 0x00001000;
22pub const eapPropCryptoBinding: DWORD = 0x00002000;
23pub const eapPropSessionIndependence: DWORD = 0x00004000;
24pub const eapPropFragmentation: DWORD = 0x00008000;
25pub const eapPropChannelBinding: DWORD = 0x00010000;
26pub const eapPropNap: DWORD = 0x00020000;
27pub const eapPropStandalone: DWORD = 0x00040000;
28pub const eapPropMppeEncryption: DWORD = 0x00080000;
29pub const eapPropTunnelMethod: DWORD = 0x00100000;
30pub const eapPropSupportsConfig: DWORD = 0x00200000;
31pub const eapPropCertifiedMethod: DWORD = 0x00400000;
32pub const eapPropHiddenMethod: DWORD = 0x00800000;
33pub const eapPropMachineAuth: DWORD = 0x01000000;
34pub const eapPropUserAuth: DWORD = 0x02000000;
35pub const eapPropIdentityPrivacy: DWORD = 0x04000000;
36pub const eapPropMethodChaining: DWORD = 0x08000000;
37pub const eapPropSharedStateEquivalence: DWORD = 0x10000000;
38pub const eapPropReserved: DWORD = 0x80000000;
39pub const EAP_VALUENAME_PROPERTIES: &'static str = "Properties";
40pub type EAP_SESSIONID = DWORD;
41STRUCT!{struct EAP_TYPE {
42    type_: BYTE,
43    dwVendorId: DWORD,
44    dwVendorType: DWORD,
45}}
46STRUCT!{struct EAP_METHOD_TYPE {
47    eapType: EAP_TYPE,
48    dwAuthorId: DWORD,
49}}
50STRUCT!{struct EAP_METHOD_INFO {
51    eaptype: EAP_METHOD_TYPE,
52    pwszAuthorName: LPWSTR,
53    pwszFriendlyName: LPWSTR,
54    eapProperties: DWORD,
55    pInnerMethodInfo: *mut EAP_METHOD_INFO,
56}}
57STRUCT!{struct EAP_METHOD_INFO_EX {
58    eaptype: EAP_METHOD_TYPE,
59    pwszAuthorName: LPWSTR,
60    pwszFriendlyName: LPWSTR,
61    eapProperties: DWORD,
62    pInnerMethodInfoArray: *mut EAP_METHOD_INFO_ARRAY_EX,
63}}
64STRUCT!{struct EAP_METHOD_INFO_ARRAY {
65    dwNumberOfMethods: DWORD,
66    pEapMethods: *mut EAP_METHOD_INFO,
67}}
68STRUCT!{struct EAP_METHOD_INFO_ARRAY_EX {
69    dwNumberOfMethods: DWORD,
70    pEapMethods: *mut EAP_METHOD_INFO_EX,
71}}
72STRUCT!{struct EAP_ERROR {
73    dwWinError: DWORD,
74    type_: EAP_METHOD_TYPE,
75    dwReasonCode: DWORD,
76    rootCauseGuid: GUID,
77    repairGuid: GUID,
78    helpLinkGuid: GUID,
79    pRootCauseString: LPWSTR,
80    pRepairString: LPWSTR,
81}}
82ENUM!{enum EAP_ATTRIBUTE_TYPE {
83    eatMinimum = 0,
84    eatUserName = 1,
85    eatUserPassword = 2,
86    eatMD5CHAPPassword = 3,
87    eatNASIPAddress = 4,
88    eatNASPort = 5,
89    eatServiceType = 6,
90    eatFramedProtocol = 7,
91    eatFramedIPAddress = 8,
92    eatFramedIPNetmask = 9,
93    eatFramedRouting = 10,
94    eatFilterId = 11,
95    eatFramedMTU = 12,
96    eatFramedCompression = 13,
97    eatLoginIPHost = 14,
98    eatLoginService = 15,
99    eatLoginTCPPort = 16,
100    eatUnassigned17 = 17,
101    eatReplyMessage = 18,
102    eatCallbackNumber = 19,
103    eatCallbackId = 20,
104    eatUnassigned21 = 21,
105    eatFramedRoute = 22,
106    eatFramedIPXNetwork = 23,
107    eatState = 24,
108    eatClass = 25,
109    eatVendorSpecific = 26,
110    eatSessionTimeout = 27,
111    eatIdleTimeout = 28,
112    eatTerminationAction = 29,
113    eatCalledStationId = 30,
114    eatCallingStationId = 31,
115    eatNASIdentifier = 32,
116    eatProxyState = 33,
117    eatLoginLATService = 34,
118    eatLoginLATNode = 35,
119    eatLoginLATGroup = 36,
120    eatFramedAppleTalkLink = 37,
121    eatFramedAppleTalkNetwork = 38,
122    eatFramedAppleTalkZone = 39,
123    eatAcctStatusType = 40,
124    eatAcctDelayTime = 41,
125    eatAcctInputOctets = 42,
126    eatAcctOutputOctets = 43,
127    eatAcctSessionId = 44,
128    eatAcctAuthentic = 45,
129    eatAcctSessionTime = 46,
130    eatAcctInputPackets = 47,
131    eatAcctOutputPackets = 48,
132    eatAcctTerminateCause = 49,
133    eatAcctMultiSessionId = 50,
134    eatAcctLinkCount = 51,
135    eatAcctEventTimeStamp = 55,
136    eatMD5CHAPChallenge = 60,
137    eatNASPortType = 61,
138    eatPortLimit = 62,
139    eatLoginLATPort = 63,
140    eatTunnelType = 64,
141    eatTunnelMediumType = 65,
142    eatTunnelClientEndpoint = 66,
143    eatTunnelServerEndpoint = 67,
144    eatARAPPassword = 70,
145    eatARAPFeatures = 71,
146    eatARAPZoneAccess = 72,
147    eatARAPSecurity = 73,
148    eatARAPSecurityData = 74,
149    eatPasswordRetry = 75,
150    eatPrompt = 76,
151    eatConnectInfo = 77,
152    eatConfigurationToken = 78,
153    eatEAPMessage = 79,
154    eatSignature = 80,
155    eatARAPChallengeResponse = 84,
156    eatAcctInterimInterval = 85,
157    eatNASIPv6Address = 95,
158    eatFramedInterfaceId = 96,
159    eatFramedIPv6Prefix = 97,
160    eatLoginIPv6Host = 98,
161    eatFramedIPv6Route = 99,
162    eatFramedIPv6Pool = 100,
163    eatARAPGuestLogon = 8096,
164    eatCertificateOID = 8097,
165    eatEAPConfiguration = 8098,
166    eatPEAPEmbeddedEAPTypeId = 8099,
167    eatPEAPFastRoamedSession = 8100,
168    eatFastRoamedSession = 8100,
169    eatEAPTLV = 8102,
170    eatCredentialsChanged = 8103,
171    eatInnerEapMethodType = 8104,
172    eatClearTextPassword = 8107,
173    eatQuarantineSoH = 8150,
174    eatCertificateThumbprint = 8250,
175    eatPeerId = 9000,
176    eatServerId = 9001,
177    eatMethodId = 9002,
178    eatEMSK = 9003,
179    eatSessionId = 9004,
180    eatReserved = 0xFFFFFFFF,
181}}
182pub type EapAttributeType = EAP_ATTRIBUTE_TYPE;
183STRUCT!{struct EAP_ATTRIBUTE {
184    eaType: EAP_ATTRIBUTE_TYPE,
185    dwLength: DWORD,
186    pValue: *mut BYTE,
187}}
188pub type EapAttribute = EAP_ATTRIBUTE;
189STRUCT!{struct EAP_ATTRIBUTES {
190    dwNumberOfAttributes: DWORD,
191    pAttribs: *mut EAP_ATTRIBUTE,
192}}
193pub type EapAttributes = EAP_ATTRIBUTES;
194pub const EAP_FLAG_Reserved1: DWORD = 0x00000001;
195pub const EAP_FLAG_NON_INTERACTIVE: DWORD = 0x00000002;
196pub const EAP_FLAG_LOGON: DWORD = 0x00000004;
197pub const EAP_FLAG_PREVIEW: DWORD = 0x00000008;
198pub const EAP_FLAG_Reserved2: DWORD = 0x00000010;
199pub const EAP_FLAG_MACHINE_AUTH: DWORD = 0x00000020;
200pub const EAP_FLAG_GUEST_ACCESS: DWORD = 0x00000040;
201pub const EAP_FLAG_Reserved3: DWORD = 0x00000080;
202pub const EAP_FLAG_Reserved4: DWORD = 0x00000100;
203pub const EAP_FLAG_RESUME_FROM_HIBERNATE: DWORD = 0x00000200;
204pub const EAP_FLAG_Reserved5: DWORD = 0x00000400;
205pub const EAP_FLAG_Reserved6: DWORD = 0x00000800;
206pub const EAP_FLAG_FULL_AUTH: DWORD = 0x00001000;
207pub const EAP_FLAG_PREFER_ALT_CREDENTIALS: DWORD = 0x00002000;
208pub const EAP_FLAG_Reserved7: DWORD = 0x00004000;
209pub const EAP_PEER_FLAG_HEALTH_STATE_CHANGE: DWORD = 0x00008000;
210pub const EAP_FLAG_SUPRESS_UI: DWORD = 0x00010000;
211pub const EAP_FLAG_PRE_LOGON: DWORD = 0x00020000;
212pub const EAP_FLAG_USER_AUTH: DWORD = 0x00040000;
213pub const EAP_FLAG_CONFG_READONLY: DWORD = 0x00080000;
214pub const EAP_FLAG_Reserved8: DWORD = 0x00100000;
215pub const EAP_FLAG_Reserved9: DWORD = 0x00400000;
216pub const EAP_FLAG_VPN: DWORD = 0x00800000;
217pub const EAP_CONFIG_INPUT_FIELD_PROPS_DEFAULT: DWORD = 0x00000000;
218pub const EAP_CONFIG_INPUT_FIELD_PROPS_NON_DISPLAYABLE: DWORD = 0x00000001;
219pub const EAP_CONFIG_INPUT_FIELD_PROPS_NON_PERSIST: DWORD = 0x00000002;
220pub const EAP_UI_INPUT_FIELD_PROPS_DEFAULT: DWORD = EAP_CONFIG_INPUT_FIELD_PROPS_DEFAULT;
221pub const EAP_UI_INPUT_FIELD_PROPS_NON_DISPLAYABLE: DWORD =
222    EAP_CONFIG_INPUT_FIELD_PROPS_NON_DISPLAYABLE;
223pub const EAP_UI_INPUT_FIELD_PROPS_NON_PERSIST: DWORD = 0x00000002;
224pub const EAP_UI_INPUT_FIELD_PROPS_READ_ONLY: DWORD = 0x00000004;
225ENUM!{enum EAP_CONFIG_INPUT_FIELD_TYPE {
226    EapConfigInputUsername = 0,
227    EapConfigInputPassword = 1,
228    EapConfigInputNetworkUsername = 2,
229    EapConfigInputNetworkPassword = 3,
230    EapConfigInputPin = 4,
231    EapConfigInputPSK = 5,
232    EapConfigInputEdit = 6,
233    EapConfigSmartCardUsername = 7,
234    EapConfigSmartCardError = 8,
235}}
236pub type PEAP_CONFIG_INPUT_FIELD_TYPE = *mut EAP_CONFIG_INPUT_FIELD_TYPE;
237pub const EAP_CREDENTIAL_VERSION: i32 = 1;
238pub const EAP_INTERACTIVE_UI_DATA_VERSION: i32 = 1;
239pub const EAPHOST_PEER_API_VERSION: i32 = 1;
240pub const EAPHOST_METHOD_API_VERSION: i32 = 1;
241pub const MAX_EAP_CONFIG_INPUT_FIELD_LENGTH: i32 = 256;
242pub const MAX_EAP_CONFIG_INPUT_FIELD_VALUE_LENGTH: i32 = 1024;
243STRUCT!{struct EAP_CONFIG_INPUT_FIELD_DATA {
244    dwSize: DWORD,
245    Type: EAP_CONFIG_INPUT_FIELD_TYPE,
246    dwFlagProps: DWORD,
247    pwszLabel: LPWSTR,
248    pwszData: LPWSTR,
249    dwMinDataLength: DWORD,
250    dwMaxDataLength: DWORD,
251}}
252pub type PEAP_CONFIG_INPUT_FIELD_DATA = *mut EAP_CONFIG_INPUT_FIELD_DATA;
253STRUCT!{struct EAP_CONFIG_INPUT_FIELD_ARRAY {
254    dwVersion: DWORD,
255    dwNumberOfFields: DWORD,
256    pFields: *mut EAP_CONFIG_INPUT_FIELD_DATA,
257}}
258pub type PEAP_CONFIG_INPUT_FIELD_ARRAY = *mut EAP_CONFIG_INPUT_FIELD_ARRAY;
259ENUM!{enum EAP_INTERACTIVE_UI_DATA_TYPE {
260    EapCredReq = 0,
261    EapCredResp = 1,
262    EapCredExpiryReq = 2,
263    EapCredExpiryResp = 3,
264    EapCredLogonReq = 4,
265    EapCredLogonResp = 5,
266}}
267pub type EAP_CRED_REQ = EAP_CONFIG_INPUT_FIELD_ARRAY;
268pub type EAP_CRED_RESP = EAP_CONFIG_INPUT_FIELD_ARRAY;
269pub type EAP_CRED_LOGON_REQ = EAP_CONFIG_INPUT_FIELD_ARRAY;
270pub type EAP_CRED_LOGON_RESP = EAP_CONFIG_INPUT_FIELD_ARRAY;
271STRUCT!{struct EAP_CRED_EXPIRY_REQ {
272    curCreds: EAP_CONFIG_INPUT_FIELD_ARRAY,
273    newCreds: EAP_CONFIG_INPUT_FIELD_ARRAY,
274}}
275pub type EAP_CRED_EXPIRY_RESP = EAP_CRED_EXPIRY_REQ;
276UNION!{union EAP_UI_DATA_FORMAT {
277    [usize; 1],
278    credData credData_mut: *mut EAP_CRED_REQ,
279    credExpiryData credExpiryData_mut: *mut EAP_CRED_EXPIRY_REQ,
280    credLogonData credLogonData_mut: *mut EAP_CRED_LOGON_REQ,
281}}
282STRUCT!{struct EAP_INTERACTIVE_UI_DATA {
283    dwVersion: DWORD,
284    dwSize: DWORD,
285    dwDataType: EAP_INTERACTIVE_UI_DATA_TYPE,
286    cbUiData: DWORD,
287    pbUiData: EAP_UI_DATA_FORMAT,
288}}
289ENUM!{enum EAP_METHOD_PROPERTY_TYPE {
290    emptPropCipherSuiteNegotiation = 0,
291    emptPropMutualAuth = 1,
292    emptPropIntegrity = 2,
293    emptPropReplayProtection = 3,
294    emptPropConfidentiality = 4,
295    emptPropKeyDerivation = 5,
296    emptPropKeyStrength64 = 6,
297    emptPropKeyStrength128 = 7,
298    emptPropKeyStrength256 = 8,
299    emptPropKeyStrength512 = 9,
300    emptPropKeyStrength1024 = 10,
301    emptPropDictionaryAttackResistance = 11,
302    emptPropFastReconnect = 12,
303    emptPropCryptoBinding = 13,
304    emptPropSessionIndependence = 14,
305    emptPropFragmentation = 15,
306    emptPropChannelBinding = 16,
307    emptPropNap = 17,
308    emptPropStandalone = 18,
309    emptPropMppeEncryption = 19,
310    emptPropTunnelMethod = 20,
311    emptPropSupportsConfig = 21,
312    emptPropCertifiedMethod = 22,
313    emptPropHiddenMethod = 23,
314    emptPropMachineAuth = 24,
315    emptPropUserAuth = 25,
316    emptPropIdentityPrivacy = 26,
317    emptPropMethodChaining = 27,
318    emptPropSharedStateEquivalence = 28,
319    emptLegacyMethodPropertyFlag = 31,
320    emptPropVendorSpecific = 255,
321}}
322ENUM!{enum EAP_METHOD_PROPERTY_VALUE_TYPE {
323    empvtBool = 0,
324    empvtDword = 1,
325    empvtString = 2,
326}}
327STRUCT!{struct EAP_METHOD_PROPERTY_VALUE_BOOL {
328    length: DWORD,
329    value: BOOL,
330}}
331STRUCT!{struct EAP_METHOD_PROPERTY_VALUE_DWORD {
332    length: DWORD,
333    value: DWORD,
334}}
335STRUCT!{struct EAP_METHOD_PROPERTY_VALUE_STRING {
336    length: DWORD,
337    value: *mut BYTE,
338}}
339UNION!{union EAP_METHOD_PROPERTY_VALUE {
340    [usize; 2],
341    empvBool empvBool_mut: EAP_METHOD_PROPERTY_VALUE_BOOL,
342    empvDword empvDword_mut: EAP_METHOD_PROPERTY_VALUE_DWORD,
343    empvString empvString_mut: EAP_METHOD_PROPERTY_VALUE_STRING,
344}}
345STRUCT!{struct EAP_METHOD_PROPERTY {
346    eapMethodPropertyType: EAP_METHOD_PROPERTY_TYPE,
347    eapMethodPropertyValueType: EAP_METHOD_PROPERTY_VALUE_TYPE,
348    eapMethodPropertyValue: EAP_METHOD_PROPERTY_VALUE,
349}}
350STRUCT!{struct EAP_METHOD_PROPERTY_ARRAY {
351    dwNumberOfProperties: DWORD,
352    pMethodProperty: *mut EAP_METHOD_PROPERTY,
353}}
354STRUCT!{struct EAPHOST_IDENTITY_UI_PARAMS {
355    eapMethodType: EAP_METHOD_TYPE,
356    dwFlags: DWORD,
357    dwSizeofConnectionData: DWORD,
358    pConnectionData: *mut BYTE,
359    dwSizeofUserData: DWORD,
360    pUserData: *mut BYTE,
361    dwSizeofUserDataOut: DWORD,
362    pUserDataOut: *mut BYTE,
363    pwszIdentity: LPWSTR,
364    dwError: DWORD,
365    pEapError: *mut EAP_ERROR,
366}}
367STRUCT!{struct EAPHOST_INTERACTIVE_UI_PARAMS {
368    dwSizeofContextData: DWORD,
369    pContextData: *mut BYTE,
370    dwSizeofInteractiveUIData: DWORD,
371    pInteractiveUIData: *mut BYTE,
372    dwError: DWORD,
373    pEapError: *mut EAP_ERROR,
374}}
375ENUM!{enum EapCredentialType {
376    EAP_EMPTY_CREDENTIAL = 0,
377    EAP_USERNAME_PASSWORD_CREDENTIAL = 1,
378    EAP_WINLOGON_CREDENTIAL = 2,
379    EAP_CERTIFICATE_CREDENTIAL = 3,
380    EAP_SIM_CREDENTIAL = 4,
381}}
382STRUCT!{struct EapUsernamePasswordCredential {
383    username: LPWSTR,
384    password: LPWSTR,
385}}
386pub const CERTIFICATE_HASH_LENGTH: usize = 20;
387STRUCT!{struct EapCertificateCredential {
388    certHash: [BYTE; CERTIFICATE_HASH_LENGTH],
389    password: LPWSTR,
390}}
391STRUCT!{struct EapSimCredential {
392    iccID: LPWSTR,
393}}
394UNION!{union EapCredentialTypeData {
395    [u32; 6] [u64; 4],
396    username_password username_password_mut: EapUsernamePasswordCredential,
397    certificate certificate_mut: EapCertificateCredential,
398    sim sim_mut: EapSimCredential,
399}}
400STRUCT!{struct EapCredential {
401    credType: EapCredentialType,
402    credData: EapCredentialTypeData,
403}}