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