4 #pragma GCC system_header
15 #define ISC_REQ_DELEGATE 1
16 #define ISC_REQ_MUTUAL_AUTH 2
17 #define ISC_REQ_REPLAY_DETECT 4
18 #define ISC_REQ_SEQUENCE_DETECT 8
19 #define ISC_REQ_CONFIDENTIALITY 16
20 #define ISC_REQ_USE_SESSION_KEY 32
21 #define ISC_REQ_PROMPT_FOR_CREDS 64
22 #define ISC_REQ_USE_SUPPLIED_CREDS 128
23 #define ISC_REQ_ALLOCATE_MEMORY 256
24 #define ISC_REQ_USE_DCE_STYLE 512
25 #define ISC_REQ_DATAGRAM 1024
26 #define ISC_REQ_CONNECTION 2048
27 #define ISC_REQ_EXTENDED_ERROR 16384
28 #define ISC_REQ_STREAM 32768
29 #define ISC_REQ_INTEGRITY 65536
30 #define ISC_REQ_MANUAL_CRED_VALIDATION 524288
31 #define ISC_REQ_HTTP 268435456
33 #define ISC_RET_EXTENDED_ERROR 16384
35 #define ASC_REQ_DELEGATE 1
36 #define ASC_REQ_MUTUAL_AUTH 2
37 #define ASC_REQ_REPLAY_DETECT 4
38 #define ASC_REQ_SEQUENCE_DETECT 8
39 #define ASC_REQ_CONFIDENTIALITY 16
40 #define ASC_REQ_USE_SESSION_KEY 32
41 #define ASC_REQ_ALLOCATE_MEMORY 256
42 #define ASC_REQ_USE_DCE_STYLE 512
43 #define ASC_REQ_DATAGRAM 1024
44 #define ASC_REQ_CONNECTION 2048
45 #define ASC_REQ_EXTENDED_ERROR 32768
46 #define ASC_REQ_STREAM 65536
47 #define ASC_REQ_INTEGRITY 131072
49 #define SECURITY_NATIVE_DREP 16
50 #define SECURITY_NETWORK_DREP 0
52 #define SECPKG_STATE_ENCRYPTION_PERMITTED 0x01
53 #define SECPKG_STATE_STRONG_ENCRYPTION_PERMITTED 0x02
54 #define SECPKG_STATE_DOMAIN_CONTROLLER 0x04
55 #define SECPKG_STATE_WORKSTATION 0x08
56 #define SECPKG_STATE_STANDALONE 0x10
58 /* enum definitions for Secure Service Provider/Authentication Packages */
59 typedef enum _LSA_TOKEN_INFORMATION_TYPE
{
60 LsaTokenInformationNull
,
62 } LSA_TOKEN_INFORMATION_TYPE
, *PLSA_TOKEN_INFORMATION_TYPE
;
63 typedef enum _SECPKG_EXTENDED_INFORMATION_CLASS
67 SecpkgMutualAuthLevel
,
69 } SECPKG_EXTENDED_INFORMATION_CLASS
;
70 typedef enum _SECPKG_NAME_TYPE
{
77 /* struct definitions for SSP/AP */
78 typedef struct _SECPKG_PRIMARY_CRED
{
80 UNICODE_STRING DownlevelName
;
81 UNICODE_STRING DomainName
;
82 UNICODE_STRING Password
;
83 UNICODE_STRING OldPassword
;
86 UNICODE_STRING DnsDomainName
;
88 UNICODE_STRING LogonServer
;
89 UNICODE_STRING Spare1
;
90 UNICODE_STRING Spare2
;
91 UNICODE_STRING Spare3
;
92 UNICODE_STRING Spare4
;
93 } SECPKG_PRIMARY_CRED
, *PSECPKG_PRIMARY_CRED
;
94 typedef struct _SECPKG_SUPPLEMENTAL_CRED
{
95 UNICODE_STRING PackageName
;
98 } SECPKG_SUPPLEMENTAL_CRED
, *PSECPKG_SUPPLEMENTAL_CRED
;
99 typedef struct _SECPKG_SUPPLEMENTAL_CRED_ARRAY
{
100 ULONG CredentialCount
;
101 SECPKG_SUPPLEMENTAL_CRED Credentials
[1];
102 } SECPKG_SUPPLEMENTAL_CRED_ARRAY
, *PSECPKG_SUPPLEMENTAL_CRED_ARRAY
;
103 typedef struct _SECPKG_PARAMETERS
{
108 UNICODE_STRING DomainName
;
109 UNICODE_STRING DnsDomainName
;
111 } SECPKG_PARAMETERS
, *PSECPKG_PARAMETERS
,
112 SECPKG_EVENT_DOMAIN_CHANGE
, *PSECPKG_EVENT_DOMAIN_CHANGE
;
113 typedef struct _SECPKG_CLIENT_INFO
{
117 BOOLEAN HasTcbPrivilege
;
118 BOOLEAN Impersonating
;
120 } SECPKG_CLIENT_INFO
,
121 *PSECPKG_CLIENT_INFO
;
122 typedef struct _SECURITY_USER_DATA
{
123 SECURITY_STRING UserName
;
124 SECURITY_STRING LogonDomainName
;
125 SECURITY_STRING LogonServer
;
127 } SECURITY_USER_DATA
, *PSECURITY_USER_DATA
,
128 SecurityUserData
, *PSecurityUserData
;
129 typedef struct _SECPKG_GSS_INFO
{
130 ULONG EncodedIdLength
;
132 } SECPKG_GSS_INFO
, *PSECPKG_GSS_INFO
;
133 typedef struct _SECPKG_CONTEXT_THUNKS
{
134 ULONG InfoLevelCount
;
136 } SECPKG_CONTEXT_THUNKS
, *PSECPKG_CONTEXT_THUNKS
;
137 typedef struct _SECPKG_MUTUAL_AUTH_LEVEL
{
138 ULONG MutualAuthLevel
;
139 } SECPKG_MUTUAL_AUTH_LEVEL
, *PSECPKG_MUTUAL_AUTH_LEVEL
;
140 typedef struct _SECPKG_CALL_INFO
{
145 } SECPKG_CALL_INFO
, *PSECPKG_CALL_INFO
;
146 typedef struct _SECPKG_EXTENDED_INFORMATION
{
147 SECPKG_EXTENDED_INFORMATION_CLASS Class
;
149 SECPKG_GSS_INFO GssInfo
;
150 SECPKG_CONTEXT_THUNKS ContextThunks
;
151 SECPKG_MUTUAL_AUTH_LEVEL MutualAuthLevel
;
153 } SECPKG_EXTENDED_INFORMATION
, *PSECPKG_EXTENDED_INFORMATION
;
155 /* callbacks implemented by SSP/AP dlls and called by the LSA */
156 typedef VOID (NTAPI
*PLSA_CALLBACK_FUNCTION
)(ULONG_PTR
, ULONG_PTR
, PSecBuffer
,
159 /* misc typedefs used in the below prototypes */
160 typedef PVOID
*PLSA_CLIENT_REQUEST
;
161 typedef ULONG LSA_SEC_HANDLE
, *PLSA_SEC_HANDLE
;
162 typedef LPTHREAD_START_ROUTINE SEC_THREAD_START
;
163 typedef PSECURITY_ATTRIBUTES SEC_ATTRS
;
165 /* functions used by SSP/AP obtainable by dispatch tables */
166 typedef NTSTATUS (NTAPI
*PLSA_REGISTER_CALLBACK
)(ULONG
, PLSA_CALLBACK_FUNCTION
);
167 typedef NTSTATUS (NTAPI
*PLSA_CREATE_LOGON_SESSION
)(PLUID
);
168 typedef NTSTATUS (NTAPI
*PLSA_DELETE_LOGON_SESSION
)(PLUID
);
169 typedef NTSTATUS (NTAPI
*PLSA_ADD_CREDENTIAL
)(PLUID
, ULONG
, PLSA_STRING
,
171 typedef NTSTATUS (NTAPI
*PLSA_GET_CREDENTIALS
)(PLUID
, ULONG
, PULONG
, BOOLEAN
,
172 PLSA_STRING
, PULONG
, PLSA_STRING
);
173 typedef NTSTATUS (NTAPI
*PLSA_DELETE_CREDENTIAL
)(PLUID
, ULONG
, PLSA_STRING
);
174 typedef PVOID (NTAPI
*PLSA_ALLOCATE_LSA_HEAP
)(ULONG
);
175 typedef VOID (NTAPI
*PLSA_FREE_LSA_HEAP
)(PVOID
);
176 typedef NTSTATUS (NTAPI
*PLSA_ALLOCATE_CLIENT_BUFFER
)(PLSA_CLIENT_REQUEST
,
178 typedef NTSTATUS (NTAPI
*PLSA_FREE_CLIENT_BUFFER
)(PLSA_CLIENT_REQUEST
, PVOID
);
179 typedef NTSTATUS (NTAPI
*PLSA_COPY_TO_CLIENT_BUFFER
)(PLSA_CLIENT_REQUEST
, ULONG
,
181 typedef NTSTATUS (NTAPI
*PLSA_COPY_FROM_CLIENT_BUFFER
)(PLSA_CLIENT_REQUEST
,
182 ULONG
, PVOID
, PVOID
);
183 typedef NTSTATUS (NTAPI
*PLSA_IMPERSONATE_CLIENT
)(void);
184 typedef NTSTATUS (NTAPI
*PLSA_UNLOAD_PACKAGE
)(void);
185 typedef NTSTATUS (NTAPI
*PLSA_DUPLICATE_HANDLE
)(HANDLE
, PHANDLE
);
186 typedef NTSTATUS (NTAPI
*PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS
)(PLUID
, ULONG
,
188 typedef HANDLE (NTAPI
*PLSA_CREATE_THREAD
)(SEC_ATTRS
, ULONG
, SEC_THREAD_START
,
189 PVOID
, ULONG
, PULONG
);
190 typedef NTSTATUS (NTAPI
*PLSA_GET_CLIENT_INFO
)(PSECPKG_CLIENT_INFO
);
191 typedef HANDLE (NTAPI
*PLSA_REGISTER_NOTIFICATION
)(SEC_THREAD_START
, PVOID
,
192 ULONG
, ULONG
, ULONG
, ULONG
, HANDLE
);
193 typedef NTSTATUS (NTAPI
*PLSA_CANCEL_NOTIFICATION
)(HANDLE
);
194 typedef NTSTATUS (NTAPI
*PLSA_MAP_BUFFER
)(PSecBuffer
, PSecBuffer
);
195 typedef NTSTATUS (NTAPI
*PLSA_CREATE_TOKEN
)(PLUID
, PTOKEN_SOURCE
,
196 SECURITY_LOGON_TYPE
, SECURITY_IMPERSONATION_LEVEL
, LSA_TOKEN_INFORMATION_TYPE
,
197 PVOID
, PTOKEN_GROUPS
, PUNICODE_STRING
, PUNICODE_STRING
, PUNICODE_STRING
,
198 PUNICODE_STRING
, PHANDLE
, PNTSTATUS
);
199 typedef VOID (NTAPI
*PLSA_AUDIT_LOGON
)(NTSTATUS
, NTSTATUS
, PUNICODE_STRING
,
200 PUNICODE_STRING
, PUNICODE_STRING
, OPTIONAL PSID
, SECURITY_LOGON_TYPE
,
201 PTOKEN_SOURCE
, PLUID
);
202 typedef NTSTATUS (NTAPI
*PLSA_CALL_PACKAGE
)(PUNICODE_STRING
, PVOID
, ULONG
,
203 PVOID
*, PULONG
, PNTSTATUS
);
204 typedef VOID (NTAPI
*PLSA_FREE_LSA_HEAP
)(PVOID
);
205 typedef BOOLEAN (NTAPI
*PLSA_GET_CALL_INFO
)(PSECPKG_CALL_INFO
);
206 typedef NTSTATUS (NTAPI
*PLSA_CALL_PACKAGEEX
)(PUNICODE_STRING
, PVOID
, PVOID
,
207 ULONG
, PVOID
*, PULONG
, PNTSTATUS
);
208 typedef PVOID (NTAPI
*PLSA_CREATE_SHARED_MEMORY
)(ULONG
, ULONG
);
209 typedef PVOID (NTAPI
*PLSA_ALLOCATE_SHARED_MEMORY
)(PVOID
, ULONG
);
210 typedef VOID (NTAPI
*PLSA_FREE_SHARED_MEMORY
)(PVOID
, PVOID
);
211 typedef BOOLEAN (NTAPI
*PLSA_DELETE_SHARED_MEMORY
)(PVOID
);
212 typedef NTSTATUS (NTAPI
*PLSA_OPEN_SAM_USER
)(PSECURITY_STRING
, SECPKG_NAME_TYPE
,
213 PSECURITY_STRING
, BOOLEAN
, ULONG
, PVOID
*);
214 typedef NTSTATUS (NTAPI
*PLSA_GET_USER_CREDENTIALS
)(PVOID
, PVOID
*, PULONG
,
216 typedef NTSTATUS (NTAPI
*PLSA_GET_USER_AUTH_DATA
)(PVOID
, PUCHAR
*, PULONG
);
217 typedef NTSTATUS (NTAPI
*PLSA_CLOSE_SAM_USER
)(PVOID
);
218 typedef NTSTATUS (NTAPI
*PLSA_CONVERT_AUTH_DATA_TO_TOKEN
)(PVOID
, ULONG
,
219 SECURITY_IMPERSONATION_LEVEL
, PTOKEN_SOURCE
, SECURITY_LOGON_TYPE
,
220 PUNICODE_STRING
, PHANDLE
, PLUID
, PUNICODE_STRING
, PNTSTATUS
);
221 typedef NTSTATUS (NTAPI
*PLSA_CLIENT_CALLBACK
)(PCHAR
, ULONG_PTR
, ULONG_PTR
,
222 PSecBuffer
, PSecBuffer
);
223 typedef NTSTATUS (NTAPI
*PLSA_UPDATE_PRIMARY_CREDENTIALS
)(PSECPKG_PRIMARY_CRED
, PSECPKG_SUPPLEMENTAL_CRED_ARRAY
);
224 typedef NTSTATUS (NTAPI
*PLSA_GET_AUTH_DATA_FOR_USER
)(PSECURITY_STRING
,
225 SECPKG_NAME_TYPE
, PSECURITY_STRING
, PUCHAR
*, PULONG
, PUNICODE_STRING
);
226 typedef NTSTATUS (NTAPI
*PLSA_CRACK_SINGLE_NAME
)(ULONG
, BOOLEAN
,
227 PUNICODE_STRING
, PUNICODE_STRING
, ULONG
, PUNICODE_STRING
, PUNICODE_STRING
,
229 typedef NTSTATUS (NTAPI
*PLSA_AUDIT_ACCOUNT_LOGON
)(ULONG
, BOOLEAN
,
230 PUNICODE_STRING
, PUNICODE_STRING
, PUNICODE_STRING
, NTSTATUS
);
231 typedef NTSTATUS (NTAPI
*PLSA_CALL_PACKAGE_PASSTHROUGH
)(PUNICODE_STRING
, PVOID
,
232 PVOID
, ULONG
, PVOID
*, PULONG
, PNTSTATUS
);
234 /* Dispatch tables of functions used by SSP/AP */
235 typedef struct SECPKG_DLL_FUNCTIONS
{
236 PLSA_ALLOCATE_LSA_HEAP AllocateHeap
;
237 PLSA_FREE_LSA_HEAP FreeHeap
;
238 PLSA_REGISTER_CALLBACK RegisterCallback
;
239 } SECPKG_DLL_FUNCTIONS
,
240 *PSECPKG_DLL_FUNCTIONS
;
241 typedef struct LSA_DISPATCH_TABLE
{
242 PLSA_CREATE_LOGON_SESSION CreateLogonSession
;
243 PLSA_DELETE_LOGON_SESSION DeleteLogonSession
;
244 PLSA_ADD_CREDENTIAL AddCredential
;
245 PLSA_GET_CREDENTIALS GetCredentials
;
246 PLSA_DELETE_CREDENTIAL DeleteCredential
;
247 PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap
;
248 PLSA_FREE_LSA_HEAP FreeLsaHeap
;
249 PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer
;
250 PLSA_FREE_CLIENT_BUFFER FreeClientBuffer
;
251 PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer
;
252 PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer
;
253 } LSA_DISPATCH_TABLE
,
254 *PLSA_DISPATCH_TABLE
;
255 typedef struct _LSA_SECPKG_FUNCTION_TABLE
{
256 PLSA_CREATE_LOGON_SESSION CreateLogonSession
;
257 PLSA_DELETE_LOGON_SESSION DeleteLogonSession
;
258 PLSA_ADD_CREDENTIAL AddCredential
;
259 PLSA_GET_CREDENTIALS GetCredentials
;
260 PLSA_DELETE_CREDENTIAL DeleteCredential
;
261 PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap
;
262 PLSA_FREE_LSA_HEAP FreeLsaHeap
;
263 PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer
;
264 PLSA_FREE_CLIENT_BUFFER FreeClientBuffer
;
265 PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer
;
266 PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer
;
267 PLSA_IMPERSONATE_CLIENT ImpersonateClient
;
268 PLSA_UNLOAD_PACKAGE UnloadPackage
;
269 PLSA_DUPLICATE_HANDLE DuplicateHandle
;
270 PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS SaveSupplementalCredentials
;
271 PLSA_CREATE_THREAD CreateThread
;
272 PLSA_GET_CLIENT_INFO GetClientInfo
;
273 PLSA_REGISTER_NOTIFICATION RegisterNotification
;
274 PLSA_CANCEL_NOTIFICATION CancelNotification
;
275 PLSA_MAP_BUFFER MapBuffer
;
276 PLSA_CREATE_TOKEN CreateToken
;
277 PLSA_AUDIT_LOGON AuditLogon
;
278 PLSA_CALL_PACKAGE CallPackage
;
279 PLSA_FREE_LSA_HEAP FreeReturnBuffer
;
280 PLSA_GET_CALL_INFO GetCallInfo
;
281 PLSA_CALL_PACKAGEEX CallPackageEx
;
282 PLSA_CREATE_SHARED_MEMORY CreateSharedMemory
;
283 PLSA_ALLOCATE_SHARED_MEMORY AllocateSharedMemory
;
284 PLSA_FREE_SHARED_MEMORY FreeSharedMemory
;
285 PLSA_DELETE_SHARED_MEMORY DeleteSharedMemory
;
286 PLSA_OPEN_SAM_USER OpenSamUser
;
287 PLSA_GET_USER_CREDENTIALS GetUserCredentials
;
288 PLSA_GET_USER_AUTH_DATA GetUserAuthData
;
289 PLSA_CLOSE_SAM_USER CloseSamUser
;
290 PLSA_CONVERT_AUTH_DATA_TO_TOKEN ConvertAuthDataToToken
;
291 PLSA_CLIENT_CALLBACK ClientCallback
;
292 PLSA_UPDATE_PRIMARY_CREDENTIALS UpdateCredentials
;
293 PLSA_GET_AUTH_DATA_FOR_USER GetAuthDataForUser
;
294 PLSA_CRACK_SINGLE_NAME CrackSingleName
;
295 PLSA_AUDIT_ACCOUNT_LOGON AuditAccountLogon
;
296 PLSA_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough
;
297 } LSA_SECPKG_FUNCTION_TABLE
,
298 *PLSA_SECPKG_FUNCTION_TABLE
;
300 /* functions implemented by SSP/AP obtainable by dispatch tables */
301 typedef NTSTATUS (NTAPI
*PLSA_AP_INITIALIZE_PACKAGE
)(ULONG
, PLSA_DISPATCH_TABLE
,
302 PLSA_STRING
, PLSA_STRING
, PLSA_STRING
*);
303 typedef NTSTATUS (NTAPI
*PLSA_AP_LOGON_USER
)(LPWSTR
, LPWSTR
, LPWSTR
, LPWSTR
,
304 DWORD
, DWORD
, PHANDLE
);
305 typedef NTSTATUS (NTAPI
*PLSA_AP_CALL_PACKAGE
)(PUNICODE_STRING
, PVOID
, ULONG
,
306 PVOID
*, PULONG
, PNTSTATUS
);
307 typedef VOID (NTAPI
*PLSA_AP_LOGON_TERMINATED
)(PLUID
);
308 typedef NTSTATUS (NTAPI
*PLSA_AP_CALL_PACKAGE_UNTRUSTED
)(PLSA_CLIENT_REQUEST
,
309 PVOID
, PVOID
, ULONG
, PVOID
*, PULONG
, PNTSTATUS
);
310 typedef NTSTATUS (NTAPI
*PLSA_AP_CALL_PACKAGE_PASSTHROUGH
)(PUNICODE_STRING
,
311 PVOID
, PVOID
, ULONG
, PVOID
*, PULONG
, PNTSTATUS
);
312 typedef NTSTATUS (NTAPI
*PLSA_AP_LOGON_USER_EX
)(PLSA_CLIENT_REQUEST
,
313 SECURITY_LOGON_TYPE
, PVOID
, PVOID
, ULONG
, PVOID
*, PULONG
, PLUID
, PNTSTATUS
,
314 PLSA_TOKEN_INFORMATION_TYPE
, PVOID
*, PUNICODE_STRING
*, PUNICODE_STRING
*,
316 typedef NTSTATUS (NTAPI
*PLSA_AP_LOGON_USER_EX2
)(PLSA_CLIENT_REQUEST
,
317 SECURITY_LOGON_TYPE
, PVOID
, PVOID
, ULONG
, PVOID
*, PULONG
, PLUID
, PNTSTATUS
,
318 PLSA_TOKEN_INFORMATION_TYPE
, PVOID
*, PUNICODE_STRING
*, PUNICODE_STRING
*,
319 PUNICODE_STRING
*, PSECPKG_PRIMARY_CRED
, PSECPKG_SUPPLEMENTAL_CRED_ARRAY
*);
320 typedef NTSTATUS (SpInitializeFn
)(ULONG_PTR
, PSECPKG_PARAMETERS
,
321 PLSA_SECPKG_FUNCTION_TABLE
);
322 typedef NTSTATUS (NTAPI SpShutDownFn
)(void);
323 typedef NTSTATUS (NTAPI SpGetInfoFn
)(PSecPkgInfoW
);
324 typedef NTSTATUS (NTAPI SpAcceptCredentialsFn
)(SECURITY_LOGON_TYPE
,
325 PUNICODE_STRING
, PSECPKG_PRIMARY_CRED
, PSECPKG_SUPPLEMENTAL_CRED
);
326 typedef NTSTATUS (NTAPI SpAcquireCredentialsHandleFn
)(PUNICODE_STRING
, ULONG
,
327 PLUID
, PVOID
, PVOID
, PVOID
, PLSA_SEC_HANDLE
, PTimeStamp
);
328 typedef NTSTATUS (NTAPI SpQueryCredentialsAttributesFn
)(LSA_SEC_HANDLE
, ULONG
,
330 typedef NTSTATUS (NTAPI SpFreeCredentialsHandleFn
)(LSA_SEC_HANDLE
);
331 typedef NTSTATUS (NTAPI SpSaveCredentialsFn
)(LSA_SEC_HANDLE
, PSecBuffer
);
332 typedef NTSTATUS (NTAPI SpGetCredentialsFn
)(LSA_SEC_HANDLE
, PSecBuffer
);
333 typedef NTSTATUS (NTAPI SpDeleteCredentialsFn
)(LSA_SEC_HANDLE
, PSecBuffer
);
334 typedef NTSTATUS (NTAPI SpInitLsaModeContextFn
)(LSA_SEC_HANDLE
, LSA_SEC_HANDLE
,
335 PUNICODE_STRING
, ULONG
, ULONG
, PSecBufferDesc
, PLSA_SEC_HANDLE
, PSecBufferDesc
,
336 PULONG
, PTimeStamp
, PBOOLEAN
, PSecBuffer
);
337 typedef NTSTATUS (NTAPI SpAcceptLsaModeContextFn
)(LSA_SEC_HANDLE
,
338 LSA_SEC_HANDLE
, PSecBufferDesc
, ULONG
, ULONG
, PLSA_SEC_HANDLE
, PSecBufferDesc
,
339 PULONG
, PTimeStamp
, PBOOLEAN
, PSecBuffer
);
340 typedef NTSTATUS (NTAPI SpDeleteContextFn
)(LSA_SEC_HANDLE
);
341 typedef NTSTATUS (NTAPI SpApplyControlTokenFn
)(LSA_SEC_HANDLE
, PSecBufferDesc
);
342 typedef NTSTATUS (NTAPI SpGetUserInfoFn
)(PLUID
, ULONG
, PSecurityUserData
*);
343 typedef NTSTATUS (NTAPI SpGetExtendedInformationFn
)(
344 SECPKG_EXTENDED_INFORMATION_CLASS
, PSECPKG_EXTENDED_INFORMATION
*);
345 typedef NTSTATUS (NTAPI SpQueryContextAttributesFn
)(LSA_SEC_HANDLE
, ULONG
,
347 typedef NTSTATUS (NTAPI SpAddCredentialsFn
)(LSA_SEC_HANDLE
, PUNICODE_STRING
,
348 PUNICODE_STRING
, ULONG
, PVOID
, PVOID
, PVOID
, PTimeStamp
);
349 typedef NTSTATUS (NTAPI SpSetExtendedInformationFn
)(
350 SECPKG_EXTENDED_INFORMATION_CLASS
, PSECPKG_EXTENDED_INFORMATION
);
351 typedef NTSTATUS (NTAPI SpInstanceInitFn
)(ULONG
, PSECPKG_DLL_FUNCTIONS
,
353 typedef NTSTATUS (NTAPI SpInitUserModeContextFn
)(LSA_SEC_HANDLE
, PSecBuffer
);
354 typedef NTSTATUS (NTAPI SpMakeSignatureFn
)(LSA_SEC_HANDLE
, ULONG
,
355 PSecBufferDesc
, ULONG
);
356 typedef NTSTATUS (NTAPI SpVerifySignatureFn
)(LSA_SEC_HANDLE
, PSecBufferDesc
,
358 typedef NTSTATUS (NTAPI SpSealMessageFn
)(LSA_SEC_HANDLE
, ULONG
, PSecBufferDesc
,
360 typedef NTSTATUS (NTAPI SpUnsealMessageFn
)(LSA_SEC_HANDLE
, PSecBufferDesc
,
362 typedef NTSTATUS (NTAPI SpGetContextTokenFn
)(LSA_SEC_HANDLE
, PHANDLE
);
363 typedef NTSTATUS (NTAPI SpCompleteAuthTokenFn
)(LSA_SEC_HANDLE
, PSecBufferDesc
);
364 typedef NTSTATUS (NTAPI SpFormatCredentialsFn
)(PSecBuffer
, PSecBuffer
);
365 typedef NTSTATUS (NTAPI SpMarshallSupplementalCredsFn
)(ULONG
, PUCHAR
, PULONG
,
367 typedef NTSTATUS (NTAPI SpExportSecurityContextFn
)(LSA_SEC_HANDLE
, ULONG
,
368 PSecBuffer
, PHANDLE
);
369 typedef NTSTATUS (NTAPI SpImportSecurityContextFn
)(PSecBuffer
, HANDLE
,
372 /* Dispatch tables of functions implemented by SSP/AP */
373 typedef struct SECPKG_FUNCTION_TABLE
{
374 PLSA_AP_INITIALIZE_PACKAGE InitializePackage
;
375 PLSA_AP_LOGON_USER LogonUser
;
376 PLSA_AP_CALL_PACKAGE CallPackage
;
377 PLSA_AP_LOGON_TERMINATED LogonTerminated
;
378 PLSA_AP_CALL_PACKAGE_UNTRUSTED CallPackageUntrusted
;
379 PLSA_AP_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough
;
380 PLSA_AP_LOGON_USER_EX LogonUserEx
;
381 PLSA_AP_LOGON_USER_EX2 LogonUserEx2
;
382 SpInitializeFn
*Initialize
;
383 SpShutDownFn
*Shutdown
;
384 SpGetInfoFn
*GetInfo
;
385 SpAcceptCredentialsFn
*AcceptCredentials
;
386 SpAcquireCredentialsHandleFn
*AcquireCredentialsHandle
;
387 SpQueryCredentialsAttributesFn
*QueryCredentialsAttributes
;
388 SpFreeCredentialsHandleFn
*FreeCredentialsHandle
;
389 SpSaveCredentialsFn
*SaveCredentials
;
390 SpGetCredentialsFn
*GetCredentials
;
391 SpDeleteCredentialsFn
*DeleteCredentials
;
392 SpInitLsaModeContextFn
*InitLsaModeContext
;
393 SpAcceptLsaModeContextFn
*AcceptLsaModeContext
;
394 SpDeleteContextFn
*DeleteContext
;
395 SpApplyControlTokenFn
*ApplyControlToken
;
396 SpGetUserInfoFn
*GetUserInfo
;
397 SpGetExtendedInformationFn
*GetExtendedInformation
;
398 SpQueryContextAttributesFn
*QueryContextAttributes
;
399 SpAddCredentialsFn
*AddCredentials
;
400 SpSetExtendedInformationFn
*SetExtendedInformation
;
401 } SECPKG_FUNCTION_TABLE
,
402 *PSECPKG_FUNCTION_TABLE
;
404 typedef struct SECPKG_USER_FUNCTION_TABLE
{
405 SpInstanceInitFn
*InstanceInit
;
406 SpInitUserModeContextFn
*InitUserModeContext
;
407 SpMakeSignatureFn
*MakeSignature
;
408 SpVerifySignatureFn
*VerifySignature
;
409 SpSealMessageFn
*SealMessage
;
410 SpUnsealMessageFn
*UnsealMessage
;
411 SpGetContextTokenFn
*GetContextToken
;
412 SpQueryContextAttributesFn
*QueryContextAttributes
;
413 SpCompleteAuthTokenFn
*CompleteAuthToken
;
414 SpDeleteContextFn
*DeleteUserModeContext
;
415 SpFormatCredentialsFn
*FormatCredentials
;
416 SpMarshallSupplementalCredsFn
*MarshallSupplementalCreds
;
417 SpExportSecurityContextFn
*ExportContext
;
418 SpImportSecurityContextFn
*ImportContext
;
419 } SECPKG_USER_FUNCTION_TABLE
,
420 *PSECPKG_USER_FUNCTION_TABLE
;
422 /* Entry points to SSP/AP */
423 typedef NTSTATUS (NTAPI
*SpLsaModeInitializeFn
)(ULONG
, PULONG
,
424 PSECPKG_FUNCTION_TABLE
*, PULONG
);
425 typedef NTSTATUS (WINAPI
*SpUserModeInitializeFn
)(ULONG
, PULONG
,
426 PSECPKG_USER_FUNCTION_TABLE
*, PULONG
);
431 #endif /* _NTSECPKG_H */