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