eccd0ccd37955b54190a4e081137037a0ecd280e
[reactos.git] / reactos / include / ntsecapi.h
1 /*
2 * Copyright (C) 1999 Juergen Schmied
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 */
18
19 #ifdef __USE_W32API
20 #include_next <ntsecapi.h>
21 #else
22
23 #ifndef __WINE_NTSECAPI_H
24 #define __WINE_NTSECAPI_H
25
26 #ifdef __cplusplus
27 extern "C" {
28 #endif /* defined(__cplusplus) */
29
30 typedef enum _SECURITY_LOGON_TYPE {
31 Interactive = 2,
32 Network,
33 Batch,
34 Service,
35 Proxy,
36 Unlock,
37 NetworkCleartext,
38 NewCredentials,
39 RemoteInteractive,
40 CachedInteractive,
41 CachedRemoteInteractive,
42 CachedUnlock
43 } SECURITY_LOGON_TYPE, *PSECURITY_LOGON_TYPE;
44
45 typedef enum _POLICY_NOTIFICATION_INFORMATION_CLASS {
46
47 PolicyNotifyAuditEventsInformation = 1,
48 PolicyNotifyAccountDomainInformation,
49 PolicyNotifyServerRoleInformation,
50 PolicyNotifyDnsDomainInformation,
51 PolicyNotifyDomainEfsInformation,
52 PolicyNotifyDomainKerberosTicketInformation,
53 PolicyNotifyMachineAccountPasswordInformation
54
55 } POLICY_NOTIFICATION_INFORMATION_CLASS, *PPOLICY_NOTIFICATION_INFORMATION_CLASS;
56
57 typedef ULONG LSA_OPERATIONAL_MODE, *PLSA_OPERATIONAL_MODE;
58
59 /* Policy access rights */
60 #define POLICY_VIEW_LOCAL_INFORMATION 0x00000001L
61 #define POLICY_VIEW_AUDIT_INFORMATION 0x00000002L
62 #define POLICY_GET_PRIVATE_INFORMATION 0x00000004L
63 #define POLICY_TRUST_ADMIN 0x00000008L
64 #define POLICY_CREATE_ACCOUNT 0x00000010L
65 #define POLICY_CREATE_SECRET 0x00000020L
66 #define POLICY_CREATE_PRIVILEGE 0x00000040L
67 #define POLICY_SET_DEFAULT_QUOTA_LIMITS 0x00000080L
68 #define POLICY_SET_AUDIT_REQUIREMENTS 0x00000100L
69 #define POLICY_AUDIT_LOG_ADMIN 0x00000200L
70 #define POLICY_SERVER_ADMIN 0x00000400L
71 #define POLICY_LOOKUP_NAMES 0x00000800L
72 #define POLICY_NOTIFICATION 0x00001000L
73
74 #define POLICY_ALL_ACCESS ( \
75 STANDARD_RIGHTS_REQUIRED | \
76 POLICY_VIEW_LOCAL_INFORMATION | \
77 POLICY_VIEW_AUDIT_INFORMATION | \
78 POLICY_GET_PRIVATE_INFORMATION | \
79 POLICY_TRUST_ADMIN | \
80 POLICY_CREATE_ACCOUNT | \
81 POLICY_CREATE_SECRET | \
82 POLICY_CREATE_PRIVILEGE | \
83 POLICY_SET_DEFAULT_QUOTA_LIMITS | \
84 POLICY_SET_AUDIT_REQUIREMENTS | \
85 POLICY_AUDIT_LOG_ADMIN | \
86 POLICY_SERVER_ADMIN | \
87 POLICY_LOOKUP_NAMES)
88
89
90 #define POLICY_READ ( \
91 STANDARD_RIGHTS_READ | \
92 POLICY_VIEW_AUDIT_INFORMATION | \
93 POLICY_GET_PRIVATE_INFORMATION)
94
95 #define POLICY_WRITE ( \
96 STANDARD_RIGHTS_WRITE | \
97 POLICY_TRUST_ADMIN | \
98 POLICY_CREATE_ACCOUNT | \
99 POLICY_CREATE_SECRET | \
100 POLICY_CREATE_PRIVILEGE | \
101 POLICY_SET_DEFAULT_QUOTA_LIMITS | \
102 POLICY_SET_AUDIT_REQUIREMENTS | \
103 POLICY_AUDIT_LOG_ADMIN | \
104 POLICY_SERVER_ADMIN)
105
106 #define POLICY_EXECUTE ( \
107 STANDARD_RIGHTS_EXECUTE | \
108 POLICY_VIEW_LOCAL_INFORMATION | \
109 POLICY_LOOKUP_NAMES)
110
111 typedef UNICODE_STRING LSA_UNICODE_STRING, *PLSA_UNICODE_STRING;
112 /* FIXME: Microsoft declares an LSA_STRING as ascii but changing this breaks secur32.dll so someone will need to figure out what to do here */
113 typedef struct _LSA_STRING
114 {
115 USHORT Length;
116 USHORT MaximumLength;
117 PWSTR Buffer;
118 } LSA_STRING, *PLSA_STRING;
119 typedef OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES;
120
121 typedef PVOID LSA_HANDLE, *PLSA_HANDLE;
122
123 typedef enum
124 {
125 PolicyAuditLogInformation = 1,
126 PolicyAuditEventsInformation,
127 PolicyPrimaryDomainInformation,
128 PolicyPdAccountInformation,
129 PolicyAccountDomainInformation,
130 PolicyLsaServerRoleInformation,
131 PolicyReplicaSourceInformation,
132 PolicyDefaultQuotaInformation,
133 PolicyModificationInformation,
134 PolicyAuditFullSetInformation,
135 PolicyAuditFullQueryInformation,
136 PolicyDnsDomainInformation
137 } POLICY_INFORMATION_CLASS, *PPOLICY_INFORMATION_CLASS;
138
139 typedef ULONG POLICY_AUDIT_EVENT_OPTIONS, *PPOLICY_AUDIT_EVENT_OPTIONS;
140
141 typedef struct _POLICY_AUDIT_EVENTS_INFO
142 {
143 WINBOOL AuditingMode;
144 PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions;
145 ULONG MaximumAuditEventCount;
146 } POLICY_AUDIT_EVENTS_INFO, *PPOLICY_AUDIT_EVENTS_INFO;
147
148 typedef struct _LSA_FOREST_TRUST_DOMAIN_INFO {
149
150 PSID Sid;
151 LSA_UNICODE_STRING DnsName;
152 LSA_UNICODE_STRING NetbiosName;
153
154 } LSA_FOREST_TRUST_DOMAIN_INFO, *PLSA_FOREST_TRUST_DOMAIN_INFO;
155
156
157 #define MAX_FOREST_TRUST_BINARY_DATA_SIZE ( 128 * 1024 )
158
159 typedef struct _LSA_FOREST_TRUST_BINARY_DATA {
160
161 ULONG Length;
162 PUCHAR Buffer;
163
164 } LSA_FOREST_TRUST_BINARY_DATA, *PLSA_FOREST_TRUST_BINARY_DATA;
165
166 typedef enum {
167
168 ForestTrustTopLevelName,
169 ForestTrustTopLevelNameEx,
170 ForestTrustDomainInfo,
171 ForestTrustRecordTypeLast = ForestTrustDomainInfo
172
173 } LSA_FOREST_TRUST_RECORD_TYPE;
174
175 typedef struct _LSA_AUTH_INFORMATION {
176
177 LARGE_INTEGER LastUpdateTime;
178 ULONG AuthType;
179 ULONG AuthInfoLength;
180 PUCHAR AuthInfo;
181 } LSA_AUTH_INFORMATION, *PLSA_AUTH_INFORMATION;
182
183 typedef struct _TRUSTED_DOMAIN_AUTH_INFORMATION {
184
185 ULONG IncomingAuthInfos;
186 PLSA_AUTH_INFORMATION IncomingAuthenticationInformation;
187 PLSA_AUTH_INFORMATION IncomingPreviousAuthenticationInformation;
188 ULONG OutgoingAuthInfos;
189 PLSA_AUTH_INFORMATION OutgoingAuthenticationInformation;
190 PLSA_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation;
191
192 } TRUSTED_DOMAIN_AUTH_INFORMATION, *PTRUSTED_DOMAIN_AUTH_INFORMATION;
193
194 typedef struct _LSA_FOREST_TRUST_RECORD {
195
196 ULONG Flags;
197 LSA_FOREST_TRUST_RECORD_TYPE ForestTrustType;
198 LARGE_INTEGER Time;
199
200
201 union {
202
203 LSA_UNICODE_STRING TopLevelName;
204 LSA_FOREST_TRUST_DOMAIN_INFO DomainInfo;
205 LSA_FOREST_TRUST_BINARY_DATA Data;
206 } ForestTrustData;
207
208 } LSA_FOREST_TRUST_RECORD, *PLSA_FOREST_TRUST_RECORD;
209
210 typedef struct _LSA_TRANSLATED_SID {
211
212 SID_NAME_USE Use;
213 ULONG RelativeId;
214 LONG DomainIndex;
215
216 } LSA_TRANSLATED_SID, *PLSA_TRANSLATED_SID;
217
218 typedef struct _LSA_TRANSLATED_SID2 {
219
220 SID_NAME_USE Use;
221 PSID Sid;
222 LONG DomainIndex;
223 ULONG Flags;
224
225 } LSA_TRANSLATED_SID2, *PLSA_TRANSLATED_SID2;
226
227 typedef struct _LSA_TRANSLATED_NAME {
228
229 SID_NAME_USE Use;
230 LSA_UNICODE_STRING Name;
231 LONG DomainIndex;
232
233 } LSA_TRANSLATED_NAME, *PLSA_TRANSLATED_NAME;
234
235 typedef enum {
236
237 CollisionTdo,
238 CollisionXref,
239 CollisionOther
240
241 } LSA_FOREST_TRUST_COLLISION_RECORD_TYPE;
242
243 typedef struct _LSA_FOREST_TRUST_COLLISION_RECORD {
244
245 ULONG Index;
246 LSA_FOREST_TRUST_COLLISION_RECORD_TYPE Type;
247 ULONG Flags;
248 LSA_UNICODE_STRING Name;
249
250 } LSA_FOREST_TRUST_COLLISION_RECORD, *PLSA_FOREST_TRUST_COLLISION_RECORD;
251
252 typedef struct _LSA_FOREST_TRUST_COLLISION_INFORMATION {
253
254 ULONG RecordCount;
255 PLSA_FOREST_TRUST_COLLISION_RECORD * Entries;
256
257 } LSA_FOREST_TRUST_COLLISION_INFORMATION, *PLSA_FOREST_TRUST_COLLISION_INFORMATION;
258
259 typedef struct _TRUSTED_DOMAIN_INFORMATION_EX {
260
261 LSA_UNICODE_STRING Name;
262 LSA_UNICODE_STRING FlatName;
263 PSID Sid;
264 ULONG TrustDirection;
265 ULONG TrustType;
266 ULONG TrustAttributes;
267
268 } TRUSTED_DOMAIN_INFORMATION_EX, *PTRUSTED_DOMAIN_INFORMATION_EX;
269
270 typedef ULONG LSA_ENUMERATION_HANDLE, *PLSA_ENUMERATION_HANDLE;
271
272 typedef struct _LSA_TRUST_INFORMATION {
273
274 LSA_UNICODE_STRING Name;
275 PSID Sid;
276
277 } LSA_TRUST_INFORMATION, *PLSA_TRUST_INFORMATION;
278
279 typedef struct _LSA_REFERENCED_DOMAIN_LIST {
280
281 ULONG Entries;
282 PLSA_TRUST_INFORMATION Domains;
283
284 } LSA_REFERENCED_DOMAIN_LIST, *PLSA_REFERENCED_DOMAIN_LIST;
285
286 typedef enum _POLICY_DOMAIN_INFORMATION_CLASS {
287
288 PolicyDomainEfsInformation = 2,
289 PolicyDomainKerberosTicketInformation
290
291 } POLICY_DOMAIN_INFORMATION_CLASS, *PPOLICY_DOMAIN_INFORMATION_CLASS;
292
293 typedef struct _POLICY_PRIMARY_DOMAIN_INFO
294 {
295 LSA_UNICODE_STRING Name;
296 PSID Sid;
297 } POLICY_PRIMARY_DOMAIN_INFO, *PPOLICY_PRIMARY_DOMAIN_INFO;
298
299 typedef struct _POLICY_ACCOUNT_DOMAIN_INFO
300 {
301 LSA_UNICODE_STRING DomainName;
302 PSID DomainSid;
303 } POLICY_ACCOUNT_DOMAIN_INFO, *PPOLICY_ACCOUNT_DOMAIN_INFO;
304
305 typedef struct _LSA_FOREST_TRUST_INFORMATION {
306
307 ULONG RecordCount;
308 PLSA_FOREST_TRUST_RECORD * Entries;
309
310 } LSA_FOREST_TRUST_INFORMATION, *PLSA_FOREST_TRUST_INFORMATION;
311
312 typedef struct _SECURITY_LOGON_SESSION_DATA {
313 ULONG Size ;
314 LUID LogonId ;
315 LSA_UNICODE_STRING UserName ;
316 LSA_UNICODE_STRING LogonDomain ;
317 LSA_UNICODE_STRING AuthenticationPackage ;
318 ULONG LogonType ;
319 ULONG Session ;
320 PSID Sid ;
321 LARGE_INTEGER LogonTime ;
322 LSA_UNICODE_STRING LogonServer ;
323 LSA_UNICODE_STRING DnsDomainName ;
324 LSA_UNICODE_STRING Upn ;
325 } SECURITY_LOGON_SESSION_DATA, * PSECURITY_LOGON_SESSION_DATA ;
326
327 typedef enum _TRUSTED_INFORMATION_CLASS {
328
329 TrustedDomainNameInformation = 1,
330 TrustedControllersInformation,
331 TrustedPosixOffsetInformation,
332 TrustedPasswordInformation,
333 TrustedDomainInformationBasic,
334 TrustedDomainInformationEx,
335 TrustedDomainAuthInformation,
336 TrustedDomainFullInformation,
337 TrustedDomainAuthInformationInternal,
338 TrustedDomainFullInformationInternal,
339 TrustedDomainInformationEx2Internal,
340 TrustedDomainFullInformation2Internal,
341
342 } TRUSTED_INFORMATION_CLASS, *PTRUSTED_INFORMATION_CLASS;
343
344 ULONG
345 STDCALL
346 LsaNtStatusToWinError(NTSTATUS Status);
347 NTSTATUS
348 STDCALL
349 LsaOpenPolicy(PLSA_UNICODE_STRING lsaucs,PLSA_OBJECT_ATTRIBUTES lsaoa,ACCESS_MASK access,PLSA_HANDLE lsah);
350 NTSTATUS
351 STDCALL
352 LsaQueryInformationPolicy(LSA_HANDLE lsah,POLICY_INFORMATION_CLASS pic,PVOID* pv);
353 NTSTATUS
354 STDCALL
355 LsaFreeMemory(PVOID pv);
356 NTSTATUS
357 STDCALL
358 LsaClose(LSA_HANDLE ObjectHandle);
359 NTSTATUS
360 STDCALL
361 LsaAddAccountRights(
362 LSA_HANDLE PolicyHandle,
363 PSID AccountSid,
364 PLSA_UNICODE_STRING UserRights,
365 ULONG CountOfRights
366 );
367 NTSTATUS
368 STDCALL
369 LsaCreateTrustedDomainEx(
370 LSA_HANDLE PolicyHandle,
371 PTRUSTED_DOMAIN_INFORMATION_EX TrustedDomainInformation,
372 PTRUSTED_DOMAIN_AUTH_INFORMATION AuthenticationInformation,
373 ACCESS_MASK DesiredAccess,
374 PLSA_HANDLE TrustedDomainHandle
375 );
376 NTSTATUS
377 STDCALL
378 LsaDeleteTrustedDomain(
379 LSA_HANDLE PolicyHandle,
380 PSID TrustedDomainSid
381 );
382 NTSTATUS
383 STDCALL
384 LsaEnumerateAccountRights(
385 LSA_HANDLE PolicyHandle,
386 PSID AccountSid,
387 PLSA_UNICODE_STRING *UserRights,
388 PULONG CountOfRights
389 );
390 NTSTATUS
391 STDCALL
392 LsaEnumerateAccountsWithUserRight(
393 LSA_HANDLE PolicyHandle,
394 OPTIONAL PLSA_UNICODE_STRING UserRights,
395 PVOID *EnumerationBuffer,
396 PULONG CountReturned
397 );
398 NTSTATUS
399 STDCALL
400 LsaEnumerateTrustedDomains(
401 LSA_HANDLE PolicyHandle,
402 PLSA_ENUMERATION_HANDLE EnumerationContext,
403 PVOID *Buffer,
404 ULONG PreferedMaximumLength,
405 PULONG CountReturned
406 );
407 NTSTATUS
408 STDCALL
409 LsaEnumerateTrustedDomainsEx(
410 LSA_HANDLE PolicyHandle,
411 PLSA_ENUMERATION_HANDLE EnumerationContext,
412 PVOID *Buffer,
413 ULONG PreferedMaximumLength,
414 PULONG CountReturned
415 );
416 NTSTATUS
417 STDCALL
418 LsaLookupNames(
419 LSA_HANDLE PolicyHandle,
420 ULONG Count,
421 PLSA_UNICODE_STRING Names,
422 PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,
423 PLSA_TRANSLATED_SID *Sids
424 );
425 NTSTATUS
426 STDCALL
427 LsaLookupNames2(
428 LSA_HANDLE PolicyHandle,
429 ULONG Flags,
430 ULONG Count,
431 PLSA_UNICODE_STRING Names,
432 PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,
433 PLSA_TRANSLATED_SID2 *Sids
434 );
435 NTSTATUS
436 STDCALL
437 LsaLookupSids(
438 LSA_HANDLE PolicyHandle,
439 ULONG Count,
440 PSID *Sids,
441 PLSA_REFERENCED_DOMAIN_LIST *ReferencedDomains,
442 PLSA_TRANSLATED_NAME *Names
443 );
444 NTSTATUS
445 STDCALL
446 LsaOpenTrustedDomainByName(
447 LSA_HANDLE PolicyHandle,
448 PLSA_UNICODE_STRING TrustedDomainName,
449 ACCESS_MASK DesiredAccess,
450 PLSA_HANDLE TrustedDomainHandle
451 );
452 NTSTATUS
453 STDCALL
454 LsaQueryDomainInformationPolicy(
455 LSA_HANDLE PolicyHandle,
456 POLICY_DOMAIN_INFORMATION_CLASS InformationClass,
457 PVOID *Buffer
458 );
459 NTSTATUS
460 STDCALL
461 LsaQueryForestTrustInformation(
462 LSA_HANDLE PolicyHandle,
463 PLSA_UNICODE_STRING TrustedDomainName,
464 PLSA_FOREST_TRUST_INFORMATION * ForestTrustInfo
465 );
466 NTSTATUS
467 STDCALL
468 LsaQueryTrustedDomainInfoByName(
469 LSA_HANDLE PolicyHandle,
470 PLSA_UNICODE_STRING TrustedDomainName,
471 TRUSTED_INFORMATION_CLASS InformationClass,
472 PVOID *Buffer
473 );
474 NTSTATUS
475 STDCALL
476 LsaQueryTrustedDomainInfo(
477 LSA_HANDLE PolicyHandle,
478 PSID TrustedDomainSid,
479 TRUSTED_INFORMATION_CLASS InformationClass,
480 PVOID *Buffer
481 );
482 NTSTATUS
483 STDCALL
484 LsaRemoveAccountRights(
485 LSA_HANDLE PolicyHandle,
486 PSID AccountSid,
487 WINBOOL AllRights,
488 PLSA_UNICODE_STRING UserRights,
489 ULONG CountOfRights
490 );
491 NTSTATUS
492 STDCALL
493 LsaRetrievePrivateData(
494 LSA_HANDLE PolicyHandle,
495 PLSA_UNICODE_STRING KeyName,
496 PLSA_UNICODE_STRING * PrivateData
497 );
498 NTSTATUS
499 STDCALL
500 LsaSetDomainInformationPolicy(
501 LSA_HANDLE PolicyHandle,
502 POLICY_DOMAIN_INFORMATION_CLASS InformationClass,
503 PVOID Buffer
504 );
505 NTSTATUS
506 STDCALL
507 LsaSetInformationPolicy(
508 LSA_HANDLE PolicyHandle,
509 POLICY_INFORMATION_CLASS InformationClass,
510 PVOID Buffer
511 );
512 NTSTATUS
513 STDCALL
514 LsaSetForestTrustInformation(
515 LSA_HANDLE PolicyHandle,
516 PLSA_UNICODE_STRING TrustedDomainName,
517 PLSA_FOREST_TRUST_INFORMATION ForestTrustInfo,
518 WINBOOL CheckOnly,
519 PLSA_FOREST_TRUST_COLLISION_INFORMATION * CollisionInfo
520 );
521 NTSTATUS
522 STDCALL
523 LsaSetTrustedDomainInfoByName(
524 LSA_HANDLE PolicyHandle,
525 PLSA_UNICODE_STRING TrustedDomainName,
526 TRUSTED_INFORMATION_CLASS InformationClass,
527 PVOID Buffer
528 );
529 NTSTATUS
530 STDCALL
531 LsaSetTrustedDomainInformation(
532 LSA_HANDLE PolicyHandle,
533 PSID TrustedDomainSid,
534 TRUSTED_INFORMATION_CLASS InformationClass,
535 PVOID Buffer
536 );
537 NTSTATUS
538 STDCALL
539 LsaStorePrivateData(
540 LSA_HANDLE PolicyHandle,
541 PLSA_UNICODE_STRING KeyName,
542 PLSA_UNICODE_STRING PrivateData
543 );
544 NTSTATUS
545 STDCALL
546 LsaEnumerateLogonSessions(
547 PULONG LogonSessionCount,
548 PLUID * LogonSessionList
549 );
550
551 NTSTATUS
552 STDCALL
553 LsaGetLogonSessionData(
554 PLUID LogonId,
555 PSECURITY_LOGON_SESSION_DATA * ppLogonSessionData
556 );
557 NTSTATUS
558 STDCALL
559 LsaRegisterPolicyChangeNotification(
560 POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass,
561 HANDLE NotificationEventHandle
562 );
563
564 NTSTATUS
565 STDCALL
566 LsaUnregisterPolicyChangeNotification(
567 POLICY_NOTIFICATION_INFORMATION_CLASS InformationClass,
568 HANDLE NotificationEventHandle
569 );
570
571
572 #ifdef __cplusplus
573 } /* extern "C" */
574 #endif /* defined(__cplusplus) */
575
576 #endif /* !defined(__WINE_NTSECAPI_H) */
577
578 #endif /* __USE_W32API */