00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef _NTSECPKG_H
00020 #define _NTSECPKG_H
00021
00022 #ifdef __cplusplus
00023 extern "C" {
00024 #endif
00025
00026
00027 #define SECPKG_STATE_ENCRYPTION_PERMITTED 0x01
00028 #define SECPKG_STATE_STRONG_ENCRYPTION_PERMITTED 0x02
00029 #define SECPKG_STATE_DOMAIN_CONTROLLER 0x04
00030 #define SECPKG_STATE_WORKSTATION 0x08
00031 #define SECPKG_STATE_STANDALONE 0x10
00032
00033
00034 #define SECPKG_INTERFACE_VERSION 0x10000
00035 #define SECPKG_INTERFACE_VERSION_2 0x20000
00036 #define SECPKG_INTERFACE_VERSION_3 0x40000
00037 #define SECPKG_INTERFACE_VERSION_4 0x80000
00038 #define SECPKG_INTERFACE_VERSION_5 0x100000
00039 #define SECPKG_INTERFACE_VERSION_6 0x200000
00040
00041
00042 typedef enum _LSA_TOKEN_INFORMATION_TYPE {
00043 LsaTokenInformationNull,
00044 LsaTokenInformationV1
00045 } LSA_TOKEN_INFORMATION_TYPE, *PLSA_TOKEN_INFORMATION_TYPE;
00046
00047 typedef enum _SECPKG_EXTENDED_INFORMATION_CLASS
00048 {
00049 SecpkgGssInfo = 1,
00050 SecpkgContextThunks,
00051 SecpkgMutualAuthLevel,
00052 SecpkgMaxInfo
00053 } SECPKG_EXTENDED_INFORMATION_CLASS;
00054
00055 typedef enum _SECPKG_NAME_TYPE {
00056 SecNameSamCompatible,
00057 SecNameAlternateId,
00058 SecNameFlat,
00059 SecNameDN
00060 } SECPKG_NAME_TYPE;
00061
00062
00063 typedef struct _SECPKG_PRIMARY_CRED {
00064 LUID LogonId;
00065 UNICODE_STRING DownlevelName;
00066 UNICODE_STRING DomainName;
00067 UNICODE_STRING Password;
00068 UNICODE_STRING OldPassword;
00069 PSID UserSid;
00070 ULONG Flags;
00071 UNICODE_STRING DnsDomainName;
00072 UNICODE_STRING Upn;
00073 UNICODE_STRING LogonServer;
00074 UNICODE_STRING Spare1;
00075 UNICODE_STRING Spare2;
00076 UNICODE_STRING Spare3;
00077 UNICODE_STRING Spare4;
00078 } SECPKG_PRIMARY_CRED, *PSECPKG_PRIMARY_CRED;
00079
00080 typedef struct _SECPKG_SUPPLEMENTAL_CRED {
00081 UNICODE_STRING PackageName;
00082 ULONG CredentialSize;
00083 PUCHAR Credentials;
00084 } SECPKG_SUPPLEMENTAL_CRED, *PSECPKG_SUPPLEMENTAL_CRED;
00085
00086 typedef struct _SECPKG_SUPPLEMENTAL_CRED_ARRAY {
00087 ULONG CredentialCount;
00088 SECPKG_SUPPLEMENTAL_CRED Credentials[1];
00089 } SECPKG_SUPPLEMENTAL_CRED_ARRAY, *PSECPKG_SUPPLEMENTAL_CRED_ARRAY;
00090
00091 typedef struct _SECPKG_PARAMETERS {
00092 ULONG Version;
00093 ULONG MachineState;
00094 ULONG SetupMode;
00095 PSID DomainSid;
00096 UNICODE_STRING DomainName;
00097 UNICODE_STRING DnsDomainName;
00098 GUID DomainGuid;
00099 } SECPKG_PARAMETERS, *PSECPKG_PARAMETERS,
00100 SECPKG_EVENT_DOMAIN_CHANGE, *PSECPKG_EVENT_DOMAIN_CHANGE;
00101
00102 typedef struct _SECPKG_CLIENT_INFO {
00103 LUID LogonId;
00104 ULONG ProcessID;
00105 ULONG ThreadID;
00106 BOOLEAN HasTcbPrivilege;
00107 BOOLEAN Impersonating;
00108 BOOLEAN Restricted;
00109 } SECPKG_CLIENT_INFO,
00110 *PSECPKG_CLIENT_INFO;
00111
00112 typedef struct _SECURITY_USER_DATA {
00113 UNICODE_STRING UserName;
00114 UNICODE_STRING LogonDomainName;
00115 UNICODE_STRING LogonServer;
00116 PSID pSid;
00117 } SECURITY_USER_DATA, *PSECURITY_USER_DATA,
00118 SecurityUserData, *PSecurityUserData;
00119
00120 typedef struct _SECPKG_GSS_INFO {
00121 ULONG EncodedIdLength;
00122 UCHAR EncodedId[4];
00123 } SECPKG_GSS_INFO, *PSECPKG_GSS_INFO;
00124
00125 typedef struct _SECPKG_CONTEXT_THUNKS {
00126 ULONG InfoLevelCount;
00127 ULONG Levels[1];
00128 } SECPKG_CONTEXT_THUNKS, *PSECPKG_CONTEXT_THUNKS;
00129
00130 typedef struct _SECPKG_MUTUAL_AUTH_LEVEL {
00131 ULONG MutualAuthLevel;
00132 } SECPKG_MUTUAL_AUTH_LEVEL, *PSECPKG_MUTUAL_AUTH_LEVEL;
00133
00134 typedef struct _SECPKG_CALL_INFO {
00135 ULONG ProcessId;
00136 ULONG ThreadId;
00137 ULONG Attributes;
00138 ULONG CallCount;
00139 } SECPKG_CALL_INFO, *PSECPKG_CALL_INFO;
00140
00141 typedef struct _SECPKG_EXTENDED_INFORMATION {
00142 SECPKG_EXTENDED_INFORMATION_CLASS Class;
00143 union {
00144 SECPKG_GSS_INFO GssInfo;
00145 SECPKG_CONTEXT_THUNKS ContextThunks;
00146 SECPKG_MUTUAL_AUTH_LEVEL MutualAuthLevel;
00147 } Info;
00148 } SECPKG_EXTENDED_INFORMATION, *PSECPKG_EXTENDED_INFORMATION;
00149
00150 typedef struct _SECPKG_TARGETINFO {
00151 PSID DomainSid;
00152 PCWSTR ComputerName;
00153 } SECPKG_TARGETINFO, *PSECPKG_TARGETINFO;
00154
00155
00156 typedef VOID (NTAPI *PLSA_CALLBACK_FUNCTION)(ULONG_PTR, ULONG_PTR, PSecBuffer,
00157 PSecBuffer);
00158
00159
00160 typedef PVOID *PLSA_CLIENT_REQUEST;
00161 typedef ULONG LSA_SEC_HANDLE, *PLSA_SEC_HANDLE;
00162 typedef LPTHREAD_START_ROUTINE SEC_THREAD_START;
00163 typedef PSECURITY_ATTRIBUTES SEC_ATTRS;
00164
00165
00166 typedef NTSTATUS (NTAPI *PLSA_REGISTER_CALLBACK)(ULONG, PLSA_CALLBACK_FUNCTION);
00167 typedef NTSTATUS (NTAPI *PLSA_CREATE_LOGON_SESSION)(PLUID);
00168 typedef NTSTATUS (NTAPI *PLSA_DELETE_LOGON_SESSION)(PLUID);
00169 typedef NTSTATUS (NTAPI *PLSA_ADD_CREDENTIAL)(PLUID, ULONG, PLSA_STRING,
00170 PLSA_STRING);
00171 typedef NTSTATUS (NTAPI *PLSA_GET_CREDENTIALS)(PLUID, ULONG, PULONG, BOOLEAN,
00172 PLSA_STRING, PULONG, PLSA_STRING);
00173 typedef NTSTATUS (NTAPI *PLSA_DELETE_CREDENTIAL)(PLUID, ULONG, PLSA_STRING);
00174 typedef PVOID (NTAPI *PLSA_ALLOCATE_LSA_HEAP)(ULONG);
00175 typedef VOID (NTAPI *PLSA_FREE_LSA_HEAP)(PVOID);
00176 typedef NTSTATUS (NTAPI *PLSA_ALLOCATE_CLIENT_BUFFER)(PLSA_CLIENT_REQUEST,
00177 ULONG, PVOID*);
00178 typedef NTSTATUS (NTAPI *PLSA_FREE_CLIENT_BUFFER)(PLSA_CLIENT_REQUEST, PVOID);
00179 typedef NTSTATUS (NTAPI *PLSA_COPY_TO_CLIENT_BUFFER)(PLSA_CLIENT_REQUEST, ULONG,
00180 PVOID, PVOID);
00181 typedef NTSTATUS (NTAPI *PLSA_COPY_FROM_CLIENT_BUFFER)(PLSA_CLIENT_REQUEST,
00182 ULONG, PVOID, PVOID);
00183 typedef NTSTATUS (NTAPI *PLSA_IMPERSONATE_CLIENT)(void);
00184 typedef NTSTATUS (NTAPI *PLSA_UNLOAD_PACKAGE)(void);
00185 typedef NTSTATUS (NTAPI *PLSA_DUPLICATE_HANDLE)(HANDLE, PHANDLE);
00186 typedef NTSTATUS (NTAPI *PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS)(PLUID, ULONG,
00187 PVOID, BOOLEAN);
00188 typedef HANDLE (NTAPI *PLSA_CREATE_THREAD)(SEC_ATTRS, ULONG, SEC_THREAD_START,
00189 PVOID, ULONG, PULONG);
00190 typedef NTSTATUS (NTAPI *PLSA_GET_CLIENT_INFO)(PSECPKG_CLIENT_INFO);
00191 typedef HANDLE (NTAPI *PLSA_REGISTER_NOTIFICATION)(SEC_THREAD_START, PVOID,
00192 ULONG, ULONG, ULONG, ULONG, HANDLE);
00193 typedef NTSTATUS (NTAPI *PLSA_CANCEL_NOTIFICATION)(HANDLE);
00194 typedef NTSTATUS (NTAPI *PLSA_MAP_BUFFER)(PSecBuffer, PSecBuffer);
00195 typedef NTSTATUS (NTAPI *PLSA_CREATE_TOKEN)(PLUID, PTOKEN_SOURCE,
00196 SECURITY_LOGON_TYPE, SECURITY_IMPERSONATION_LEVEL, LSA_TOKEN_INFORMATION_TYPE,
00197 PVOID, PTOKEN_GROUPS, PUNICODE_STRING, PUNICODE_STRING, PUNICODE_STRING,
00198 PUNICODE_STRING, PHANDLE, PNTSTATUS);
00199 typedef VOID (NTAPI *PLSA_AUDIT_LOGON)(NTSTATUS, NTSTATUS, PUNICODE_STRING,
00200 PUNICODE_STRING, PUNICODE_STRING, OPTIONAL PSID, SECURITY_LOGON_TYPE,
00201 PTOKEN_SOURCE, PLUID);
00202 typedef NTSTATUS (NTAPI *PLSA_CALL_PACKAGE)(PUNICODE_STRING, PVOID, ULONG,
00203 PVOID*, PULONG, PNTSTATUS);
00204 typedef BOOLEAN (NTAPI *PLSA_GET_CALL_INFO)(PSECPKG_CALL_INFO);
00205 typedef NTSTATUS (NTAPI *PLSA_CALL_PACKAGEEX)(PUNICODE_STRING, PVOID, PVOID,
00206 ULONG, PVOID*, PULONG, PNTSTATUS);
00207 typedef PVOID (NTAPI *PLSA_CREATE_SHARED_MEMORY)(ULONG, ULONG);
00208 typedef PVOID (NTAPI *PLSA_ALLOCATE_SHARED_MEMORY)(PVOID, ULONG);
00209 typedef VOID (NTAPI *PLSA_FREE_SHARED_MEMORY)(PVOID, PVOID);
00210 typedef BOOLEAN (NTAPI *PLSA_DELETE_SHARED_MEMORY)(PVOID);
00211 typedef NTSTATUS (NTAPI *PLSA_OPEN_SAM_USER)(PUNICODE_STRING, SECPKG_NAME_TYPE,
00212 PUNICODE_STRING, BOOLEAN, ULONG, PVOID*);
00213 typedef NTSTATUS (NTAPI *PLSA_GET_USER_CREDENTIALS)(PVOID, PVOID *, PULONG,
00214 PVOID *, PULONG);
00215 typedef NTSTATUS (NTAPI *PLSA_GET_USER_AUTH_DATA)(PVOID, PUCHAR *, PULONG);
00216 typedef NTSTATUS (NTAPI *PLSA_CLOSE_SAM_USER)(PVOID);
00217 typedef NTSTATUS (NTAPI *PLSA_CONVERT_AUTH_DATA_TO_TOKEN)(PVOID, ULONG,
00218 SECURITY_IMPERSONATION_LEVEL, PTOKEN_SOURCE, SECURITY_LOGON_TYPE,
00219 PUNICODE_STRING, PHANDLE, PLUID, PUNICODE_STRING, PNTSTATUS);
00220 typedef NTSTATUS (NTAPI *PLSA_CLIENT_CALLBACK)(PCHAR, ULONG_PTR, ULONG_PTR,
00221 PSecBuffer, PSecBuffer);
00222 typedef NTSTATUS (NTAPI *PLSA_UPDATE_PRIMARY_CREDENTIALS)(PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED_ARRAY);
00223 typedef NTSTATUS (NTAPI *PLSA_GET_AUTH_DATA_FOR_USER)(PUNICODE_STRING,
00224 SECPKG_NAME_TYPE, PUNICODE_STRING, PUCHAR *, PULONG, PUNICODE_STRING);
00225 typedef NTSTATUS (NTAPI *PLSA_CRACK_SINGLE_NAME)(ULONG, BOOLEAN,
00226 PUNICODE_STRING, PUNICODE_STRING, ULONG, PUNICODE_STRING, PUNICODE_STRING,
00227 PULONG);
00228 typedef NTSTATUS (NTAPI *PLSA_AUDIT_ACCOUNT_LOGON)(ULONG, BOOLEAN,
00229 PUNICODE_STRING, PUNICODE_STRING, PUNICODE_STRING, NTSTATUS);
00230 typedef NTSTATUS (NTAPI *PLSA_CALL_PACKAGE_PASSTHROUGH)(PUNICODE_STRING, PVOID,
00231 PVOID, ULONG, PVOID*, PULONG, PNTSTATUS);
00232
00233
00234 typedef struct SECPKG_DLL_FUNCTIONS {
00235 PLSA_ALLOCATE_LSA_HEAP AllocateHeap;
00236 PLSA_FREE_LSA_HEAP FreeHeap;
00237 PLSA_REGISTER_CALLBACK RegisterCallback;
00238 } SECPKG_DLL_FUNCTIONS,
00239 *PSECPKG_DLL_FUNCTIONS;
00240
00241 typedef struct LSA_DISPATCH_TABLE {
00242 PLSA_CREATE_LOGON_SESSION CreateLogonSession;
00243 PLSA_DELETE_LOGON_SESSION DeleteLogonSession;
00244 PLSA_ADD_CREDENTIAL AddCredential;
00245 PLSA_GET_CREDENTIALS GetCredentials;
00246 PLSA_DELETE_CREDENTIAL DeleteCredential;
00247 PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap;
00248 PLSA_FREE_LSA_HEAP FreeLsaHeap;
00249 PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer;
00250 PLSA_FREE_CLIENT_BUFFER FreeClientBuffer;
00251 PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer;
00252 PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer;
00253 } LSA_DISPATCH_TABLE,
00254 *PLSA_DISPATCH_TABLE;
00255
00256 typedef struct _LSA_SECPKG_FUNCTION_TABLE {
00257 PLSA_CREATE_LOGON_SESSION CreateLogonSession;
00258 PLSA_DELETE_LOGON_SESSION DeleteLogonSession;
00259 PLSA_ADD_CREDENTIAL AddCredential;
00260 PLSA_GET_CREDENTIALS GetCredentials;
00261 PLSA_DELETE_CREDENTIAL DeleteCredential;
00262 PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap;
00263 PLSA_FREE_LSA_HEAP FreeLsaHeap;
00264 PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer;
00265 PLSA_FREE_CLIENT_BUFFER FreeClientBuffer;
00266 PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer;
00267 PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer;
00268 PLSA_IMPERSONATE_CLIENT ImpersonateClient;
00269 PLSA_UNLOAD_PACKAGE UnloadPackage;
00270 PLSA_DUPLICATE_HANDLE DuplicateHandle;
00271 PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS SaveSupplementalCredentials;
00272 PLSA_CREATE_THREAD CreateThread;
00273 PLSA_GET_CLIENT_INFO GetClientInfo;
00274 PLSA_REGISTER_NOTIFICATION RegisterNotification;
00275 PLSA_CANCEL_NOTIFICATION CancelNotification;
00276 PLSA_MAP_BUFFER MapBuffer;
00277 PLSA_CREATE_TOKEN CreateToken;
00278 PLSA_AUDIT_LOGON AuditLogon;
00279 PLSA_CALL_PACKAGE CallPackage;
00280 PLSA_FREE_LSA_HEAP FreeReturnBuffer;
00281 PLSA_GET_CALL_INFO GetCallInfo;
00282 PLSA_CALL_PACKAGEEX CallPackageEx;
00283 PLSA_CREATE_SHARED_MEMORY CreateSharedMemory;
00284 PLSA_ALLOCATE_SHARED_MEMORY AllocateSharedMemory;
00285 PLSA_FREE_SHARED_MEMORY FreeSharedMemory;
00286 PLSA_DELETE_SHARED_MEMORY DeleteSharedMemory;
00287 PLSA_OPEN_SAM_USER OpenSamUser;
00288 PLSA_GET_USER_CREDENTIALS GetUserCredentials;
00289 PLSA_GET_USER_AUTH_DATA GetUserAuthData;
00290 PLSA_CLOSE_SAM_USER CloseSamUser;
00291 PLSA_CONVERT_AUTH_DATA_TO_TOKEN ConvertAuthDataToToken;
00292 PLSA_CLIENT_CALLBACK ClientCallback;
00293 PLSA_UPDATE_PRIMARY_CREDENTIALS UpdateCredentials;
00294 PLSA_GET_AUTH_DATA_FOR_USER GetAuthDataForUser;
00295 PLSA_CRACK_SINGLE_NAME CrackSingleName;
00296 PLSA_AUDIT_ACCOUNT_LOGON AuditAccountLogon;
00297 PLSA_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough;
00298 } LSA_SECPKG_FUNCTION_TABLE,
00299 *PLSA_SECPKG_FUNCTION_TABLE;
00300
00301
00302 typedef NTSTATUS (NTAPI *PLSA_AP_INITIALIZE_PACKAGE)(ULONG, PLSA_DISPATCH_TABLE,
00303 PLSA_STRING, PLSA_STRING, PLSA_STRING *);
00304 typedef NTSTATUS (NTAPI *PLSA_AP_LOGON_USER)(LPWSTR, LPWSTR, LPWSTR, LPWSTR,
00305 DWORD, DWORD, PHANDLE);
00306 typedef NTSTATUS (NTAPI *PLSA_AP_CALL_PACKAGE)(PUNICODE_STRING, PVOID, ULONG,
00307 PVOID *, PULONG, PNTSTATUS);
00308 typedef VOID (NTAPI *PLSA_AP_LOGON_TERMINATED)(PLUID);
00309 typedef NTSTATUS (NTAPI *PLSA_AP_CALL_PACKAGE_UNTRUSTED)(PLSA_CLIENT_REQUEST,
00310 PVOID, PVOID, ULONG, PVOID *, PULONG, PNTSTATUS);
00311 typedef NTSTATUS (NTAPI *PLSA_AP_CALL_PACKAGE_PASSTHROUGH)(PUNICODE_STRING,
00312 PVOID, PVOID, ULONG, PVOID *, PULONG, PNTSTATUS);
00313 typedef NTSTATUS (NTAPI *PLSA_AP_LOGON_USER_EX)(PLSA_CLIENT_REQUEST,
00314 SECURITY_LOGON_TYPE, PVOID, PVOID, ULONG, PVOID *, PULONG, PLUID, PNTSTATUS,
00315 PLSA_TOKEN_INFORMATION_TYPE, PVOID *, PUNICODE_STRING *, PUNICODE_STRING *,
00316 PUNICODE_STRING *);
00317 typedef NTSTATUS (NTAPI *PLSA_AP_LOGON_USER_EX2)(PLSA_CLIENT_REQUEST,
00318 SECURITY_LOGON_TYPE, PVOID, PVOID, ULONG, PVOID *, PULONG, PLUID, PNTSTATUS,
00319 PLSA_TOKEN_INFORMATION_TYPE, PVOID *, PUNICODE_STRING *, PUNICODE_STRING *,
00320 PUNICODE_STRING *, PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED_ARRAY *);
00321 typedef NTSTATUS (SpInitializeFn)(ULONG_PTR, PSECPKG_PARAMETERS,
00322 PLSA_SECPKG_FUNCTION_TABLE);
00323 typedef NTSTATUS (NTAPI SpShutDownFn)(void);
00324 typedef NTSTATUS (NTAPI SpGetInfoFn)(PSecPkgInfoW);
00325 typedef NTSTATUS (NTAPI SpAcceptCredentialsFn)(SECURITY_LOGON_TYPE,
00326 PUNICODE_STRING, PSECPKG_PRIMARY_CRED, PSECPKG_SUPPLEMENTAL_CRED);
00327 typedef NTSTATUS (NTAPI SpAcquireCredentialsHandleFn)(PUNICODE_STRING, ULONG,
00328 PLUID, PVOID, PVOID, PVOID, PLSA_SEC_HANDLE, PTimeStamp);
00329 typedef NTSTATUS (NTAPI SpQueryCredentialsAttributesFn)(LSA_SEC_HANDLE, ULONG,
00330 PVOID);
00331 typedef NTSTATUS (NTAPI SpFreeCredentialsHandleFn)(LSA_SEC_HANDLE);
00332 typedef NTSTATUS (NTAPI SpSaveCredentialsFn)(LSA_SEC_HANDLE, PSecBuffer);
00333 typedef NTSTATUS (NTAPI SpGetCredentialsFn)(LSA_SEC_HANDLE, PSecBuffer);
00334 typedef NTSTATUS (NTAPI SpDeleteCredentialsFn)(LSA_SEC_HANDLE, PSecBuffer);
00335 typedef NTSTATUS (NTAPI SpInitLsaModeContextFn)(LSA_SEC_HANDLE, LSA_SEC_HANDLE,
00336 PUNICODE_STRING, ULONG, ULONG, PSecBufferDesc, PLSA_SEC_HANDLE, PSecBufferDesc,
00337 PULONG, PTimeStamp, PBOOLEAN, PSecBuffer);
00338 typedef NTSTATUS (NTAPI SpAcceptLsaModeContextFn)(LSA_SEC_HANDLE,
00339 LSA_SEC_HANDLE, PSecBufferDesc, ULONG, ULONG, PLSA_SEC_HANDLE, PSecBufferDesc,
00340 PULONG, PTimeStamp, PBOOLEAN, PSecBuffer);
00341 typedef NTSTATUS (NTAPI SpDeleteContextFn)(LSA_SEC_HANDLE);
00342 typedef NTSTATUS (NTAPI SpApplyControlTokenFn)(LSA_SEC_HANDLE, PSecBufferDesc);
00343 typedef NTSTATUS (NTAPI SpGetUserInfoFn)(PLUID, ULONG, PSecurityUserData *);
00344 typedef NTSTATUS (NTAPI SpGetExtendedInformationFn)(
00345 SECPKG_EXTENDED_INFORMATION_CLASS, PSECPKG_EXTENDED_INFORMATION *);
00346 typedef NTSTATUS (NTAPI SpQueryContextAttributesFn)(LSA_SEC_HANDLE, ULONG,
00347 PVOID);
00348 typedef NTSTATUS (NTAPI SpAddCredentialsFn)(LSA_SEC_HANDLE, PUNICODE_STRING,
00349 PUNICODE_STRING, ULONG, PVOID, PVOID, PVOID, PTimeStamp);
00350 typedef NTSTATUS (NTAPI SpSetExtendedInformationFn)(
00351 SECPKG_EXTENDED_INFORMATION_CLASS, PSECPKG_EXTENDED_INFORMATION);
00352 typedef NTSTATUS (NTAPI SpSetContextAttributesFn)(LSA_SEC_HANDLE, ULONG, PVOID,
00353 ULONG);
00354 typedef NTSTATUS (NTAPI SpSetCredentialsAttributesFn)(LSA_SEC_HANDLE, ULONG,
00355 PVOID, ULONG);
00356 typedef NTSTATUS (NTAPI SpChangeAccountPasswordFn)(PUNICODE_STRING,
00357 PUNICODE_STRING, PUNICODE_STRING, PUNICODE_STRING, BOOLEAN, PSecBufferDesc);
00358 typedef NTSTATUS (NTAPI SpQueryMetaDataFn)(LSA_SEC_HANDLE, PUNICODE_STRING,
00359 ULONG, PULONG, PUCHAR *, PLSA_SEC_HANDLE);
00360 typedef NTSTATUS (NTAPI SpExchangeMetaDataFn)(LSA_SEC_HANDLE, PUNICODE_STRING,
00361 ULONG, ULONG, PUCHAR, PLSA_SEC_HANDLE);
00362 typedef NTSTATUS (NTAPI SpGetCredUIContextFn)(LSA_SEC_HANDLE, GUID *, PULONG,
00363 PUCHAR *);
00364 typedef NTSTATUS (NTAPI SpUpdateCredentialsFn)(LSA_SEC_HANDLE, GUID *, ULONG,
00365 PUCHAR);
00366 typedef NTSTATUS (NTAPI SpValidateTargetInfoFn)(PLSA_CLIENT_REQUEST, PVOID,
00367 PVOID, ULONG, PSECPKG_TARGETINFO);
00368
00369
00370 typedef NTSTATUS (NTAPI SpInstanceInitFn)(ULONG, PSECPKG_DLL_FUNCTIONS,
00371 PVOID *);
00372 typedef NTSTATUS (NTAPI SpInitUserModeContextFn)(LSA_SEC_HANDLE, PSecBuffer);
00373 typedef NTSTATUS (NTAPI SpMakeSignatureFn)(LSA_SEC_HANDLE, ULONG,
00374 PSecBufferDesc, ULONG);
00375 typedef NTSTATUS (NTAPI SpVerifySignatureFn)(LSA_SEC_HANDLE, PSecBufferDesc,
00376 ULONG, PULONG);
00377 typedef NTSTATUS (NTAPI SpSealMessageFn)(LSA_SEC_HANDLE, ULONG, PSecBufferDesc,
00378 ULONG);
00379 typedef NTSTATUS (NTAPI SpUnsealMessageFn)(LSA_SEC_HANDLE, PSecBufferDesc,
00380 ULONG, PULONG);
00381 typedef NTSTATUS (NTAPI SpGetContextTokenFn)(LSA_SEC_HANDLE, PHANDLE);
00382 typedef NTSTATUS (NTAPI SpCompleteAuthTokenFn)(LSA_SEC_HANDLE, PSecBufferDesc);
00383 typedef NTSTATUS (NTAPI SpFormatCredentialsFn)(PSecBuffer, PSecBuffer);
00384 typedef NTSTATUS (NTAPI SpMarshallSupplementalCredsFn)(ULONG, PUCHAR, PULONG,
00385 PVOID *);
00386 typedef NTSTATUS (NTAPI SpExportSecurityContextFn)(LSA_SEC_HANDLE, ULONG,
00387 PSecBuffer, PHANDLE);
00388 typedef NTSTATUS (NTAPI SpImportSecurityContextFn)(PSecBuffer, HANDLE,
00389 PLSA_SEC_HANDLE);
00390
00391 #ifdef WINE_NO_UNICODE_MACROS
00392 #undef SetContextAttributes
00393 #endif
00394
00395
00396 typedef struct SECPKG_FUNCTION_TABLE {
00397 PLSA_AP_INITIALIZE_PACKAGE InitializePackage;
00398 PLSA_AP_LOGON_USER LsaLogonUser;
00399 PLSA_AP_CALL_PACKAGE CallPackage;
00400 PLSA_AP_LOGON_TERMINATED LogonTerminated;
00401 PLSA_AP_CALL_PACKAGE_UNTRUSTED CallPackageUntrusted;
00402 PLSA_AP_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough;
00403 PLSA_AP_LOGON_USER_EX LogonUserEx;
00404 PLSA_AP_LOGON_USER_EX2 LogonUserEx2;
00405 SpInitializeFn *Initialize;
00406 SpShutDownFn *Shutdown;
00407 SpGetInfoFn *GetInfo;
00408 SpAcceptCredentialsFn *AcceptCredentials;
00409 SpAcquireCredentialsHandleFn *SpAcquireCredentialsHandle;
00410 SpQueryCredentialsAttributesFn *SpQueryCredentialsAttributes;
00411 SpFreeCredentialsHandleFn *FreeCredentialsHandle;
00412 SpSaveCredentialsFn *SaveCredentials;
00413 SpGetCredentialsFn *GetCredentials;
00414 SpDeleteCredentialsFn *DeleteCredentials;
00415 SpInitLsaModeContextFn *InitLsaModeContext;
00416 SpAcceptLsaModeContextFn *AcceptLsaModeContext;
00417 SpDeleteContextFn *DeleteContext;
00418 SpApplyControlTokenFn *ApplyControlToken;
00419 SpGetUserInfoFn *GetUserInfo;
00420 SpGetExtendedInformationFn *GetExtendedInformation;
00421 SpQueryContextAttributesFn *SpQueryContextAttributes;
00422 SpAddCredentialsFn *SpAddCredentials;
00423 SpSetExtendedInformationFn *SetExtendedInformation;
00424
00425 SpSetContextAttributesFn *SetContextAttributes;
00426
00427 SpSetCredentialsAttributesFn *SetCredentialsAttributes;
00428
00429 SpChangeAccountPasswordFn *ChangeAccountPassword;
00430
00431 SpQueryMetaDataFn *QueryMetaData;
00432 SpExchangeMetaDataFn *ExchangeMetaData;
00433 SpGetCredUIContextFn *GetCredUIContext;
00434 SpUpdateCredentialsFn *UpdateCredentials;
00435
00436 SpValidateTargetInfoFn *ValidateTargetInfo;
00437
00438 } SECPKG_FUNCTION_TABLE,
00439 *PSECPKG_FUNCTION_TABLE;
00440
00441
00442 typedef struct SECPKG_USER_FUNCTION_TABLE {
00443 SpInstanceInitFn *InstanceInit;
00444 SpInitUserModeContextFn *InitUserModeContext;
00445 SpMakeSignatureFn *MakeSignature;
00446 SpVerifySignatureFn *VerifySignature;
00447 SpSealMessageFn *SealMessage;
00448 SpUnsealMessageFn *UnsealMessage;
00449 SpGetContextTokenFn *GetContextToken;
00450 SpQueryContextAttributesFn *SpQueryContextAttributes;
00451 SpCompleteAuthTokenFn *CompleteAuthToken;
00452 SpDeleteContextFn *DeleteUserModeContext;
00453 SpFormatCredentialsFn *FormatCredentials;
00454 SpMarshallSupplementalCredsFn *MarshallSupplementalCreds;
00455 SpExportSecurityContextFn *ExportContext;
00456 SpImportSecurityContextFn *ImportContext;
00457 } SECPKG_USER_FUNCTION_TABLE,
00458 *PSECPKG_USER_FUNCTION_TABLE;
00459
00460
00461 typedef NTSTATUS (NTAPI *SpLsaModeInitializeFn)(ULONG, PULONG,
00462 PSECPKG_FUNCTION_TABLE *, PULONG);
00463
00464
00465 typedef NTSTATUS (WINAPI *SpUserModeInitializeFn)(ULONG, PULONG,
00466 PSECPKG_USER_FUNCTION_TABLE *, PULONG);
00467
00468 #ifdef __cplusplus
00469 }
00470 #endif
00471 #endif