Create this branch to work on loading of different Kernel-Debugger DLL providers...
[reactos.git] / dll / win32 / lsasrv / lsasrv.h
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: Local Security Authority (LSA) Server
4 * FILE: reactos/dll/win32/lsasrv/lsasrv.h
5 * PURPOSE: Common header file
6 *
7 * PROGRAMMERS: Eric Kohl
8 */
9
10 #define WIN32_NO_STATUS
11 #define _INC_WINDOWS
12 #define COM_NO_WINDOWS_H
13 #include <stdarg.h>
14 #include <windef.h>
15 #include <winbase.h>
16 #include <winreg.h>
17 #define NTOS_MODE_USER
18 #include <ndk/cmfuncs.h>
19 #include <ndk/kefuncs.h>
20 #include <ndk/lpctypes.h>
21 #include <ndk/lpcfuncs.h>
22 #include <ndk/mmfuncs.h>
23 #include <ndk/obfuncs.h>
24 #include <ndk/psfuncs.h>
25 #include <ndk/rtlfuncs.h>
26 #include <ndk/setypes.h>
27 #include <ndk/umfuncs.h>
28
29 #include <ntsam.h>
30 #include <ntlsa.h>
31 //#include <ntsecapi.h>
32 #include <sddl.h>
33
34 //#include <string.h>
35
36 #include <lsass.h>
37 #include <lsa_s.h>
38
39 #include <wine/debug.h>
40
41
42 typedef enum _LSA_DB_OBJECT_TYPE
43 {
44 LsaDbIgnoreObject,
45 LsaDbPolicyObject,
46 LsaDbAccountObject,
47 LsaDbDomainObject,
48 LsaDbSecretObject
49 } LSA_DB_OBJECT_TYPE, *PLSA_DB_OBJECT_TYPE;
50
51 typedef struct _LSA_DB_OBJECT
52 {
53 ULONG Signature;
54 LSA_DB_OBJECT_TYPE ObjectType;
55 ULONG RefCount;
56 ACCESS_MASK Access;
57 HANDLE KeyHandle;
58 BOOLEAN Trusted;
59 struct _LSA_DB_OBJECT *ParentObject;
60 } LSA_DB_OBJECT, *PLSA_DB_OBJECT;
61
62 #define LSAP_DB_SIGNATURE 0x12345678
63
64
65 typedef struct _LSAP_POLICY_AUDIT_EVENTS_DATA
66 {
67 BOOLEAN AuditingMode;
68 DWORD MaximumAuditEventCount;
69 DWORD AuditEvents[0];
70 } LSAP_POLICY_AUDIT_EVENTS_DATA, *PLSAP_POLICY_AUDIT_EVENTS_DATA;
71
72 typedef struct _LSAP_LOGON_CONTEXT
73 {
74 LIST_ENTRY Entry;
75 HANDLE ClientProcessHandle;
76 HANDLE ConnectionHandle;
77 } LSAP_LOGON_CONTEXT, *PLSAP_LOGON_CONTEXT;
78
79 extern SID_IDENTIFIER_AUTHORITY NullSidAuthority;
80 extern SID_IDENTIFIER_AUTHORITY WorldSidAuthority;
81 extern SID_IDENTIFIER_AUTHORITY LocalSidAuthority;
82 extern SID_IDENTIFIER_AUTHORITY CreatorSidAuthority;
83 extern SID_IDENTIFIER_AUTHORITY NtAuthority;
84
85 extern PSID BuiltinDomainSid;
86 extern UNICODE_STRING BuiltinDomainName;
87 extern PSID AccountDomainSid;
88 extern UNICODE_STRING AccountDomainName;
89
90 /* authpackage.c */
91 NTSTATUS
92 LsapInitAuthPackages(VOID);
93
94 NTSTATUS
95 LsapLookupAuthenticationPackage(PLSA_API_MSG RequestMsg,
96 PLSAP_LOGON_CONTEXT LogonContext);
97
98 NTSTATUS
99 LsapCallAuthenticationPackage(PLSA_API_MSG RequestMsg,
100 PLSAP_LOGON_CONTEXT LogonContext);
101
102 NTSTATUS
103 LsapLogonUser(PLSA_API_MSG RequestMsg,
104 PLSAP_LOGON_CONTEXT LogonContext);
105
106 /* authport.c */
107 NTSTATUS
108 StartAuthenticationPort(VOID);
109
110 /* database.c */
111 NTSTATUS
112 LsapInitDatabase(VOID);
113
114 NTSTATUS
115 LsapCreateDbObject(IN PLSA_DB_OBJECT ParentObject,
116 IN LPWSTR ContainerName,
117 IN LPWSTR ObjectName,
118 IN LSA_DB_OBJECT_TYPE HandleType,
119 IN ACCESS_MASK DesiredAccess,
120 IN BOOLEAN Trusted,
121 OUT PLSA_DB_OBJECT *DbObject);
122
123 NTSTATUS
124 LsapOpenDbObject(IN PLSA_DB_OBJECT ParentObject,
125 IN LPWSTR ContainerName,
126 IN LPWSTR ObjectName,
127 IN LSA_DB_OBJECT_TYPE ObjectType,
128 IN ACCESS_MASK DesiredAccess,
129 IN BOOLEAN Trusted,
130 OUT PLSA_DB_OBJECT *DbObject);
131
132 NTSTATUS
133 LsapValidateDbObject(IN LSAPR_HANDLE Handle,
134 IN LSA_DB_OBJECT_TYPE HandleType,
135 IN ACCESS_MASK GrantedAccess,
136 OUT PLSA_DB_OBJECT *DbObject);
137
138 NTSTATUS
139 LsapCloseDbObject(IN PLSA_DB_OBJECT DbObject);
140
141 NTSTATUS
142 LsapDeleteDbObject(IN PLSA_DB_OBJECT DbObject);
143
144 NTSTATUS
145 LsapGetObjectAttribute(PLSA_DB_OBJECT DbObject,
146 LPWSTR AttributeName,
147 LPVOID AttributeData,
148 PULONG AttributeSize);
149
150 NTSTATUS
151 LsapSetObjectAttribute(PLSA_DB_OBJECT DbObject,
152 LPWSTR AttributeName,
153 LPVOID AttributeData,
154 ULONG AttributeSize);
155
156 NTSTATUS
157 LsapDeleteObjectAttribute(PLSA_DB_OBJECT DbObject,
158 LPWSTR AttributeName);
159
160 /* lookup.c */
161 NTSTATUS
162 LsapInitSids(VOID);
163
164 ULONG
165 LsapGetRelativeIdFromSid(PSID Sid);
166
167 NTSTATUS
168 LsapLookupNames(DWORD Count,
169 PRPC_UNICODE_STRING Names,
170 PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
171 PLSAPR_TRANSLATED_SIDS_EX2 TranslatedSids,
172 LSAP_LOOKUP_LEVEL LookupLevel,
173 DWORD *MappedCount,
174 DWORD LookupOptions,
175 DWORD ClientRevision);
176
177 NTSTATUS
178 LsapLookupSids(PLSAPR_SID_ENUM_BUFFER SidEnumBuffer,
179 PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
180 PLSAPR_TRANSLATED_NAMES_EX TranslatedNames,
181 LSAP_LOOKUP_LEVEL LookupLevel,
182 DWORD *MappedCount,
183 DWORD LookupOptions,
184 DWORD ClientRevision);
185
186 /* lsarpc.c */
187 VOID
188 LsarStartRpcServer(VOID);
189
190 /* policy.c */
191 NTSTATUS
192 LsarQueryAuditLog(PLSA_DB_OBJECT PolicyObject,
193 PLSAPR_POLICY_INFORMATION *PolicyInformation);
194
195 NTSTATUS
196 LsarQueryAuditEvents(PLSA_DB_OBJECT PolicyObject,
197 PLSAPR_POLICY_INFORMATION *PolicyInformation);
198
199 NTSTATUS
200 LsarQueryPrimaryDomain(PLSA_DB_OBJECT PolicyObject,
201 PLSAPR_POLICY_INFORMATION *PolicyInformation);
202
203 NTSTATUS
204 LsarQueryPdAccount(PLSA_DB_OBJECT PolicyObject,
205 PLSAPR_POLICY_INFORMATION *PolicyInformation);
206
207 NTSTATUS
208 LsarQueryAccountDomain(PLSA_DB_OBJECT PolicyObject,
209 PLSAPR_POLICY_INFORMATION *PolicyInformation);
210
211 NTSTATUS
212 LsarQueryServerRole(PLSA_DB_OBJECT PolicyObject,
213 PLSAPR_POLICY_INFORMATION *PolicyInformation);
214
215 NTSTATUS
216 LsarQueryReplicaSource(PLSA_DB_OBJECT PolicyObject,
217 PLSAPR_POLICY_INFORMATION *PolicyInformation);
218
219 NTSTATUS
220 LsarQueryDefaultQuota(PLSA_DB_OBJECT PolicyObject,
221 PLSAPR_POLICY_INFORMATION *PolicyInformation);
222
223 NTSTATUS
224 LsarQueryModification(PLSA_DB_OBJECT PolicyObject,
225 PLSAPR_POLICY_INFORMATION *PolicyInformation);
226
227 NTSTATUS
228 LsarQueryAuditFull(PLSA_DB_OBJECT PolicyObject,
229 PLSAPR_POLICY_INFORMATION *PolicyInformation);
230
231 NTSTATUS
232 LsarQueryDnsDomain(PLSA_DB_OBJECT PolicyObject,
233 PLSAPR_POLICY_INFORMATION *PolicyInformation);
234
235 NTSTATUS
236 LsarQueryDnsDomainInt(PLSA_DB_OBJECT PolicyObject,
237 PLSAPR_POLICY_INFORMATION *PolicyInformation);
238
239 NTSTATUS
240 LsarQueryLocalAccountDomain(PLSA_DB_OBJECT PolicyObject,
241 PLSAPR_POLICY_INFORMATION *PolicyInformation);
242
243 NTSTATUS
244 LsarSetAuditLog(PLSA_DB_OBJECT PolicyObject,
245 PPOLICY_AUDIT_LOG_INFO Info);
246
247 NTSTATUS
248 LsarSetAuditEvents(PLSA_DB_OBJECT PolicyObject,
249 PLSAPR_POLICY_AUDIT_EVENTS_INFO Info);
250
251 NTSTATUS
252 LsarSetPrimaryDomain(PLSA_DB_OBJECT PolicyObject,
253 PLSAPR_POLICY_PRIMARY_DOM_INFO Info);
254
255 NTSTATUS
256 LsarSetAccountDomain(PLSA_DB_OBJECT PolicyObject,
257 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info);
258
259 NTSTATUS
260 LsarSetServerRole(PLSA_DB_OBJECT PolicyObject,
261 PPOLICY_LSA_SERVER_ROLE_INFO Info);
262
263 NTSTATUS
264 LsarSetReplicaSource(PLSA_DB_OBJECT PolicyObject,
265 PPOLICY_LSA_REPLICA_SRCE_INFO Info);
266
267 NTSTATUS
268 LsarSetDefaultQuota(PLSA_DB_OBJECT PolicyObject,
269 PPOLICY_DEFAULT_QUOTA_INFO Info);
270
271 NTSTATUS
272 LsarSetModification(PLSA_DB_OBJECT PolicyObject,
273 PPOLICY_MODIFICATION_INFO Info);
274
275 NTSTATUS
276 LsarSetAuditFull(PLSA_DB_OBJECT PolicyObject,
277 PPOLICY_AUDIT_FULL_QUERY_INFO Info);
278
279 NTSTATUS
280 LsarSetDnsDomain(PLSA_DB_OBJECT PolicyObject,
281 PLSAPR_POLICY_DNS_DOMAIN_INFO Info);
282
283 NTSTATUS
284 LsarSetDnsDomainInt(PLSA_DB_OBJECT PolicyObject,
285 PLSAPR_POLICY_DNS_DOMAIN_INFO Info);
286
287 NTSTATUS
288 LsarSetLocalAccountDomain(PLSA_DB_OBJECT PolicyObject,
289 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info);
290
291 /* privileges.c */
292 NTSTATUS
293 LsarpLookupPrivilegeName(PLUID Value,
294 PRPC_UNICODE_STRING *Name);
295
296 NTSTATUS
297 LsarpLookupPrivilegeValue(PRPC_UNICODE_STRING Name,
298 PLUID Value);
299
300 NTSTATUS
301 LsarpEnumeratePrivileges(DWORD *EnumerationContext,
302 PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer,
303 DWORD PreferedMaximumLength);
304
305 NTSTATUS
306 LsapLookupAccountRightName(ULONG RightValue,
307 PRPC_UNICODE_STRING *Name);
308
309 /* registry.h */
310 NTSTATUS
311 LsapRegCloseKey(IN HANDLE KeyHandle);
312
313 NTSTATUS
314 LsapRegCreateKey(IN HANDLE ParentKeyHandle,
315 IN LPCWSTR KeyName,
316 IN ACCESS_MASK DesiredAccess,
317 OUT HANDLE KeyHandle);
318
319 NTSTATUS
320 LsapRegDeleteSubKey(IN HANDLE ParentKeyHandle,
321 IN LPCWSTR KeyName);
322
323 NTSTATUS
324 LsapRegDeleteKey(IN HANDLE KeyHandle);
325
326 NTSTATUS
327 LsapRegEnumerateSubKey(IN HANDLE KeyHandle,
328 IN ULONG Index,
329 IN ULONG Length,
330 OUT LPWSTR Buffer);
331
332 NTSTATUS
333 LsapRegOpenKey(IN HANDLE ParentKeyHandle,
334 IN LPCWSTR KeyName,
335 IN ACCESS_MASK DesiredAccess,
336 OUT HANDLE KeyHandle);
337
338 NTSTATUS
339 LsapRegQueryKeyInfo(IN HANDLE KeyHandle,
340 OUT PULONG SubKeyCount,
341 OUT PULONG ValueCount);
342
343 NTSTATUS
344 LsapRegDeleteValue(IN HANDLE KeyHandle,
345 IN LPWSTR ValueName);
346
347 NTSTATUS
348 LsapRegEnumerateValue(IN HANDLE KeyHandle,
349 IN ULONG Index,
350 OUT LPWSTR Name,
351 IN OUT PULONG NameLength,
352 OUT PULONG Type OPTIONAL,
353 OUT PVOID Data OPTIONAL,
354 IN OUT PULONG DataLength OPTIONAL);
355
356 NTSTATUS
357 LsapRegQueryValue(IN HANDLE KeyHandle,
358 IN LPWSTR ValueName,
359 OUT PULONG Type OPTIONAL,
360 OUT LPVOID Data OPTIONAL,
361 IN OUT PULONG DataLength OPTIONAL);
362
363 NTSTATUS
364 LsapRegSetValue(IN HANDLE KeyHandle,
365 IN LPWSTR ValueName,
366 IN ULONG Type,
367 IN LPVOID Data,
368 IN ULONG DataLength);
369
370 /* security.c */
371 NTSTATUS
372 LsapCreatePolicySd(PSECURITY_DESCRIPTOR *PolicySd,
373 PULONG PolicySdSize);
374
375 NTSTATUS
376 LsapCreateAccountSd(PSECURITY_DESCRIPTOR *AccountSd,
377 PULONG AccountSdSize);
378
379 NTSTATUS
380 LsapCreateSecretSd(PSECURITY_DESCRIPTOR *SecretSd,
381 PULONG SecretSdSize);
382
383 /* EOF */