ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

ntsecpkg.h
Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 2007 Yuval Fledel
00003  *
00004  * This library is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU Lesser General Public
00006  * License as published by the Free Software Foundation; either
00007  * version 2.1 of the License, or (at your option) any later version.
00008  *
00009  * This library is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  * Lesser General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU Lesser General Public
00015  * License along with this library; if not, write to the Free Software
00016  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00017  */
00018 
00019 #ifndef _NTSECPKG_H
00020 #define _NTSECPKG_H
00021 
00022 #ifdef __cplusplus
00023 extern "C" {
00024 #endif
00025 
00026 /* Flags for the MachineState field in SECPKG_PARAMETERS */
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 /* Version magics as passed to or returned from Sp[Lsa,Mode]ModeInitialize */
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 /* enum definitions for Secure Service Provider/Authentication Packages */
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 /* struct definitions for SSP/AP */
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 /* callbacks implemented by SSP/AP dlls and called by the LSA */
00156 typedef VOID (NTAPI *PLSA_CALLBACK_FUNCTION)(ULONG_PTR, ULONG_PTR, PSecBuffer,
00157  PSecBuffer);
00158 
00159 /* misc typedefs used in the below prototypes */
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 /* functions used by SSP/AP obtainable by dispatch tables */
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 /* Dispatch tables of functions used by SSP/AP */
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 /* LSA-mode functions implemented by SSP/AP obtainable by a dispatch table */
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 /* User-mode functions implemented by SSP/AP obtainable by a dispatch table */
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 /* dispatch tables of LSA-mode functions implemented by SSP/AP */
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     /* Packages with version SECPKG_INTERFACE_VERSION end here */
00425     SpSetContextAttributesFn *SetContextAttributes;
00426     /* Packages with version SECPKG_INTERFACE_VERSION_2 end here */
00427     SpSetCredentialsAttributesFn *SetCredentialsAttributes;
00428     /* Packages with version SECPKG_INTERFACE_VERSION_3 end here */
00429     SpChangeAccountPasswordFn *ChangeAccountPassword;
00430     /* Packages with version SECPKG_INTERFACE_VERSION_4 end here */
00431     SpQueryMetaDataFn *QueryMetaData;
00432     SpExchangeMetaDataFn *ExchangeMetaData;
00433     SpGetCredUIContextFn *GetCredUIContext;
00434     SpUpdateCredentialsFn *UpdateCredentials;
00435     /* Packages with version SECPKG_INTERFACE_VERSION_5 end here */
00436     SpValidateTargetInfoFn *ValidateTargetInfo;
00437     /* Packages with version SECPKG_INTERFACE_VERSION_6 end here */
00438 } SECPKG_FUNCTION_TABLE,
00439  *PSECPKG_FUNCTION_TABLE;
00440 
00441 /* dispatch tables of user-mode functions implemented by SSP/AP */
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 /* LSA-mode entry point to SSP/APs */
00461 typedef NTSTATUS (NTAPI *SpLsaModeInitializeFn)(ULONG, PULONG,
00462  PSECPKG_FUNCTION_TABLE *, PULONG);
00463 
00464 /* User-mode entry point to SSP/APs */
00465 typedef NTSTATUS (WINAPI *SpUserModeInitializeFn)(ULONG, PULONG,
00466  PSECPKG_USER_FUNCTION_TABLE *, PULONG);
00467 
00468 #ifdef __cplusplus
00469 }
00470 #endif
00471 #endif /* _NTSECPKG_H */

Generated on Sat May 26 2012 04:30:54 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.