winapi_ui_automation/um/
subauth.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.
6//! Types and macros for Subauthentication Packages.
7use shared::minwindef::{PUCHAR, ULONG, USHORT};
8use um::winnt::{BOOLEAN, CHAR, LARGE_INTEGER, LONG, PCHAR, PVOID, PWSTR};
9STRUCT!{struct UNICODE_STRING {
10    Length: USHORT,
11    MaximumLength: USHORT,
12    Buffer: PWSTR,
13}}
14pub type PUNICODE_STRING = *mut UNICODE_STRING;
15STRUCT!{struct STRING {
16    Length: USHORT,
17    MaximumLength: USHORT,
18    Buffer: PCHAR,
19}}
20pub type PSTRING = *mut STRING;
21STRUCT!{struct OLD_LARGE_INTEGER {
22    LowPart: ULONG,
23    HighPart: LONG,
24}}
25pub type POLD_LARGE_INTEGER = *mut OLD_LARGE_INTEGER;
26pub type SAM_HANDLE = PVOID;
27pub type PSAM_HANDLE = *mut PVOID;
28pub const USER_ACCOUNT_DISABLED: ULONG = 0x00000001;
29pub const USER_HOME_DIRECTORY_REQUIRED: ULONG = 0x00000002;
30pub const USER_PASSWORD_NOT_REQUIRED: ULONG = 0x00000004;
31pub const USER_TEMP_DUPLICATE_ACCOUNT: ULONG = 0x00000008;
32pub const USER_NORMAL_ACCOUNT: ULONG = 0x00000010;
33pub const USER_MNS_LOGON_ACCOUNT: ULONG = 0x00000020;
34pub const USER_INTERDOMAIN_TRUST_ACCOUNT: ULONG = 0x00000040;
35pub const USER_WORKSTATION_TRUST_ACCOUNT: ULONG = 0x00000080;
36pub const USER_SERVER_TRUST_ACCOUNT: ULONG = 0x00000100;
37pub const USER_DONT_EXPIRE_PASSWORD: ULONG = 0x00000200;
38pub const USER_ACCOUNT_AUTO_LOCKED: ULONG = 0x00000400;
39pub const USER_ENCRYPTED_TEXT_PASSWORD_ALLOWED: ULONG = 0x00000800;
40pub const USER_SMARTCARD_REQUIRED: ULONG = 0x00001000;
41pub const USER_TRUSTED_FOR_DELEGATION: ULONG = 0x00002000;
42pub const USER_NOT_DELEGATED: ULONG = 0x00004000;
43pub const USER_USE_DES_KEY_ONLY: ULONG = 0x00008000;
44pub const USER_DONT_REQUIRE_PREAUTH: ULONG = 0x00010000;
45pub const USER_PASSWORD_EXPIRED: ULONG = 0x00020000;
46pub const USER_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION: ULONG = 0x00040000;
47pub const USER_NO_AUTH_DATA_REQUIRED: ULONG = 0x00080000;
48pub const USER_PARTIAL_SECRETS_ACCOUNT: ULONG = 0x00100000;
49pub const USER_USE_AES_KEYS: ULONG = 0x00200000;
50pub const NEXT_FREE_ACCOUNT_CONTROL_BIT: ULONG = USER_USE_AES_KEYS << 1;
51pub const USER_MACHINE_ACCOUNT_MASK: ULONG = USER_INTERDOMAIN_TRUST_ACCOUNT
52    | USER_WORKSTATION_TRUST_ACCOUNT | USER_SERVER_TRUST_ACCOUNT;
53pub const USER_ACCOUNT_TYPE_MASK: ULONG = USER_TEMP_DUPLICATE_ACCOUNT | USER_NORMAL_ACCOUNT
54    | USER_MACHINE_ACCOUNT_MASK;
55pub const USER_COMPUTED_ACCOUNT_CONTROL_BITS: ULONG = USER_ACCOUNT_AUTO_LOCKED
56    | USER_PASSWORD_EXPIRED;
57pub const SAM_DAYS_PER_WEEK: USHORT = 7;
58pub const SAM_HOURS_PER_WEEK: USHORT = 24 * SAM_DAYS_PER_WEEK;
59pub const SAM_MINUTES_PER_WEEK: USHORT = 60 * SAM_HOURS_PER_WEEK;
60STRUCT!{struct LOGON_HOURS {
61    UnitsPerWeek: USHORT,
62    LogonHours: PUCHAR,
63}}
64pub type PLOGON_HOURS = *mut LOGON_HOURS;
65STRUCT!{struct SR_SECURITY_DESCRIPTOR {
66    Length: ULONG,
67    SecurityDescriptor: PUCHAR,
68}}
69pub type PSR_SECURITY_DESCRIPTOR = *mut SR_SECURITY_DESCRIPTOR;
70STRUCT!{struct USER_ALL_INFORMATION {
71    LastLogon: LARGE_INTEGER,
72    LastLogoff: LARGE_INTEGER,
73    PasswordLastSet: LARGE_INTEGER,
74    AccountExpires: LARGE_INTEGER,
75    PasswordCanChange: LARGE_INTEGER,
76    PasswordMustChange: LARGE_INTEGER,
77    UserName: UNICODE_STRING,
78    FullName: UNICODE_STRING,
79    HomeDirectory: UNICODE_STRING,
80    HomeDirectoryDrive: UNICODE_STRING,
81    ScriptPath: UNICODE_STRING,
82    ProfilePath: UNICODE_STRING,
83    AdminComment: UNICODE_STRING,
84    WorkStations: UNICODE_STRING,
85    UserComment: UNICODE_STRING,
86    Parameters: UNICODE_STRING,
87    LmPassword: UNICODE_STRING,
88    NtPassword: UNICODE_STRING,
89    PrivateData: UNICODE_STRING,
90    SecurityDescriptor: SR_SECURITY_DESCRIPTOR,
91    UserId: ULONG,
92    PrimaryGroupId: ULONG,
93    UserAccountControl: ULONG,
94    WhichFields: ULONG,
95    LogonHours: LOGON_HOURS,
96    BadPasswordCount: USHORT,
97    LogonCount: USHORT,
98    CountryCode: USHORT,
99    CodePage: USHORT,
100    LmPasswordPresent: BOOLEAN,
101    NtPasswordPresent: BOOLEAN,
102    PasswordExpired: BOOLEAN,
103    PrivateDataSensitive: BOOLEAN,
104}}
105pub type PUSER_ALL_INFORMATION = *mut USER_ALL_INFORMATION;
106pub const USER_ALL_PARAMETERS: ULONG = 0x00200000;
107pub const CLEAR_BLOCK_LENGTH: usize = 8;
108STRUCT!{struct CLEAR_BLOCK {
109    data: [CHAR; CLEAR_BLOCK_LENGTH],
110}}
111pub type PCLEAR_BLOCK = *mut CLEAR_BLOCK;
112pub const CYPHER_BLOCK_LENGTH: usize = 8;
113STRUCT!{struct CYPHER_BLOCK {
114    data: [CHAR; CYPHER_BLOCK_LENGTH],
115}}
116pub type PCYPHER_BLOCK = *mut CYPHER_BLOCK;
117STRUCT!{struct LM_OWF_PASSWORD {
118    data: [CYPHER_BLOCK; 2],
119}}
120pub type PLM_OWF_PASSWORD = *mut LM_OWF_PASSWORD;
121pub type LM_CHALLENGE = CLEAR_BLOCK;
122pub type PLM_CHALLENGE = *mut LM_CHALLENGE;
123pub type NT_OWF_PASSWORD = LM_OWF_PASSWORD;
124pub type PNT_OWF_PASSWORD = *mut NT_OWF_PASSWORD;
125pub type NT_CHALLENGE = LM_CHALLENGE;
126pub type PNT_CHALLENGE = *mut NT_CHALLENGE;
127pub const USER_SESSION_KEY_LENGTH: usize = CYPHER_BLOCK_LENGTH * 2;
128STRUCT!{struct USER_SESSION_KEY {
129    data: [CYPHER_BLOCK; 2],
130}}
131pub type PUSER_SESSION_KEY = *mut USER_SESSION_KEY;
132ENUM!{enum NETLOGON_LOGON_INFO_CLASS {
133    NetlogonInteractiveInformation = 1,
134    NetlogonNetworkInformation,
135    NetlogonServiceInformation,
136    NetlogonGenericInformation,
137    NetlogonInteractiveTransitiveInformation,
138    NetlogonNetworkTransitiveInformation,
139    NetlogonServiceTransitiveInformation,
140}}
141STRUCT!{struct NETLOGON_LOGON_IDENTITY_INFO {
142    LogonDomainName: UNICODE_STRING,
143    ParameterControl: ULONG,
144    LogonId: OLD_LARGE_INTEGER,
145    UserName: UNICODE_STRING,
146    Workstation: UNICODE_STRING,
147}}
148pub type PNETLOGON_LOGON_IDENTITY_INFO = *mut NETLOGON_LOGON_IDENTITY_INFO;
149STRUCT!{struct NETLOGON_INTERACTIVE_INFO {
150    Identity: NETLOGON_LOGON_IDENTITY_INFO,
151    LmOwfPassword: LM_OWF_PASSWORD,
152    NtOwfPassword: NT_OWF_PASSWORD,
153}}
154pub type PNETLOGON_INTERACTIVE_INFO = *mut NETLOGON_INTERACTIVE_INFO;
155STRUCT!{struct NETLOGON_SERVICE_INFO {
156    Identity: NETLOGON_LOGON_IDENTITY_INFO,
157    LmOwfPassword: LM_OWF_PASSWORD,
158    NtOwfPassword: NT_OWF_PASSWORD,
159}}
160pub type PNETLOGON_SERVICE_INFO = *mut NETLOGON_SERVICE_INFO;
161STRUCT!{struct NETLOGON_NETWORK_INFO {
162    Identity: NETLOGON_LOGON_IDENTITY_INFO,
163    LmChallenge: LM_CHALLENGE,
164    NtChallengeResponse: STRING,
165    LmChallengeResponse: STRING,
166}}
167pub type PNETLOGON_NETWORK_INFO = *mut NETLOGON_NETWORK_INFO;
168STRUCT!{struct NETLOGON_GENERIC_INFO {
169    Identity: NETLOGON_LOGON_IDENTITY_INFO,
170    PackageName: UNICODE_STRING,
171    DataLength: ULONG,
172    LogonData: PUCHAR,
173}}
174pub type PNETLOGON_GENERIC_INFO = *mut NETLOGON_GENERIC_INFO;
175pub const MSV1_0_PASSTHRU: ULONG = 0x01;
176pub const MSV1_0_GUEST_LOGON: ULONG = 0x02;
177STRUCT!{struct MSV1_0_VALIDATION_INFO {
178    LogoffTime: LARGE_INTEGER,
179    KickoffTime: LARGE_INTEGER,
180    LogonServer: UNICODE_STRING,
181    LogonDomainName: UNICODE_STRING,
182    SessionKey: USER_SESSION_KEY,
183    Authoritative: BOOLEAN,
184    UserFlags: ULONG,
185    WhichFields: ULONG,
186    UserId: ULONG,
187}}
188pub type PMSV1_0_VALIDATION_INFO = *mut MSV1_0_VALIDATION_INFO;
189pub const MSV1_0_VALIDATION_LOGOFF_TIME: ULONG = 0x00000001;
190pub const MSV1_0_VALIDATION_KICKOFF_TIME: ULONG = 0x00000002;
191pub const MSV1_0_VALIDATION_LOGON_SERVER: ULONG = 0x00000004;
192pub const MSV1_0_VALIDATION_LOGON_DOMAIN: ULONG = 0x00000008;
193pub const MSV1_0_VALIDATION_SESSION_KEY: ULONG = 0x00000010;
194pub const MSV1_0_VALIDATION_USER_FLAGS: ULONG = 0x00000020;
195pub const MSV1_0_VALIDATION_USER_ID: ULONG = 0x00000040;
196pub const MSV1_0_SUBAUTH_ACCOUNT_DISABLED: ULONG = 0x00000001;
197pub const MSV1_0_SUBAUTH_PASSWORD: ULONG = 0x00000002;
198pub const MSV1_0_SUBAUTH_WORKSTATIONS: ULONG = 0x00000004;
199pub const MSV1_0_SUBAUTH_LOGON_HOURS: ULONG = 0x00000008;
200pub const MSV1_0_SUBAUTH_ACCOUNT_EXPIRY: ULONG = 0x00000010;
201pub const MSV1_0_SUBAUTH_PASSWORD_EXPIRY: ULONG = 0x00000020;
202pub const MSV1_0_SUBAUTH_ACCOUNT_TYPE: ULONG = 0x00000040;
203pub const MSV1_0_SUBAUTH_LOCKOUT: ULONG = 0x00000080;
204// STATUS_*