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