3239376c81fccab4910cdd28d8446d65618c82ad
[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 LsarSetPrimaryDomain(PLSA_DB_OBJECT PolicyObject,
206 PLSAPR_POLICY_PRIMARY_DOM_INFO Info);
207
208 NTSTATUS
209 LsarSetAccountDomain(PLSA_DB_OBJECT PolicyObject,
210 PLSAPR_POLICY_ACCOUNT_DOM_INFO Info);
211
212 NTSTATUS
213 LsarSetDnsDomain(PLSA_DB_OBJECT PolicyObject,
214 PLSAPR_POLICY_DNS_DOMAIN_INFO Info);
215
216 /* privileges.c */
217 NTSTATUS
218 LsarpLookupPrivilegeName(PLUID Value,
219 PUNICODE_STRING *Name);
220
221 NTSTATUS
222 LsarpLookupPrivilegeValue(PUNICODE_STRING Name,
223 PLUID Value);
224
225 NTSTATUS
226 LsarpEnumeratePrivileges(DWORD *EnumerationContext,
227 PLSAPR_PRIVILEGE_ENUM_BUFFER EnumerationBuffer,
228 DWORD PreferedMaximumLength);
229
230 /* security.c */
231 NTSTATUS
232 LsapCreatePolicySd(PSECURITY_DESCRIPTOR *PolicySd,
233 PULONG PolicySdSize);
234
235 NTSTATUS
236 LsapCreateAccountSd(PSECURITY_DESCRIPTOR *AccountSd,
237 PULONG AccountSdSize);
238
239 /* EOF */