[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 #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 LsapGetObjectAttribute(PLSA_DB_OBJECT DbObject,
111 LPWSTR AttributeName,
112 LPVOID AttributeData,
113 PULONG AttributeSize);
114
115 NTSTATUS
116 LsapSetObjectAttribute(PLSA_DB_OBJECT DbObject,
117 LPWSTR AttributeName,
118 LPVOID AttributeData,
119 ULONG AttributeSize);
120
121 /* lookup.c */
122 NTSTATUS
123 LsapInitSids(VOID);
124
125 ULONG
126 LsapGetRelativeIdFromSid(PSID Sid);
127
128 NTSTATUS
129 LsapLookupNames(DWORD Count,
130 PRPC_UNICODE_STRING Names,
131 PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
132 PLSAPR_TRANSLATED_SIDS_EX2 TranslatedSids,
133 LSAP_LOOKUP_LEVEL LookupLevel,
134 DWORD *MappedCount,
135 DWORD LookupOptions,
136 DWORD ClientRevision);
137
138 NTSTATUS
139 LsapLookupSids(PLSAPR_SID_ENUM_BUFFER SidEnumBuffer,
140 PLSAPR_REFERENCED_DOMAIN_LIST *ReferencedDomains,
141 PLSAPR_TRANSLATED_NAMES_EX TranslatedNames,
142 LSAP_LOOKUP_LEVEL LookupLevel,
143 DWORD *MappedCount,
144 DWORD LookupOptions,
145 DWORD ClientRevision);
146
147 /* lsarpc.c */
148 VOID
149 LsarStartRpcServer(VOID);
150
151 /* policy.c */
152 NTSTATUS
153 LsarQueryAuditLog(PLSA_DB_OBJECT PolicyObject,
154 PLSAPR_POLICY_INFORMATION *PolicyInformation);
155
156 NTSTATUS
157 LsarQueryAuditEvents(PLSA_DB_OBJECT PolicyObject,
158 PLSAPR_POLICY_INFORMATION *PolicyInformation);
159
160 NTSTATUS
161 LsarQueryPrimaryDomain(PLSA_DB_OBJECT PolicyObject,
162 PLSAPR_POLICY_INFORMATION *PolicyInformation);
163
164 NTSTATUS
165 LsarQueryPdAccount(PLSA_DB_OBJECT PolicyObject,
166 PLSAPR_POLICY_INFORMATION *PolicyInformation);
167
168 NTSTATUS
169 LsarQueryAccountDomain(PLSA_DB_OBJECT PolicyObject,
170 PLSAPR_POLICY_INFORMATION *PolicyInformation);
171
172 NTSTATUS
173 LsarQueryServerRole(PLSA_DB_OBJECT PolicyObject,
174 PLSAPR_POLICY_INFORMATION *PolicyInformation);
175
176 NTSTATUS
177 LsarQueryReplicaSource(PLSA_DB_OBJECT PolicyObject,
178 PLSAPR_POLICY_INFORMATION *PolicyInformation);
179
180 NTSTATUS
181 LsarQueryDefaultQuota(PLSA_DB_OBJECT PolicyObject,
182 PLSAPR_POLICY_INFORMATION *PolicyInformation);
183
184 NTSTATUS
185 LsarQueryModification(PLSA_DB_OBJECT PolicyObject,
186 PLSAPR_POLICY_INFORMATION *PolicyInformation);
187
188 NTSTATUS
189 LsarQueryAuditFull(PLSA_DB_OBJECT PolicyObject,
190 PLSAPR_POLICY_INFORMATION *PolicyInformation);
191
192 NTSTATUS
193 LsarQueryDnsDomain(PLSA_DB_OBJECT PolicyObject,
194 PLSAPR_POLICY_INFORMATION *PolicyInformation);
195
196 NTSTATUS
197 LsarQueryDnsDomainInt(PLSA_DB_OBJECT PolicyObject,
198 PLSAPR_POLICY_INFORMATION *PolicyInformation);
199
200 NTSTATUS
201 LsarQueryLocalAccountDomain(PLSA_DB_OBJECT PolicyObject,
202 PLSAPR_POLICY_INFORMATION *PolicyInformation);
203
204 NTSTATUS
205 LsarSetAuditLog(PLSA_DB_OBJECT PolicyObject,
206 PPOLICY_AUDIT_LOG_INFO Info);
207
208 NTSTATUS
209 LsarSetAuditEvents(PLSA_DB_OBJECT PolicyObject,
210 PLSAPR_POLICY_AUDIT_EVENTS_INFO Info);
211
212 NTSTATUS
213 LsarSetPrimaryDomain(PLSA_DB_OBJECT PolicyObject,
214 PLSAPR_POLICY_PRIMARY_DOM_INFO Info);
215
216 NTSTATUS
217 LsarSetAccountDomain(PLSA_DB_OBJECT PolicyObject,
218 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info);
219
220 NTSTATUS
221 LsarSetServerRole(PLSA_DB_OBJECT PolicyObject,
222 PPOLICY_LSA_SERVER_ROLE_INFO Info);
223
224 NTSTATUS
225 LsarSetReplicaSource(PLSA_DB_OBJECT PolicyObject,
226 PPOLICY_LSA_REPLICA_SRCE_INFO Info);
227
228 NTSTATUS
229 LsarSetDefaultQuota(PLSA_DB_OBJECT PolicyObject,
230 PPOLICY_DEFAULT_QUOTA_INFO Info);
231
232 NTSTATUS
233 LsarSetModification(PLSA_DB_OBJECT PolicyObject,
234 PPOLICY_MODIFICATION_INFO Info);
235
236 NTSTATUS
237 LsarSetAuditFull(PLSA_DB_OBJECT PolicyObject,
238 PPOLICY_AUDIT_FULL_QUERY_INFO Info);
239
240 NTSTATUS
241 LsarSetDnsDomain(PLSA_DB_OBJECT PolicyObject,
242 PLSAPR_POLICY_DNS_DOMAIN_INFO Info);
243
244 NTSTATUS
245 LsarSetDnsDomainInt(PLSA_DB_OBJECT PolicyObject,
246 PLSAPR_POLICY_DNS_DOMAIN_INFO Info);
247
248 NTSTATUS
249 LsarSetLocalAccountDomain(PLSA_DB_OBJECT PolicyObject,
250 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info);
251
252 /* privileges.c */
253 NTSTATUS
254 LsarpLookupPrivilegeName(PLUID Value,
255 PRPC_UNICODE_STRING *Name);
256
257 NTSTATUS
258 LsarpLookupPrivilegeValue(PRPC_UNICODE_STRING Name,
259 PLUID Value);
260
261 NTSTATUS
262 LsarpEnumeratePrivileges(DWORD *EnumerationContext,
263 PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer,
264 DWORD PreferedMaximumLength);
265
266 NTSTATUS
267 LsapLookupAccountRightName(ULONG RightValue,
268 PRPC_UNICODE_STRING *Name);
269
270 /* registry.h */
271 NTSTATUS
272 LsapRegCloseKey(IN HANDLE KeyHandle);
273
274 NTSTATUS
275 LsapRegCreateKey(IN HANDLE ParentKeyHandle,
276 IN LPCWSTR KeyName,
277 IN ACCESS_MASK DesiredAccess,
278 OUT HANDLE KeyHandle);
279
280 NTSTATUS
281 LsapRegDeleteKey(IN HANDLE ParentKeyHandle,
282 IN LPCWSTR KeyName);
283
284 NTSTATUS
285 LsapRegEnumerateSubKey(IN HANDLE KeyHandle,
286 IN ULONG Index,
287 IN ULONG Length,
288 OUT LPWSTR Buffer);
289
290 NTSTATUS
291 LsapRegOpenKey(IN HANDLE ParentKeyHandle,
292 IN LPCWSTR KeyName,
293 IN ACCESS_MASK DesiredAccess,
294 OUT HANDLE KeyHandle);
295
296 NTSTATUS
297 LsapRegQueryKeyInfo(IN HANDLE KeyHandle,
298 OUT PULONG SubKeyCount,
299 OUT PULONG ValueCount);
300
301 NTSTATUS
302 LsapRegDeleteValue(IN HANDLE KeyHandle,
303 IN LPWSTR ValueName);
304
305 NTSTATUS
306 LsapRegEnumerateValue(IN HANDLE KeyHandle,
307 IN ULONG Index,
308 OUT LPWSTR Name,
309 IN OUT PULONG NameLength,
310 OUT PULONG Type OPTIONAL,
311 OUT PVOID Data OPTIONAL,
312 IN OUT PULONG DataLength OPTIONAL);
313
314 NTSTATUS
315 LsapRegQueryValue(IN HANDLE KeyHandle,
316 IN LPWSTR ValueName,
317 OUT PULONG Type OPTIONAL,
318 OUT LPVOID Data OPTIONAL,
319 IN OUT PULONG DataLength OPTIONAL);
320
321 NTSTATUS
322 LsapRegSetValue(IN HANDLE KeyHandle,
323 IN LPWSTR ValueName,
324 IN ULONG Type,
325 IN LPVOID Data,
326 IN ULONG DataLength);
327
328 /* security.c */
329 NTSTATUS
330 LsapCreatePolicySd(PSECURITY_DESCRIPTOR *PolicySd,
331 PULONG PolicySdSize);
332
333 NTSTATUS
334 LsapCreateAccountSd(PSECURITY_DESCRIPTOR *AccountSd,
335 PULONG AccountSdSize);
336
337 NTSTATUS
338 LsapCreateSecretSd(PSECURITY_DESCRIPTOR *SecretSd,
339 PULONG SecretSdSize);
340
341 /* EOF */