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