Mercurial > projects > ddbg_continued
comparison win32/ntsecapi.d @ 1:4a9dcbd9e54f
-files of 0.13 beta
-fixes so that it now compiles with the current dmd version
author | marton@basel.hu |
---|---|
date | Tue, 05 Apr 2011 20:44:01 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:586e4a649642 | 1:4a9dcbd9e54f |
---|---|
1 /***********************************************************************\ | |
2 * ntsecapi.d * | |
3 * * | |
4 * Windows API header module * | |
5 * * | |
6 * Translated from MinGW Windows headers * | |
7 * by Stewart Gordon * | |
8 * * | |
9 * Placed into public domain * | |
10 \***********************************************************************/ | |
11 module win32.ntsecapi; | |
12 | |
13 private import | |
14 win32.basetyps, win32.ntdef, win32.windef, win32.winnt, win32.w32api; | |
15 | |
16 // FIXME: check types and grouping of constants | |
17 // FIXME: check Windows version support | |
18 | |
19 const KERB_WRAP_NO_ENCRYPT = 0x80000001; | |
20 | |
21 const LOGON_GUEST = 0x00000001; | |
22 const LOGON_NOENCRYPTION = 0x00000002; | |
23 const LOGON_CACHED_ACCOUNT = 0x00000004; | |
24 const LOGON_USED_LM_PASSWORD = 0x00000008; | |
25 const LOGON_EXTRA_SIDS = 0x00000020; | |
26 const LOGON_SUBAUTH_SESSION_KEY = 0x00000040; | |
27 const LOGON_SERVER_TRUST_ACCOUNT = 0x00000080; | |
28 const LOGON_NTLMV2_ENABLED = 0x00000100; | |
29 const LOGON_RESOURCE_GROUPS = 0x00000200; | |
30 const LOGON_PROFILE_PATH_RETURNED = 0x00000400; | |
31 const LOGON_GRACE_LOGON = 0x01000000; | |
32 | |
33 enum { | |
34 LSA_MODE_PASSWORD_PROTECTED = 1, | |
35 LSA_MODE_INDIVIDUAL_ACCOUNTS, | |
36 LSA_MODE_MANDATORY_ACCESS, | |
37 LSA_MODE_LOG_FULL | |
38 } | |
39 | |
40 bool LSA_SUCCESS(int x) { return x >= 0; } | |
41 | |
42 /* TOTHINKABOUT: These constants don't have ANSI/Unicode versioned | |
43 * aliases. Should we merge them anyway? | |
44 */ | |
45 const char[] MICROSOFT_KERBEROS_NAME_A = "Kerberos"; | |
46 const wchar[] MICROSOFT_KERBEROS_NAME_W = "Kerberos"; | |
47 const char[] MSV1_0_PACKAGE_NAME = "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"; | |
48 const wchar[] MSV1_0_PACKAGE_NAMEW = "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"; | |
49 | |
50 const MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT = 32; | |
51 const MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT = 2048; | |
52 const MSV1_0_CLEARTEXT_PASSWORD_ALLOWED = 2; | |
53 const MSV1_0_CRED_LM_PRESENT = 1; | |
54 const MSV1_0_CRED_NT_PRESENT = 2; | |
55 const MSV1_0_CRED_VERSION = 0; | |
56 const MSV1_0_DONT_TRY_GUEST_ACCOUNT = 16; | |
57 const MSV1_0_MAX_NTLM3_LIFE = 1800; | |
58 const MSV1_0_MAX_AVL_SIZE = 64000; | |
59 const MSV1_0_MNS_LOGON = 16777216; | |
60 | |
61 const size_t | |
62 MSV1_0_CHALLENGE_LENGTH = 8, | |
63 MSV1_0_LANMAN_SESSION_KEY_LENGTH = 8, | |
64 MSV1_0_NTLM3_RESPONSE_LENGTH = 16, | |
65 MSV1_0_NTLM3_OWF_LENGTH = 16, | |
66 MSV1_0_NTLM3_INPUT_LENGTH = MSV1_0_NTLM3_RESPONSE.sizeof | |
67 - MSV1_0_NTLM3_RESPONSE_LENGTH, | |
68 MSV1_0_OWF_PASSWORD_LENGTH = 16, | |
69 MSV1_0_PACKAGE_NAMEW_LENGTH = MSV1_0_PACKAGE_NAMEW.sizeof | |
70 - WCHAR.sizeof; | |
71 | |
72 const MSV1_0_RETURN_USER_PARAMETERS = 8; | |
73 const MSV1_0_RETURN_PASSWORD_EXPIRY = 64; | |
74 const MSV1_0_RETURN_PROFILE_PATH = 512; | |
75 const MSV1_0_SUBAUTHENTICATION_DLL_EX = 1048576; | |
76 const MSV1_0_SUBAUTHENTICATION_DLL = 0xff000000; | |
77 const MSV1_0_SUBAUTHENTICATION_DLL_SHIFT = 24; | |
78 const MSV1_0_SUBAUTHENTICATION_DLL_RAS = 2; | |
79 const MSV1_0_SUBAUTHENTICATION_DLL_IIS = 132; | |
80 const MSV1_0_SUBAUTHENTICATION_FLAGS = 0xff000000; | |
81 const MSV1_0_TRY_GUEST_ACCOUNT_ONLY = 256; | |
82 const MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY = 1024; | |
83 const MSV1_0_UPDATE_LOGON_STATISTICS = 4; | |
84 const MSV1_0_USE_CLIENT_CHALLENGE = 128; | |
85 const MSV1_0_USER_SESSION_KEY_LENGTH = 16; | |
86 | |
87 const char[] | |
88 MSV1_0_SUBAUTHENTICATION_KEY | |
89 = `System\CurrentControlSet\Control\Lsa\MSV1_0`, | |
90 MSV1_0_SUBAUTHENTICATION_VALUE = "Auth"; | |
91 | |
92 const ACCESS_MASK | |
93 POLICY_VIEW_LOCAL_INFORMATION = 0x0001, | |
94 POLICY_VIEW_AUDIT_INFORMATION = 0x0002, | |
95 POLICY_GET_PRIVATE_INFORMATION = 0x0004, | |
96 POLICY_TRUST_ADMIN = 0x0008, | |
97 POLICY_CREATE_ACCOUNT = 0x0010, | |
98 POLICY_CREATE_SECRET = 0x0020, | |
99 POLICY_CREATE_PRIVILEGE = 0x0040, | |
100 POLICY_SET_DEFAULT_QUOTA_LIMITS = 0x0080, | |
101 POLICY_SET_AUDIT_REQUIREMENTS = 0x0100, | |
102 POLICY_AUDIT_LOG_ADMIN = 0x0200, | |
103 POLICY_SERVER_ADMIN = 0x0400, | |
104 POLICY_LOOKUP_NAMES = 0x0800, | |
105 | |
106 POLICY_READ = STANDARD_RIGHTS_READ | 0x0006, | |
107 POLICY_WRITE = STANDARD_RIGHTS_WRITE | 0x07F8, | |
108 POLICY_EXECUTE = STANDARD_RIGHTS_EXECUTE | 0x0801, | |
109 POLICY_ALL_ACCESS = STANDARD_RIGHTS_REQUIRED | 0x0FFF; | |
110 | |
111 const POLICY_AUDIT_EVENT_UNCHANGED = 0; | |
112 const POLICY_AUDIT_EVENT_SUCCESS = 1; | |
113 const POLICY_AUDIT_EVENT_FAILURE = 2; | |
114 const POLICY_AUDIT_EVENT_NONE = 4; | |
115 const POLICY_AUDIT_EVENT_MASK = 7; | |
116 | |
117 enum { | |
118 POLICY_LOCATION_LOCAL = 1, | |
119 POLICY_LOCATION_DS | |
120 } | |
121 | |
122 enum : uint { | |
123 POLICY_MACHINE_POLICY_LOCAL = 0, | |
124 POLICY_MACHINE_POLICY_DEFAULTED, | |
125 POLICY_MACHINE_POLICY_EXPLICIT, | |
126 POLICY_MACHINE_POLICY_UNKNOWN = 0xFFFFFFFF | |
127 } | |
128 | |
129 | |
130 const POLICY_QOS_SCHANEL_REQUIRED = 0x0001; | |
131 const POLICY_QOS_OUTBOUND_INTEGRITY = 0x0002; | |
132 const POLICY_QOS_OUTBOUND_CONFIDENTIALITY = 0x0004; | |
133 const POLICY_QOS_INBOUND_INTEGREITY = 0x0008; | |
134 const POLICY_QOS_INBOUND_CONFIDENTIALITY = 0x0010; | |
135 const POLICY_QOS_ALLOW_LOCAL_ROOT_CERT_STORE = 0x0020; | |
136 const POLICY_QOS_RAS_SERVER_ALLOWED = 0x0040; | |
137 const POLICY_QOS_DHCP_SERVER_ALLOWD = 0x0080; | |
138 | |
139 const POLICY_KERBEROS_FORWARDABLE = 1; | |
140 const POLICY_KERBEROS_PROXYABLE = 2; | |
141 const POLICY_KERBEROS_RENEWABLE = 4; | |
142 const POLICY_KERBEROS_POSTDATEABLE = 8; | |
143 | |
144 const char[] | |
145 SAM_PASSWORD_CHANGE_NOTIFY_ROUTINE = "PasswordChangeNotify", | |
146 SAM_INIT_NOTIFICATION_ROUTINE = "InitializeChangeNotify", | |
147 SAM_PASSWORD_FILTER_ROUTINE = "PasswordFilter"; | |
148 | |
149 const TCHAR[] | |
150 SE_INTERACTIVE_LOGON_NAME = "SeInteractiveLogonRight", | |
151 SE_NETWORK_LOGON_NAME = "SeNetworkLogonRight", | |
152 SE_BATCH_LOGON_NAME = "SeBatchLogonRight", | |
153 SE_SERVICE_LOGON_NAME = "SeServiceLogonRight"; | |
154 | |
155 enum { | |
156 TRUST_ATTRIBUTE_NON_TRANSITIVE = 1, | |
157 TRUST_ATTRIBUTE_UPLEVEL_ONLY = 2, | |
158 TRUST_ATTRIBUTE_TREE_PARENT = 4194304, | |
159 TRUST_ATTRIBUTES_VALID = -16580609 | |
160 } | |
161 | |
162 enum { | |
163 TRUST_AUTH_TYPE_NONE, | |
164 TRUST_AUTH_TYPE_NT4OWF, | |
165 TRUST_AUTH_TYPE_CLEAR | |
166 } | |
167 | |
168 enum { | |
169 TRUST_DIRECTION_DISABLED, | |
170 TRUST_DIRECTION_INBOUND, | |
171 TRUST_DIRECTION_OUTBOUND, | |
172 TRUST_DIRECTION_BIDIRECTIONAL | |
173 } | |
174 | |
175 enum { | |
176 TRUST_TYPE_DOWNLEVEL = 1, | |
177 TRUST_TYPE_UPLEVEL, | |
178 TRUST_TYPE_MIT, | |
179 TRUST_TYPE_DCE | |
180 } | |
181 | |
182 alias UNICODE_STRING LSA_UNICODE_STRING; | |
183 alias UNICODE_STRING* PLSA_UNICODE_STRING; | |
184 alias STRING LSA_STRING; | |
185 alias STRING* PLSA_STRING; | |
186 | |
187 enum MSV1_0_LOGON_SUBMIT_TYPE { | |
188 MsV1_0InteractiveLogon = 2, | |
189 MsV1_0Lm20Logon, | |
190 MsV1_0NetworkLogon, | |
191 MsV1_0SubAuthLogon, | |
192 MsV1_0WorkstationUnlockLogon = 7 | |
193 } | |
194 alias MSV1_0_LOGON_SUBMIT_TYPE* PMSV1_0_LOGON_SUBMIT_TYPE; | |
195 | |
196 enum MSV1_0_PROFILE_BUFFER_TYPE { | |
197 MsV1_0InteractiveProfile = 2, | |
198 MsV1_0Lm20LogonProfile, | |
199 MsV1_0SmartCardProfile | |
200 } | |
201 alias MSV1_0_PROFILE_BUFFER_TYPE* PMSV1_0_PROFILE_BUFFER_TYPE; | |
202 | |
203 | |
204 enum MSV1_0_AVID { | |
205 MsvAvEOL, | |
206 MsvAvNbComputerName, | |
207 MsvAvNbDomainName, | |
208 MsvAvDnsComputerName, | |
209 MsvAvDnsDomainName | |
210 } | |
211 | |
212 enum MSV1_0_PROTOCOL_MESSAGE_TYPE { | |
213 MsV1_0Lm20ChallengeRequest = 0, | |
214 MsV1_0Lm20GetChallengeResponse, | |
215 MsV1_0EnumerateUsers, | |
216 MsV1_0GetUserInfo, | |
217 MsV1_0ReLogonUsers, | |
218 MsV1_0ChangePassword, | |
219 MsV1_0ChangeCachedPassword, | |
220 MsV1_0GenericPassthrough, | |
221 MsV1_0CacheLogon, | |
222 MsV1_0SubAuth, | |
223 MsV1_0DeriveCredential, | |
224 MsV1_0CacheLookup | |
225 } | |
226 alias MSV1_0_PROTOCOL_MESSAGE_TYPE* PMSV1_0_PROTOCOL_MESSAGE_TYPE; | |
227 | |
228 enum POLICY_LSA_SERVER_ROLE { | |
229 PolicyServerRoleBackup = 2, | |
230 PolicyServerRolePrimary | |
231 } | |
232 alias POLICY_LSA_SERVER_ROLE* PPOLICY_LSA_SERVER_ROLE; | |
233 | |
234 enum POLICY_SERVER_ENABLE_STATE { | |
235 PolicyServerEnabled = 2, | |
236 PolicyServerDisabled | |
237 } | |
238 alias POLICY_SERVER_ENABLE_STATE* PPOLICY_SERVER_ENABLE_STATE; | |
239 | |
240 enum POLICY_INFORMATION_CLASS { | |
241 PolicyAuditLogInformation = 1, | |
242 PolicyAuditEventsInformation, | |
243 PolicyPrimaryDomainInformation, | |
244 PolicyPdAccountInformation, | |
245 PolicyAccountDomainInformation, | |
246 PolicyLsaServerRoleInformation, | |
247 PolicyReplicaSourceInformation, | |
248 PolicyDefaultQuotaInformation, | |
249 PolicyModificationInformation, | |
250 PolicyAuditFullSetInformation, | |
251 PolicyAuditFullQueryInformation, | |
252 PolicyDnsDomainInformation, | |
253 PolicyEfsInformation | |
254 } | |
255 alias POLICY_INFORMATION_CLASS* PPOLICY_INFORMATION_CLASS; | |
256 | |
257 enum POLICY_AUDIT_EVENT_TYPE { | |
258 AuditCategorySystem, | |
259 AuditCategoryLogon, | |
260 AuditCategoryObjectAccess, | |
261 AuditCategoryPrivilegeUse, | |
262 AuditCategoryDetailedTracking, | |
263 AuditCategoryPolicyChange, | |
264 AuditCategoryAccountManagement, | |
265 AuditCategoryDirectoryServiceAccess, | |
266 AuditCategoryAccountLogon | |
267 } | |
268 alias POLICY_AUDIT_EVENT_TYPE* PPOLICY_AUDIT_EVENT_TYPE; | |
269 | |
270 enum POLICY_LOCAL_INFORMATION_CLASS { | |
271 PolicyLocalAuditEventsInformation = 1, | |
272 PolicyLocalPdAccountInformation, | |
273 PolicyLocalAccountDomainInformation, | |
274 PolicyLocalLsaServerRoleInformation, | |
275 PolicyLocalReplicaSourceInformation, | |
276 PolicyLocalModificationInformation, | |
277 PolicyLocalAuditFullSetInformation, | |
278 PolicyLocalAuditFullQueryInformation, | |
279 PolicyLocalDnsDomainInformation, | |
280 PolicyLocalIPSecReferenceInformation, | |
281 PolicyLocalMachinePasswordInformation, | |
282 PolicyLocalQualityOfServiceInformation, | |
283 PolicyLocalPolicyLocationInformation | |
284 } | |
285 alias POLICY_LOCAL_INFORMATION_CLASS* PPOLICY_LOCAL_INFORMATION_CLASS; | |
286 | |
287 enum POLICY_DOMAIN_INFORMATION_CLASS { | |
288 PolicyDomainIPSecReferenceInformation = 1, | |
289 PolicyDomainQualityOfServiceInformation, | |
290 PolicyDomainEfsInformation, | |
291 PolicyDomainPublicKeyInformation, | |
292 PolicyDomainPasswordPolicyInformation, | |
293 PolicyDomainLockoutInformation, | |
294 PolicyDomainKerberosTicketInformation | |
295 } | |
296 alias POLICY_DOMAIN_INFORMATION_CLASS* PPOLICY_DOMAIN_INFORMATION_CLASS; | |
297 | |
298 enum SECURITY_LOGON_TYPE { | |
299 Interactive = 2, | |
300 Network, | |
301 Batch, | |
302 Service, | |
303 Proxy, | |
304 Unlock | |
305 } | |
306 alias SECURITY_LOGON_TYPE* PSECURITY_LOGON_TYPE; | |
307 | |
308 enum TRUSTED_INFORMATION_CLASS { | |
309 TrustedDomainNameInformation = 1, | |
310 TrustedControllersInformation, | |
311 TrustedPosixOffsetInformation, | |
312 TrustedPasswordInformation, | |
313 TrustedDomainInformationBasic, | |
314 TrustedDomainInformationEx, | |
315 TrustedDomainAuthInformation, | |
316 TrustedDomainFullInformation | |
317 } | |
318 alias TRUSTED_INFORMATION_CLASS* PTRUSTED_INFORMATION_CLASS; | |
319 | |
320 struct DOMAIN_PASSWORD_INFORMATION { | |
321 USHORT MinPasswordLength; | |
322 USHORT PasswordHistoryLength; | |
323 ULONG PasswordProperties; | |
324 LARGE_INTEGER MaxPasswordAge; | |
325 LARGE_INTEGER MinPasswordAge; | |
326 } | |
327 alias DOMAIN_PASSWORD_INFORMATION* PDOMAIN_PASSWORD_INFORMATION; | |
328 | |
329 struct LSA_ENUMERATION_INFORMATION { | |
330 PSID Sid; | |
331 } | |
332 alias LSA_ENUMERATION_INFORMATION* PLSA_ENUMERATION_INFORMATION; | |
333 | |
334 alias OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES; | |
335 alias OBJECT_ATTRIBUTES* PLSA_OBJECT_ATTRIBUTES; | |
336 | |
337 struct LSA_TRUST_INFORMATION { | |
338 LSA_UNICODE_STRING Name; | |
339 PSID Sid; | |
340 } | |
341 alias LSA_TRUST_INFORMATION TRUSTED_DOMAIN_INFORMATION_BASIC; | |
342 alias LSA_TRUST_INFORMATION* PLSA_TRUST_INFORMATION; | |
343 /* in MinGW (further down the code): | |
344 * typedef PLSA_TRUST_INFORMATION *PTRUSTED_DOMAIN_INFORMATION_BASIC; | |
345 * but it doesn't look right.... | |
346 */ | |
347 alias LSA_TRUST_INFORMATION** PTRUSTED_DOMAIN_INFORMATION_BASIC; | |
348 | |
349 struct LSA_REFERENCED_DOMAIN_LIST { | |
350 ULONG Entries; | |
351 PLSA_TRUST_INFORMATION Domains; | |
352 } | |
353 alias LSA_REFERENCED_DOMAIN_LIST* PLSA_REFERENCED_DOMAIN_LIST; | |
354 | |
355 struct LSA_TRANSLATED_SID { | |
356 SID_NAME_USE Use; | |
357 ULONG RelativeId; | |
358 LONG DomainIndex; | |
359 } | |
360 alias LSA_TRANSLATED_SID* PLSA_TRANSLATED_SID; | |
361 | |
362 struct LSA_TRANSLATED_NAME { | |
363 SID_NAME_USE Use; | |
364 LSA_UNICODE_STRING Name; | |
365 LONG DomainIndex; | |
366 } | |
367 alias LSA_TRANSLATED_NAME* PLSA_TRANSLATED_NAME; | |
368 | |
369 struct MSV1_0_INTERACTIVE_LOGON { | |
370 MSV1_0_LOGON_SUBMIT_TYPE MessageType; | |
371 UNICODE_STRING LogonDomainName; | |
372 UNICODE_STRING UserName; | |
373 UNICODE_STRING Password; | |
374 } | |
375 alias MSV1_0_INTERACTIVE_LOGON* PMSV1_0_INTERACTIVE_LOGON; | |
376 | |
377 struct MSV1_0_INTERACTIVE_PROFILE { | |
378 MSV1_0_PROFILE_BUFFER_TYPE MessageType; | |
379 USHORT LogonCount; | |
380 USHORT BadPasswordCount; | |
381 LARGE_INTEGER LogonTime; | |
382 LARGE_INTEGER LogoffTime; | |
383 LARGE_INTEGER KickOffTime; | |
384 LARGE_INTEGER PasswordLastSet; | |
385 LARGE_INTEGER PasswordCanChange; | |
386 LARGE_INTEGER PasswordMustChange; | |
387 UNICODE_STRING LogonScript; | |
388 UNICODE_STRING HomeDirectory; | |
389 UNICODE_STRING FullName; | |
390 UNICODE_STRING ProfilePath; | |
391 UNICODE_STRING HomeDirectoryDrive; | |
392 UNICODE_STRING LogonServer; | |
393 ULONG UserFlags; | |
394 } | |
395 alias MSV1_0_INTERACTIVE_PROFILE* PMSV1_0_INTERACTIVE_PROFILE; | |
396 | |
397 struct MSV1_0_LM20_LOGON { | |
398 MSV1_0_LOGON_SUBMIT_TYPE MessageType; | |
399 UNICODE_STRING LogonDomainName; | |
400 UNICODE_STRING UserName; | |
401 UNICODE_STRING Workstation; | |
402 UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeToClient; | |
403 STRING CaseSensitiveChallengeResponse; | |
404 STRING CaseInsensitiveChallengeResponse; | |
405 ULONG ParameterControl; | |
406 } | |
407 alias MSV1_0_LM20_LOGON* PMSV1_0_LM20_LOGON; | |
408 | |
409 static if (_WIN32_WINNT_ONLY && _WIN32_WINNT >= 0x500) { | |
410 struct MSV1_0_SUBAUTH_LOGON { | |
411 MSV1_0_LOGON_SUBMIT_TYPE MessageType; | |
412 UNICODE_STRING LogonDomainName; | |
413 UNICODE_STRING UserName; | |
414 UNICODE_STRING Workstation; | |
415 UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeToClient; | |
416 STRING AuthenticationInfo1; | |
417 STRING AuthenticationInfo2; | |
418 ULONG ParameterControl; | |
419 ULONG SubAuthPackageId; | |
420 } | |
421 alias MSV1_0_SUBAUTH_LOGON* PMSV1_0_SUBAUTH_LOGON; | |
422 } | |
423 | |
424 struct MSV1_0_LM20_LOGON_PROFILE { | |
425 MSV1_0_PROFILE_BUFFER_TYPE MessageType; | |
426 LARGE_INTEGER KickOffTime; | |
427 LARGE_INTEGER LogoffTime; | |
428 ULONG UserFlags; | |
429 UCHAR[MSV1_0_USER_SESSION_KEY_LENGTH] UserSessionKey; | |
430 UNICODE_STRING LogonDomainName; | |
431 UCHAR[MSV1_0_LANMAN_SESSION_KEY_LENGTH] LanmanSessionKey; | |
432 UNICODE_STRING LogonServer; | |
433 UNICODE_STRING UserParameters; | |
434 } | |
435 alias MSV1_0_LM20_LOGON_PROFILE* PMSV1_0_LM20_LOGON_PROFILE; | |
436 | |
437 struct MSV1_0_SUPPLEMENTAL_CREDENTIAL { | |
438 ULONG Version; | |
439 ULONG Flags; | |
440 UCHAR[MSV1_0_OWF_PASSWORD_LENGTH] LmPassword; | |
441 UCHAR[MSV1_0_OWF_PASSWORD_LENGTH] NtPassword; | |
442 } | |
443 alias MSV1_0_SUPPLEMENTAL_CREDENTIAL* PMSV1_0_SUPPLEMENTAL_CREDENTIAL; | |
444 | |
445 struct MSV1_0_NTLM3_RESPONSE { | |
446 UCHAR[MSV1_0_NTLM3_RESPONSE_LENGTH] Response; | |
447 UCHAR RespType; | |
448 UCHAR HiRespType; | |
449 USHORT Flags; | |
450 ULONG MsgWord; | |
451 ULONGLONG TimeStamp; | |
452 UCHAR[MSV1_0_CHALLENGE_LENGTH] ChallengeFromClient; | |
453 ULONG AvPairsOff; | |
454 UCHAR _Buffer; | |
455 UCHAR* Buffer() { return &_Buffer; } | |
456 } | |
457 alias MSV1_0_NTLM3_RESPONSE* PMSV1_0_NTLM3_RESPONSE; | |
458 | |
459 struct MSV1_0_AV_PAIR { | |
460 USHORT AvId; | |
461 USHORT AvLen; | |
462 } | |
463 alias MSV1_0_AV_PAIR* PMSV1_0_AV_PAIR; | |
464 | |
465 struct MSV1_0_CHANGEPASSWORD_REQUEST { | |
466 MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; | |
467 UNICODE_STRING DomainName; | |
468 UNICODE_STRING AccountName; | |
469 UNICODE_STRING OldPassword; | |
470 UNICODE_STRING NewPassword; | |
471 BOOLEAN Impersonating; | |
472 } | |
473 alias MSV1_0_CHANGEPASSWORD_REQUEST* PMSV1_0_CHANGEPASSWORD_REQUEST; | |
474 | |
475 struct MSV1_0_CHANGEPASSWORD_RESPONSE { | |
476 MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; | |
477 BOOLEAN PasswordInfoValid; | |
478 DOMAIN_PASSWORD_INFORMATION DomainPasswordInfo; | |
479 } | |
480 alias MSV1_0_CHANGEPASSWORD_RESPONSE* PMSV1_0_CHANGEPASSWORD_RESPONSE; | |
481 | |
482 struct MSV1_0_SUBAUTH_REQUEST { | |
483 MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; | |
484 ULONG SubAuthPackageId; | |
485 ULONG SubAuthInfoLength; | |
486 PUCHAR SubAuthSubmitBuffer; | |
487 } | |
488 alias MSV1_0_SUBAUTH_REQUEST* PMSV1_0_SUBAUTH_REQUEST; | |
489 | |
490 struct MSV1_0_SUBAUTH_RESPONSE { | |
491 MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; | |
492 ULONG SubAuthInfoLength; | |
493 PUCHAR SubAuthReturnBuffer; | |
494 } | |
495 alias MSV1_0_SUBAUTH_RESPONSE* PMSV1_0_SUBAUTH_RESPONSE; | |
496 | |
497 const MSV1_0_DERIVECRED_TYPE_SHA1 = 0; | |
498 | |
499 struct MSV1_0_DERIVECRED_REQUEST { | |
500 MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; | |
501 LUID LogonId; | |
502 ULONG DeriveCredType; | |
503 ULONG DeriveCredInfoLength; | |
504 UCHAR _DeriveCredSubmitBuffer; | |
505 UCHAR* DeriveCredSubmitBuffer() { return &_DeriveCredSubmitBuffer; } | |
506 } | |
507 alias MSV1_0_DERIVECRED_REQUEST* PMSV1_0_DERIVECRED_REQUEST; | |
508 | |
509 struct MSV1_0_DERIVECRED_RESPONSE { | |
510 MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType; | |
511 ULONG DeriveCredInfoLength; | |
512 UCHAR _DeriveCredReturnBuffer; | |
513 UCHAR* DeriveCredReturnBuffer() { return &_DeriveCredReturnBuffer; } | |
514 } | |
515 alias MSV1_0_DERIVECRED_RESPONSE* PMSV1_0_DERIVECRED_RESPONSE; | |
516 | |
517 alias uint LSA_ENUMERATION_HANDLE, LSA_OPERATIONAL_MODE, | |
518 POLICY_AUDIT_EVENT_OPTIONS; | |
519 alias uint* PLSA_ENUMERATION_HANDLE, PLSA_OPERATIONAL_MODE, | |
520 PPOLICY_AUDIT_EVENT_OPTIONS; | |
521 | |
522 struct POLICY_PRIVILEGE_DEFINITION { | |
523 LSA_UNICODE_STRING Name; | |
524 LUID LocalValue; | |
525 } | |
526 alias POLICY_PRIVILEGE_DEFINITION* PPOLICY_PRIVILEGE_DEFINITION; | |
527 | |
528 struct POLICY_AUDIT_LOG_INFO { | |
529 ULONG AuditLogPercentFull; | |
530 ULONG MaximumLogSize; | |
531 LARGE_INTEGER AuditRetentionPeriod; | |
532 BOOLEAN AuditLogFullShutdownInProgress; | |
533 LARGE_INTEGER TimeToShutdown; | |
534 ULONG NextAuditRecordId; | |
535 } | |
536 alias POLICY_AUDIT_LOG_INFO* PPOLICY_AUDIT_LOG_INFO; | |
537 | |
538 struct POLICY_AUDIT_EVENTS_INFO { | |
539 BOOLEAN AuditingMode; | |
540 PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions; | |
541 ULONG MaximumAuditEventCount; | |
542 } | |
543 alias POLICY_AUDIT_EVENTS_INFO* PPOLICY_AUDIT_EVENTS_INFO; | |
544 | |
545 struct POLICY_ACCOUNT_DOMAIN_INFO { | |
546 LSA_UNICODE_STRING DomainName; | |
547 PSID DomainSid; | |
548 } | |
549 alias POLICY_ACCOUNT_DOMAIN_INFO* PPOLICY_ACCOUNT_DOMAIN_INFO; | |
550 | |
551 struct POLICY_PRIMARY_DOMAIN_INFO { | |
552 LSA_UNICODE_STRING Name; | |
553 PSID Sid; | |
554 } | |
555 alias POLICY_PRIMARY_DOMAIN_INFO* PPOLICY_PRIMARY_DOMAIN_INFO; | |
556 | |
557 struct POLICY_DNS_DOMAIN_INFO { | |
558 LSA_UNICODE_STRING Name; | |
559 LSA_UNICODE_STRING DnsDomainName; | |
560 LSA_UNICODE_STRING DnsTreeName; | |
561 GUID DomainGuid; | |
562 PSID Sid; | |
563 } | |
564 alias POLICY_DNS_DOMAIN_INFO* PPOLICY_DNS_DOMAIN_INFO; | |
565 | |
566 struct POLICY_PD_ACCOUNT_INFO { | |
567 LSA_UNICODE_STRING Name; | |
568 } | |
569 alias POLICY_PD_ACCOUNT_INFO* PPOLICY_PD_ACCOUNT_INFO; | |
570 | |
571 struct POLICY_LSA_SERVER_ROLE_INFO { | |
572 POLICY_LSA_SERVER_ROLE LsaServerRole; | |
573 } | |
574 alias POLICY_LSA_SERVER_ROLE_INFO* PPOLICY_LSA_SERVER_ROLE_INFO; | |
575 | |
576 struct POLICY_REPLICA_SOURCE_INFO { | |
577 LSA_UNICODE_STRING ReplicaSource; | |
578 LSA_UNICODE_STRING ReplicaAccountName; | |
579 } | |
580 alias POLICY_REPLICA_SOURCE_INFO* PPOLICY_REPLICA_SOURCE_INFO; | |
581 | |
582 struct POLICY_DEFAULT_QUOTA_INFO { | |
583 QUOTA_LIMITS QuotaLimits; | |
584 } | |
585 alias POLICY_DEFAULT_QUOTA_INFO* PPOLICY_DEFAULT_QUOTA_INFO; | |
586 | |
587 struct POLICY_MODIFICATION_INFO { | |
588 LARGE_INTEGER ModifiedId; | |
589 LARGE_INTEGER DatabaseCreationTime; | |
590 } | |
591 alias POLICY_MODIFICATION_INFO* PPOLICY_MODIFICATION_INFO; | |
592 | |
593 struct POLICY_AUDIT_FULL_SET_INFO { | |
594 BOOLEAN ShutDownOnFull; | |
595 } | |
596 alias POLICY_AUDIT_FULL_SET_INFO* PPOLICY_AUDIT_FULL_SET_INFO; | |
597 | |
598 struct POLICY_AUDIT_FULL_QUERY_INFO { | |
599 BOOLEAN ShutDownOnFull; | |
600 BOOLEAN LogIsFull; | |
601 } | |
602 alias POLICY_AUDIT_FULL_QUERY_INFO* PPOLICY_AUDIT_FULL_QUERY_INFO; | |
603 | |
604 struct POLICY_EFS_INFO { | |
605 ULONG InfoLength; | |
606 PUCHAR EfsBlob; | |
607 } | |
608 alias POLICY_EFS_INFO* PPOLICY_EFS_INFO; | |
609 | |
610 struct POLICY_LOCAL_IPSEC_REFERENCE_INFO { | |
611 LSA_UNICODE_STRING ObjectPath; | |
612 } | |
613 alias POLICY_LOCAL_IPSEC_REFERENCE_INFO* PPOLICY_LOCAL_IPSEC_REFERENCE_INFO; | |
614 | |
615 struct POLICY_LOCAL_MACHINE_PASSWORD_INFO { | |
616 LARGE_INTEGER PasswordChangeInterval; | |
617 } | |
618 alias POLICY_LOCAL_MACHINE_PASSWORD_INFO* PPOLICY_LOCAL_MACHINE_PASSWORD_INFO; | |
619 | |
620 struct POLICY_LOCAL_POLICY_LOCATION_INFO { | |
621 ULONG PolicyLocation; | |
622 } | |
623 alias POLICY_LOCAL_POLICY_LOCATION_INFO* PPOLICY_LOCAL_POLICY_LOCATION_INFO; | |
624 | |
625 struct POLICY_LOCAL_QUALITY_OF_SERVICE_INFO{ | |
626 ULONG QualityOfService; | |
627 } | |
628 alias POLICY_LOCAL_QUALITY_OF_SERVICE_INFO | |
629 POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO; | |
630 alias POLICY_LOCAL_QUALITY_OF_SERVICE_INFO* | |
631 PPOLICY_LOCAL_QUALITY_OF_SERVICE_INFO, | |
632 PPOLICY_DOMAIN_QUALITY_OF_SERVICE_INFO; | |
633 | |
634 struct POLICY_DOMAIN_PUBLIC_KEY_INFO { | |
635 ULONG InfoLength; | |
636 PUCHAR PublicKeyInfo; | |
637 } | |
638 alias POLICY_DOMAIN_PUBLIC_KEY_INFO* PPOLICY_DOMAIN_PUBLIC_KEY_INFO; | |
639 | |
640 struct POLICY_DOMAIN_LOCKOUT_INFO { | |
641 LARGE_INTEGER LockoutDuration; | |
642 LARGE_INTEGER LockoutObservationWindow; | |
643 USHORT LockoutThreshold; | |
644 } | |
645 alias POLICY_DOMAIN_LOCKOUT_INFO* PPOLICY_DOMAIN_LOCKOUT_INFO; | |
646 | |
647 struct POLICY_DOMAIN_PASSWORD_INFO { | |
648 USHORT MinPasswordLength; | |
649 USHORT PasswordHistoryLength; | |
650 ULONG PasswordProperties; | |
651 LARGE_INTEGER MaxPasswordAge; | |
652 LARGE_INTEGER MinPasswordAge; | |
653 } | |
654 alias POLICY_DOMAIN_PASSWORD_INFO* PPOLICY_DOMAIN_PASSWORD_INFO; | |
655 | |
656 struct POLICY_DOMAIN_KERBEROS_TICKET_INFO { | |
657 ULONG AuthenticationOptions; | |
658 LARGE_INTEGER MinTicketAge; | |
659 LARGE_INTEGER MaxTicketAge; | |
660 LARGE_INTEGER MaxRenewAge; | |
661 LARGE_INTEGER ProxyLifetime; | |
662 LARGE_INTEGER ForceLogoff; | |
663 } | |
664 alias POLICY_DOMAIN_KERBEROS_TICKET_INFO* PPOLICY_DOMAIN_KERBEROS_TICKET_INFO; | |
665 | |
666 alias HANDLE LSA_HANDLE; | |
667 alias HANDLE* PLSA_HANDLE; | |
668 | |
669 struct TRUSTED_DOMAIN_NAME_INFO { | |
670 LSA_UNICODE_STRING Name; | |
671 } | |
672 alias TRUSTED_DOMAIN_NAME_INFO* PTRUSTED_DOMAIN_NAME_INFO; | |
673 | |
674 struct TRUSTED_CONTROLLERS_INFO { | |
675 ULONG Entries; | |
676 PLSA_UNICODE_STRING Names; | |
677 } | |
678 alias TRUSTED_CONTROLLERS_INFO* PTRUSTED_CONTROLLERS_INFO; | |
679 | |
680 struct TRUSTED_POSIX_OFFSET_INFO { | |
681 ULONG Offset; | |
682 } | |
683 alias TRUSTED_POSIX_OFFSET_INFO* PTRUSTED_POSIX_OFFSET_INFO; | |
684 | |
685 struct TRUSTED_PASSWORD_INFO { | |
686 LSA_UNICODE_STRING Password; | |
687 LSA_UNICODE_STRING OldPassword; | |
688 } | |
689 alias TRUSTED_PASSWORD_INFO* PTRUSTED_PASSWORD_INFO; | |
690 | |
691 struct TRUSTED_DOMAIN_INFORMATION_EX { | |
692 LSA_UNICODE_STRING Name; | |
693 LSA_UNICODE_STRING FlatName; | |
694 PSID Sid; | |
695 ULONG TrustDirection; | |
696 ULONG TrustType; | |
697 ULONG TrustAttributes; | |
698 } | |
699 alias TRUSTED_DOMAIN_INFORMATION_EX* PTRUSTED_DOMAIN_INFORMATION_EX; | |
700 | |
701 struct LSA_AUTH_INFORMATION { | |
702 LARGE_INTEGER LastUpdateTime; | |
703 ULONG AuthType; | |
704 ULONG AuthInfoLength; | |
705 PUCHAR AuthInfo; | |
706 } | |
707 alias LSA_AUTH_INFORMATION* PLSA_AUTH_INFORMATION; | |
708 | |
709 struct TRUSTED_DOMAIN_AUTH_INFORMATION { | |
710 ULONG IncomingAuthInfos; | |
711 PLSA_AUTH_INFORMATION IncomingAuthenticationInformation; | |
712 PLSA_AUTH_INFORMATION IncomingPreviousAuthenticationInformation; | |
713 ULONG OutgoingAuthInfos; | |
714 PLSA_AUTH_INFORMATION OutgoingAuthenticationInformation; | |
715 PLSA_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation; | |
716 } | |
717 alias TRUSTED_DOMAIN_AUTH_INFORMATION* PTRUSTED_DOMAIN_AUTH_INFORMATION; | |
718 | |
719 struct TRUSTED_DOMAIN_FULL_INFORMATION { | |
720 TRUSTED_DOMAIN_INFORMATION_EX Information; | |
721 TRUSTED_POSIX_OFFSET_INFO PosixOffset; | |
722 TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation; | |
723 } | |
724 alias TRUSTED_DOMAIN_FULL_INFORMATION* PTRUSTED_DOMAIN_FULL_INFORMATION; | |
725 | |
726 extern (Windows) { | |
727 NTSTATUS LsaAddAccountRights(LSA_HANDLE, PSID, PLSA_UNICODE_STRING, | |
728 ULONG); | |
729 NTSTATUS LsaCallAuthenticationPackage(HANDLE, ULONG, PVOID, ULONG, | |
730 PVOID*, PULONG, PNTSTATUS); | |
731 NTSTATUS LsaClose(LSA_HANDLE); | |
732 NTSTATUS LsaConnectUntrusted(PHANDLE); | |
733 NTSTATUS LsaCreateTrustedDomainEx(LSA_HANDLE, | |
734 PTRUSTED_DOMAIN_INFORMATION_EX, PTRUSTED_DOMAIN_AUTH_INFORMATION, | |
735 ACCESS_MASK, PLSA_HANDLE); | |
736 NTSTATUS LsaDeleteTrustedDomain(LSA_HANDLE, PSID); | |
737 NTSTATUS LsaDeregisterLogonProcess(HANDLE); | |
738 NTSTATUS LsaEnumerateAccountRights(LSA_HANDLE, PSID, PLSA_UNICODE_STRING*, | |
739 PULONG); | |
740 NTSTATUS LsaEnumerateAccountsWithUserRight(LSA_HANDLE, | |
741 PLSA_UNICODE_STRING, PVOID*, PULONG); | |
742 NTSTATUS LsaEnumerateTrustedDomains(LSA_HANDLE, PLSA_ENUMERATION_HANDLE, | |
743 PVOID*, ULONG, PULONG); | |
744 NTSTATUS LsaEnumerateTrustedDomainsEx(LSA_HANDLE, PLSA_ENUMERATION_HANDLE, | |
745 TRUSTED_INFORMATION_CLASS, PVOID*, ULONG, PULONG); | |
746 NTSTATUS LsaFreeMemory(PVOID); | |
747 NTSTATUS LsaFreeReturnBuffer(PVOID); | |
748 NTSTATUS LsaLogonUser(HANDLE, PLSA_STRING, SECURITY_LOGON_TYPE, ULONG, | |
749 PVOID, ULONG, PTOKEN_GROUPS, PTOKEN_SOURCE, PVOID*, PULONG, PLUID, | |
750 PHANDLE, PQUOTA_LIMITS, PNTSTATUS); | |
751 NTSTATUS LsaLookupAuthenticationPackage(HANDLE, PLSA_STRING, PULONG); | |
752 NTSTATUS LsaLookupNames(LSA_HANDLE, ULONG, PLSA_UNICODE_STRING, | |
753 PLSA_REFERENCED_DOMAIN_LIST*, PLSA_TRANSLATED_SID*); | |
754 NTSTATUS LsaLookupSids(LSA_HANDLE, ULONG, PSID*, | |
755 PLSA_REFERENCED_DOMAIN_LIST*, PLSA_TRANSLATED_NAME*); | |
756 ULONG LsaNtStatusToWinError(NTSTATUS); | |
757 NTSTATUS LsaOpenPolicy(PLSA_UNICODE_STRING, PLSA_OBJECT_ATTRIBUTES, | |
758 ACCESS_MASK, PLSA_HANDLE); | |
759 NTSTATUS LsaQueryDomainInformationPolicy(LSA_HANDLE, | |
760 POLICY_DOMAIN_INFORMATION_CLASS, PVOID*); | |
761 NTSTATUS LsaQueryInformationPolicy(LSA_HANDLE, POLICY_INFORMATION_CLASS, | |
762 PVOID*); | |
763 NTSTATUS LsaQueryLocalInformationPolicy(LSA_HANDLE, | |
764 POLICY_LOCAL_INFORMATION_CLASS, PVOID*); | |
765 NTSTATUS LsaQueryTrustedDomainInfo(LSA_HANDLE, PSID, | |
766 TRUSTED_INFORMATION_CLASS, PVOID*); | |
767 NTSTATUS LsaQueryTrustedDomainInfoByName(LSA_HANDLE, PLSA_UNICODE_STRING, | |
768 TRUSTED_INFORMATION_CLASS, PVOID*); | |
769 NTSTATUS LsaRegisterLogonProcess(PLSA_STRING, PHANDLE, | |
770 PLSA_OPERATIONAL_MODE); | |
771 NTSTATUS LsaRemoveAccountRights(LSA_HANDLE, PSID, BOOLEAN, | |
772 PLSA_UNICODE_STRING, ULONG); | |
773 NTSTATUS LsaRetrievePrivateData(LSA_HANDLE, PLSA_UNICODE_STRING, | |
774 PLSA_UNICODE_STRING*); | |
775 NTSTATUS LsaSetDomainInformationPolicy(LSA_HANDLE, | |
776 POLICY_DOMAIN_INFORMATION_CLASS, PVOID); | |
777 NTSTATUS LsaSetInformationPolicy(LSA_HANDLE, POLICY_INFORMATION_CLASS, | |
778 PVOID); | |
779 NTSTATUS LsaSetLocalInformationPolicy(LSA_HANDLE, | |
780 POLICY_LOCAL_INFORMATION_CLASS, PVOID); | |
781 NTSTATUS LsaSetTrustedDomainInformation(LSA_HANDLE, PSID, | |
782 TRUSTED_INFORMATION_CLASS, PVOID); | |
783 NTSTATUS LsaSetTrustedDomainInfoByName(LSA_HANDLE, PLSA_UNICODE_STRING, | |
784 TRUSTED_INFORMATION_CLASS, PVOID); | |
785 NTSTATUS LsaStorePrivateData(LSA_HANDLE, PLSA_UNICODE_STRING, | |
786 PLSA_UNICODE_STRING); | |
787 } | |
788 | |
789 alias NTSTATUS function(PUNICODE_STRING, ULONG, PUNICODE_STRING) | |
790 PSAM_PASSWORD_NOTIFICATION_ROUTINE; | |
791 alias BOOLEAN function() PSAM_INIT_NOTIFICATION_ROUTINE; | |
792 alias BOOLEAN function(PUNICODE_STRING, PUNICODE_STRING, | |
793 PUNICODE_STRING, BOOLEAN) PSAM_PASSWORD_FILTER_ROUTINE; |