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

sspi.h
Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 2004 Juan Lang
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 #ifndef __WINE_SSPI_H__
00019 #define __WINE_SSPI_H__
00020 
00021 #include <wtypes.h>
00022 
00023 #ifdef __cplusplus
00024 extern "C" {
00025 #endif
00026 
00027 #define SEC_ENTRY WINAPI
00028 
00029 typedef WCHAR SEC_WCHAR;
00030 typedef CHAR  SEC_CHAR;
00031 
00032 #ifndef __SECSTATUS_DEFINED__
00033 #define __SECSTATUS_DEFINED__
00034 typedef LONG SECURITY_STATUS;
00035 #endif
00036 
00037 #define UNISP_NAME_A "Microsoft Unified Security Protocol Provider"
00038 #define UNISP_NAME_W L"Microsoft Unified Security Protocol Provider"
00039 #define UNISP_NAME WINELIB_NAME_AW(UNISP_NAME_)
00040 
00041 #ifdef UNICODE
00042 typedef SEC_WCHAR * SECURITY_PSTR;
00043 typedef CONST SEC_WCHAR *  SECURITY_PCSTR;
00044 #else
00045 typedef SEC_CHAR * SECURITY_PSTR;
00046 typedef CONST SEC_CHAR *  SECURITY_PCSTR;
00047 #endif
00048 
00049 #ifndef __SECHANDLE_DEFINED__
00050 #define __SECHANDLE_DEFINED__
00051 typedef struct _SecHandle
00052 {
00053     ULONG_PTR dwLower;
00054     ULONG_PTR dwUpper;
00055 } SecHandle, *PSecHandle;
00056 #endif
00057 
00058 #define SecInvalidateHandle(x) do { \
00059  ((PSecHandle)(x))->dwLower = ((ULONG_PTR)((INT_PTR)-1)); \
00060  ((PSecHandle)(x))->dwUpper = ((ULONG_PTR)((INT_PTR)-1)); \
00061  } while (0)
00062 
00063 #define SecIsValidHandle(x) \
00064  ((((PSecHandle)(x))->dwLower != ((ULONG_PTR)(INT_PTR)-1)) && \
00065  (((PSecHandle)(x))->dwUpper != ((ULONG_PTR)(INT_PTR)-1)))
00066 
00067 typedef SecHandle CredHandle;
00068 typedef PSecHandle PCredHandle;
00069 
00070 typedef SecHandle CtxtHandle;
00071 typedef PSecHandle PCtxtHandle;
00072 
00073 typedef struct _SECURITY_INTEGER
00074 {
00075     ULONG LowPart;
00076     LONG HighPart;
00077 } SECURITY_INTEGER, *PSECURITY_INTEGER;
00078 typedef SECURITY_INTEGER TimeStamp, *PTimeStamp;
00079 
00080 typedef struct _SecPkgInfoA
00081 {
00082     ULONG  fCapabilities;
00083     unsigned short wVersion;
00084     unsigned short wRPCID;
00085     ULONG  cbMaxToken;
00086     SEC_CHAR      *Name;
00087     SEC_CHAR      *Comment;
00088 } SecPkgInfoA, *PSecPkgInfoA;
00089 
00090 typedef struct _SecPkgInfoW
00091 {
00092     ULONG  fCapabilities;
00093     unsigned short wVersion;
00094     unsigned short wRPCID;
00095     ULONG  cbMaxToken;
00096     SEC_WCHAR     *Name;
00097     SEC_WCHAR     *Comment;
00098 } SecPkgInfoW, *PSecPkgInfoW;
00099 
00100 #define SecPkgInfo WINELIB_NAME_AW(SecPkgInfo)
00101 #define PSecPkgInfo WINELIB_NAME_AW(PSecPkgInfo)
00102 
00103 /* fCapabilities field of SecPkgInfo */
00104 #define SECPKG_FLAG_INTEGRITY              0x00000001
00105 #define SECPKG_FLAG_PRIVACY                0x00000002
00106 #define SECPKG_FLAG_TOKEN_ONLY             0x00000004
00107 #define SECPKG_FLAG_DATAGRAM               0x00000008
00108 #define SECPKG_FLAG_CONNECTION             0x00000010
00109 #define SECPKG_FLAG_MULTI_REQUIRED         0x00000020
00110 #define SECPKG_FLAG_CLIENT_ONLY            0x00000040
00111 #define SECPKG_FLAG_EXTENDED_ERROR         0x00000080
00112 #define SECPKG_FLAG_IMPERSONATION          0x00000100
00113 #define SECPKG_FLAG_ACCEPT_WIN32_NAME      0x00000200
00114 #define SECPKG_FLAG_STREAM                 0x00000400
00115 #define SECPKG_FLAG_NEGOTIABLE             0x00000800
00116 #define SECPKG_FLAG_GSS_COMPATIBLE         0x00001000
00117 #define SECPKG_FLAG_LOGON                  0x00002000
00118 #define SECPKG_FLAG_ASCII_BUFFERS          0x00004000
00119 #define SECPKG_FLAG_FRAGMENT               0x00008000
00120 #define SECPKG_FLAG_MUTUAL_AUTH            0x00010000
00121 #define SECPKG_FLAG_DELEGATION             0x00020000
00122 #define SECPKG_FLAG_READONLY_WITH_CHECKSUM 0x00040000
00123 
00124 typedef struct _SecBuffer
00125 {
00126     ULONG cbBuffer;
00127     ULONG BufferType;
00128     void         *pvBuffer;
00129 } SecBuffer, *PSecBuffer;
00130 
00131 /* values for BufferType */
00132 #define SECBUFFER_EMPTY               0
00133 #define SECBUFFER_DATA                1
00134 #define SECBUFFER_TOKEN               2
00135 #define SECBUFFER_PKG_PARAMS          3
00136 #define SECBUFFER_MISSING             4
00137 #define SECBUFFER_EXTRA               5
00138 #define SECBUFFER_STREAM_TRAILER      6
00139 #define SECBUFFER_STREAM_HEADER       7
00140 #define SECBUFFER_NEGOTIATION_INFO    8
00141 #define SECBUFFER_PADDING             9
00142 #define SECBUFFER_STREAM             10
00143 #define SECBUFFER_MECHLIST           11
00144 #define SECBUFFER_MECHLIST_SIGNATURE 12
00145 #define SECBUFFER_TARGET             13
00146 #define SECBUFFER_CHANNEL_BINDINGS   14
00147 
00148 #define SECBUFFER_ATTRMASK               0xf0000000
00149 #define SECBUFFER_READONLY               0x80000000
00150 #define SECBUFFER_READONLY_WITH_CHECKSUM 0x10000000
00151 #define SECBUFFER_RESERVED               0x60000000
00152 
00153 typedef struct _SecBufferDesc
00154 {
00155     ULONG ulVersion;
00156     ULONG cBuffers;
00157     PSecBuffer    pBuffers;
00158 } SecBufferDesc, *PSecBufferDesc;
00159 
00160 /* values for ulVersion */
00161 #define SECBUFFER_VERSION 0
00162 
00163 typedef void (SEC_ENTRY *SEC_GET_KEY_FN)(void *Arg, void *Principal,
00164  ULONG KeyVer, void **Key, SECURITY_STATUS *Status);
00165 
00166 SECURITY_STATUS SEC_ENTRY EnumerateSecurityPackagesA(PULONG pcPackages,
00167  PSecPkgInfoA *ppPackageInfo);
00168 SECURITY_STATUS SEC_ENTRY EnumerateSecurityPackagesW(PULONG pcPackages,
00169  PSecPkgInfoW *ppPackageInfo);
00170 #define EnumerateSecurityPackages WINELIB_NAME_AW(EnumerateSecurityPackages)
00171 
00172 typedef SECURITY_STATUS (SEC_ENTRY *ENUMERATE_SECURITY_PACKAGES_FN_A)(PULONG,
00173  PSecPkgInfoA *);
00174 typedef SECURITY_STATUS (SEC_ENTRY *ENUMERATE_SECURITY_PACKAGES_FN_W)(PULONG,
00175  PSecPkgInfoW *);
00176 #define ENUMERATE_SECURITY_PACKAGES_FN WINELIB_NAME_AW(ENUMERATE_SECURITY_PACKAGES_FN_)
00177 
00178 SECURITY_STATUS SEC_ENTRY QueryCredentialsAttributesA(
00179  PCredHandle phCredential, ULONG ulAttribute, void *pBuffer);
00180 SECURITY_STATUS SEC_ENTRY QueryCredentialsAttributesW(
00181  PCredHandle phCredential, ULONG ulAttribute, void *pBuffer);
00182 #define QueryCredentialsAttributes WINELIB_NAME_AW(QueryCredentialsAttributes)
00183 
00184 typedef SECURITY_STATUS (SEC_ENTRY *QUERY_CREDENTIALS_ATTRIBUTES_FN_A)
00185  (PCredHandle, ULONG, PVOID);
00186 typedef SECURITY_STATUS (SEC_ENTRY *QUERY_CREDENTIALS_ATTRIBUTES_FN_W)
00187  (PCredHandle, ULONG, PVOID);
00188 #define QUERY_CREDENTIALS_ATTRIBUTES_FN WINELIB_NAME_AW(QUERY_CREDENTIALS_ATTRIBUTES_FN_)
00189 
00190 /* values for QueryCredentialsAttributes ulAttribute */
00191 #define SECPKG_CRED_ATTR_NAMES 1
00192 
00193 /* types for QueryCredentialsAttributes */
00194 typedef struct _SecPkgCredentials_NamesA
00195 {
00196     SEC_CHAR *sUserName;
00197 } SecPkgCredentials_NamesA, *PSecPkgCredentials_NamesA;
00198 
00199 typedef struct _SecPkgCredentials_NamesW
00200 {
00201     SEC_WCHAR *sUserName;
00202 } SecPkgCredentials_NamesW, *PSecPkgCredentials_NamesW;
00203 
00204 #define SecPkgCredentials_Names WINELIB_NAME_AW(SecPkgCredentials_Names)
00205 
00206 SECURITY_STATUS SEC_ENTRY AcquireCredentialsHandleA(
00207  SEC_CHAR *pszPrincipal, SEC_CHAR *pszPackage, ULONG fCredentialsUse,
00208  PLUID pvLogonID, PVOID pAuthData, SEC_GET_KEY_FN pGetKeyFn,
00209  PVOID pvGetKeyArgument, PCredHandle phCredential, PTimeStamp ptsExpiry);
00210 SECURITY_STATUS SEC_ENTRY AcquireCredentialsHandleW(
00211  SEC_WCHAR *pszPrincipal, SEC_WCHAR *pszPackage, ULONG fCredentialsUse,
00212  PLUID pvLogonID, PVOID pAuthData, SEC_GET_KEY_FN pGetKeyFn,
00213  PVOID pvGetKeyArgument, PCredHandle phCredential, PTimeStamp ptsExpiry);
00214 #define AcquireCredentialsHandle WINELIB_NAME_AW(AcquireCredentialsHandle)
00215 
00216 /* flags for fCredentialsUse */
00217 #define SECPKG_CRED_INBOUND  0x00000001
00218 #define SECPKG_CRED_OUTBOUND 0x00000002
00219 #define SECPKG_CRED_BOTH     (SECPKG_CRED_INBOUND | SECPKG_CRED_OUTBOUND)
00220 #define SECPKG_CRED_DEFAULT  0x00000004
00221 #define SECPKG_CRED_RESERVED 0xf0000000
00222 
00223 typedef SECURITY_STATUS (SEC_ENTRY *ACQUIRE_CREDENTIALS_HANDLE_FN_A)(
00224  SEC_CHAR *, SEC_CHAR *, ULONG, PLUID, PVOID, SEC_GET_KEY_FN, PVOID,
00225  PCredHandle, PTimeStamp);
00226 typedef SECURITY_STATUS (SEC_ENTRY *ACQUIRE_CREDENTIALS_HANDLE_FN_W)(
00227  SEC_WCHAR *, SEC_WCHAR *, ULONG, PLUID, PVOID, SEC_GET_KEY_FN, PVOID,
00228  PCredHandle, PTimeStamp);
00229 #define ACQUIRE_CREDENTIALS_HANDLE_FN WINELIB_NAME_AW(ACQUIRE_CREDENTIALS_HANDLE_FN_)
00230 
00231 SECURITY_STATUS SEC_ENTRY FreeContextBuffer(PVOID pv);
00232 
00233 typedef SECURITY_STATUS (SEC_ENTRY *FREE_CONTEXT_BUFFER_FN)(PVOID);
00234 
00235 SECURITY_STATUS SEC_ENTRY FreeCredentialsHandle(PCredHandle
00236  phCredential);
00237 
00238 #define FreeCredentialHandle FreeCredentialsHandle
00239 
00240 typedef SECURITY_STATUS (SEC_ENTRY *FREE_CREDENTIALS_HANDLE_FN)(PCredHandle);
00241 
00242 SECURITY_STATUS SEC_ENTRY InitializeSecurityContextA(
00243  PCredHandle phCredential, PCtxtHandle phContext,
00244  SEC_CHAR *pszTargetName, ULONG fContextReq,
00245  ULONG Reserved1, ULONG TargetDataRep, PSecBufferDesc pInput,
00246  ULONG Reserved2, PCtxtHandle phNewContext, PSecBufferDesc pOutput,
00247  ULONG *pfContextAttr, PTimeStamp ptsExpiry);
00248 SECURITY_STATUS SEC_ENTRY InitializeSecurityContextW(
00249  PCredHandle phCredential, PCtxtHandle phContext,
00250  SEC_WCHAR *pszTargetName, ULONG fContextReq,
00251  ULONG Reserved1, ULONG TargetDataRep, PSecBufferDesc pInput,
00252  ULONG Reserved2, PCtxtHandle phNewContext, PSecBufferDesc pOutput,
00253  ULONG *pfContextAttr, PTimeStamp ptsExpiry);
00254 #define InitializeSecurityContext WINELIB_NAME_AW(InitializeSecurityContext)
00255 
00256 typedef SECURITY_STATUS (SEC_ENTRY *INITIALIZE_SECURITY_CONTEXT_FN_A)
00257  (PCredHandle, PCtxtHandle, SEC_CHAR *, ULONG, ULONG,
00258  ULONG, PSecBufferDesc, ULONG, PCtxtHandle, PSecBufferDesc,
00259  ULONG *, PTimeStamp);
00260 typedef SECURITY_STATUS (SEC_ENTRY *INITIALIZE_SECURITY_CONTEXT_FN_W)
00261  (PCredHandle, PCtxtHandle, SEC_WCHAR *, ULONG, ULONG,
00262  ULONG, PSecBufferDesc, ULONG, PCtxtHandle, PSecBufferDesc,
00263  ULONG *, PTimeStamp);
00264 #define INITIALIZE_SECURITY_CONTEXT_FN WINELIB_NAME_AW(INITIALIZE_SECURITY_CONTEXT_FN_)
00265 
00266 /* flags for InitializeSecurityContext fContextReq and pfContextAttr */
00267 #define ISC_REQ_DELEGATE               0x00000001
00268 #define ISC_REQ_MUTUAL_AUTH            0x00000002
00269 #define ISC_REQ_REPLAY_DETECT          0x00000004
00270 #define ISC_REQ_SEQUENCE_DETECT        0x00000008
00271 #define ISC_REQ_CONFIDENTIALITY        0x00000010
00272 #define ISC_REQ_USE_SESSION_KEY        0x00000020
00273 #define ISC_REQ_PROMPT_FOR_CREDS       0x00000040
00274 #define ISC_REQ_USE_SUPPLIED_CREDS     0x00000080
00275 #define ISC_REQ_ALLOCATE_MEMORY        0x00000100
00276 #define ISC_REQ_USE_DCE_STYLE          0x00000200
00277 #define ISC_REQ_DATAGRAM               0x00000400
00278 #define ISC_REQ_CONNECTION             0x00000800
00279 #define ISC_REQ_CALL_LEVEL             0x00001000
00280 #define ISC_REQ_FRAGMENT_SUPPLIED      0x00002000
00281 #define ISC_REQ_EXTENDED_ERROR         0x00004000
00282 #define ISC_REQ_STREAM                 0x00008000
00283 #define ISC_REQ_INTEGRITY              0x00010000
00284 #define ISC_REQ_IDENTIFY               0x00020000
00285 #define ISC_REQ_NULL_SESSION           0x00040000
00286 #define ISC_REQ_MANUAL_CRED_VALIDATION 0x00080000
00287 #define ISC_REQ_RESERVED1              0x00100000
00288 #define ISC_REQ_FRAGMENT_TO_FIT        0x00200000
00289 
00290 #define ISC_RET_DELEGATE               0x00000001
00291 #define ISC_RET_MUTUAL_AUTH            0x00000002
00292 #define ISC_RET_REPLAY_DETECT          0x00000004
00293 #define ISC_RET_SEQUENCE_DETECT        0x00000008
00294 #define ISC_RET_CONFIDENTIALITY        0x00000010
00295 #define ISC_RET_USE_SESSION_KEY        0x00000020
00296 #define ISC_RET_USED_COLLECTED_CREDS   0x00000040
00297 #define ISC_RET_USED_SUPPLIED_CREDS    0x00000080
00298 #define ISC_RET_ALLOCATED_MEMORY       0x00000100
00299 #define ISC_RET_USED_DCE_STYLE         0x00000200
00300 #define ISC_RET_DATAGRAM               0x00000400
00301 #define ISC_RET_CONNECTION             0x00000800
00302 #define ISC_RET_INTERMEDIATE_RETURN    0x00001000
00303 #define ISC_RET_CALL_LEVEL             0x00002000
00304 #define ISC_RET_EXTENDED_ERROR         0x00004000
00305 #define ISC_RET_STREAM                 0x00008000
00306 #define ISC_RET_INTEGRITY              0x00010000
00307 #define ISC_RET_IDENTIFY               0x00020000
00308 #define ISC_RET_NULL_SESSION           0x00040000
00309 #define ISC_RET_MANUAL_CRED_VALIDATION 0x00080000
00310 #define ISC_RET_RESERVED1              0x00100000
00311 #define ISC_RET_FRAGMENT_ONLY          0x00200000
00312 
00313 SECURITY_STATUS SEC_ENTRY AcceptSecurityContext(
00314  PCredHandle phCredential, PCtxtHandle phContext, PSecBufferDesc pInput,
00315  ULONG fContextReq, ULONG TargetDataRep,
00316  PCtxtHandle phNewContext, PSecBufferDesc pOutput,
00317  ULONG *pfContextAttr, PTimeStamp ptsExpiry);
00318 
00319 typedef SECURITY_STATUS (SEC_ENTRY *ACCEPT_SECURITY_CONTEXT_FN)(PCredHandle,
00320  PCtxtHandle, PSecBufferDesc, ULONG, ULONG, PCtxtHandle,
00321  PSecBufferDesc, ULONG *, PTimeStamp);
00322 
00323 /* flags for AcceptSecurityContext fContextReq and pfContextAttr */
00324 #define ASC_REQ_DELEGATE               0x00000001
00325 #define ASC_REQ_MUTUAL_AUTH            0x00000002
00326 #define ASC_REQ_REPLAY_DETECT          0x00000004
00327 #define ASC_REQ_SEQUENCE_DETECT        0x00000008
00328 #define ASC_REQ_CONFIDENTIALITY        0x00000010
00329 #define ASC_REQ_USE_SESSION_KEY        0x00000020
00330 #define ASC_REQ_ALLOCATE_MEMORY        0x00000100
00331 #define ASC_REQ_USE_DCE_STYLE          0x00000200
00332 #define ASC_REQ_DATAGRAM               0x00000400
00333 #define ASC_REQ_CONNECTION             0x00000800
00334 #define ASC_REQ_CALL_LEVEL             0x00001000
00335 #define ASC_REQ_FRAGMENT_SUPPLIED      0x00002000
00336 #define ASC_REQ_EXTENDED_ERROR         0x00008000
00337 #define ASC_REQ_STREAM                 0x00010000
00338 #define ASC_REQ_INTEGRITY              0x00020000
00339 #define ASC_REQ_LICENSING              0x00040000
00340 #define ASC_REQ_IDENTIFY               0x00080000
00341 #define ASC_REQ_ALLOW_NULL_SESSION     0x00100000
00342 #define ASC_REQ_ALLOW_NON_USER_LOGONS  0x00200000
00343 #define ASC_REQ_ALLOW_CONTEXT_REPLAY   0x00400000
00344 #define ASC_REQ_FRAGMENT_TO_FIT        0x00800000
00345 #define ASC_REQ_FRAGMENT_NO_TOKEN      0x01000000
00346 
00347 #define ASC_RET_DELEGATE               0x00000001
00348 #define ASC_RET_MUTUAL_AUTH            0x00000002
00349 #define ASC_RET_REPLAY_DETECT          0x00000004
00350 #define ASC_RET_SEQUENCE_DETECT        0x00000008
00351 #define ASC_RET_CONFIDENTIALITY        0x00000010
00352 #define ASC_RET_USE_SESSION_KEY        0x00000020
00353 #define ASC_RET_ALLOCATED_MEMORY       0x00000100
00354 #define ASC_RET_USED_DCE_STYLE         0x00000200
00355 #define ASC_RET_DATAGRAM               0x00000400
00356 #define ASC_RET_CONNECTION             0x00000800
00357 #define ASC_RET_CALL_LEVEL             0x00002000
00358 #define ASC_RET_THIRD_LEG_FAILED       0x00004000
00359 #define ASC_RET_EXTENDED_ERROR         0x00008000
00360 #define ASC_RET_STREAM                 0x00010000
00361 #define ASC_RET_INTEGRITY              0x00020000
00362 #define ASC_RET_LICENSING              0x00040000
00363 #define ASC_RET_IDENTIFY               0x00080000
00364 #define ASC_RET_NULL_SESSION           0x00100000
00365 #define ASC_RET_ALLOW_NON_USER_LOGONS  0x00200000
00366 #define ASC_RET_ALLOW_CONTEXT_REPLAY   0x00400000
00367 #define ASC_RET_FRAGMENT_ONLY          0x00800000
00368 #define ASC_RET_NO_TOKEN               0x01000000
00369 
00370 /*Vvalues for TargetDataRep */
00371 #define SECURITY_NATIVE_DREP           0x00000010
00372 #define SECURITY_NETWORK_DREP          0x00000000
00373 
00374 
00375 SECURITY_STATUS SEC_ENTRY CompleteAuthToken(PCtxtHandle phContext,
00376  PSecBufferDesc pToken);
00377 
00378 typedef SECURITY_STATUS (SEC_ENTRY *COMPLETE_AUTH_TOKEN_FN)(PCtxtHandle,
00379  PSecBufferDesc);
00380 
00381 SECURITY_STATUS SEC_ENTRY DeleteSecurityContext(PCtxtHandle phContext);
00382 
00383 typedef SECURITY_STATUS (SEC_ENTRY *DELETE_SECURITY_CONTEXT_FN)(PCtxtHandle);
00384 
00385 SECURITY_STATUS SEC_ENTRY ApplyControlToken(PCtxtHandle phContext,
00386  PSecBufferDesc pInput);
00387 
00388 typedef SECURITY_STATUS (SEC_ENTRY *APPLY_CONTROL_TOKEN_FN)(PCtxtHandle,
00389  PSecBufferDesc);
00390 
00391 SECURITY_STATUS SEC_ENTRY QueryContextAttributesA(PCtxtHandle phContext,
00392  ULONG ulAttribute, void *pBuffer);
00393 SECURITY_STATUS SEC_ENTRY QueryContextAttributesW(PCtxtHandle phContext,
00394  ULONG ulAttribute, void *pBuffer);
00395 #define QueryContextAttributes WINELIB_NAME_AW(QueryContextAttributes)
00396 
00397 typedef SECURITY_STATUS (SEC_ENTRY *QUERY_CONTEXT_ATTRIBUTES_FN_A)(PCtxtHandle,
00398  ULONG, void *);
00399 typedef SECURITY_STATUS (SEC_ENTRY *QUERY_CONTEXT_ATTRIBUTES_FN_W)(PCtxtHandle,
00400  ULONG, void *);
00401 #define QUERY_CONTEXT_ATTRIBUTES_FN WINELIB_NAME_AW(QUERY_CONTEXT_ATTRIBUTES_FN_)
00402 
00403 /* values for QueryContextAttributes/SetContextAttributes ulAttribute */
00404 #define SECPKG_ATTR_SIZES               0
00405 #define SECPKG_ATTR_NAMES               1
00406 #define SECPKG_ATTR_LIFESPAN            2
00407 #define SECPKG_ATTR_DCE_INFO            3
00408 #define SECPKG_ATTR_STREAM_SIZES        4
00409 #define SECPKG_ATTR_KEY_INFO            5
00410 #define SECPKG_ATTR_AUTHORITY           6
00411 #define SECPKG_ATTR_PROTO_INFO          7
00412 #define SECPKG_ATTR_PASSWORD_EXPIRY     8
00413 #define SECPKG_ATTR_SESSION_KEY         9
00414 #define SECPKG_ATTR_PACKAGE_INFO       10
00415 #define SECPKG_ATTR_USER_FLAGS         11
00416 #define SECPKG_ATTR_NEGOTIATION_INFO   12
00417 #define SECPKG_ATTR_NATIVE_NAMES       13
00418 #define SECPKG_ATTR_FLAGS              14
00419 #define SECPKG_ATTR_USE_VALIDATED      15
00420 #define SECPKG_ATTR_CREDENTIAL_NAME    16
00421 #define SECPKG_ATTR_TARGET_INFORMATION 17
00422 #define SECPKG_ATTR_ACCESS_TOKEN       18
00423 #define SECPKG_ATTR_TARGET             19
00424 #define SECPKG_ATTR_AUTHENTICATION_ID  20
00425 
00426 /* types for QueryContextAttributes/SetContextAttributes */
00427 
00428 typedef struct _SecPkgContext_Sizes
00429 {
00430     ULONG cbMaxToken;
00431     ULONG cbMaxSignature;
00432     ULONG cbBlockSize;
00433     ULONG cbSecurityTrailer;
00434 } SecPkgContext_Sizes, *PSecPkgContext_Sizes;
00435 
00436 typedef struct _SecPkgContext_StreamSizes
00437 {
00438     ULONG cbHeader;
00439     ULONG cbTrailer;
00440     ULONG cbMaximumMessage;
00441     ULONG cbBuffers;
00442     ULONG cbBlockSize;
00443 } SecPkgContext_StreamSizes, *PSecPkgContext_StreamSizes;
00444 
00445 typedef struct _SecPkgContext_NamesA
00446 {
00447     SEC_CHAR *sUserName;
00448 } SecPkgContext_NamesA, *PSecPkgContext_NamesA;
00449 
00450 typedef struct _SecPkgContext_NamesW
00451 {
00452     SEC_WCHAR *sUserName;
00453 } SecPkgContext_NamesW, *PSecPkgContext_NamesW;
00454 
00455 #define SecPkgContext_Names WINELIB_NAME_AW(SecPkgContext_Names)
00456 #define PSecPkgContext_Names WINELIB_NAME_AW(PSecPkgContext_Names)
00457 
00458 typedef struct _SecPkgContext_Lifespan
00459 {
00460     TimeStamp tsStart;
00461     TimeStamp tsExpiry;
00462 } SecPkgContext_Lifespan, *PSecPkgContext_Lifespan;
00463 
00464 typedef struct _SecPkgContext_DceInfo
00465 {
00466     ULONG AuthzSvc;
00467     void *pPac;
00468 } SecPkgContext_DceInfo, *PSecPkgContext_DceInfo;
00469 
00470 typedef struct _SecPkgContext_KeyInfoA
00471 {
00472     SEC_CHAR      *sSignatureAlgorithmName;
00473     SEC_CHAR      *sEncryptAlgorithmName;
00474     ULONG  KeySize;
00475     ULONG  SignatureAlgorithm;
00476     ULONG  EncryptAlgorithm;
00477 } SecPkgContext_KeyInfoA, *PSecPkgContext_KeyInfoA;
00478 
00479 typedef struct _SecPkgContext_KeyInfoW
00480 {
00481     SEC_WCHAR     *sSignatureAlgorithmName;
00482     SEC_WCHAR     *sEncryptAlgorithmName;
00483     ULONG  KeySize;
00484     ULONG  SignatureAlgorithm;
00485     ULONG  EncryptAlgorithm;
00486 } SecPkgContext_KeyInfoW, *PSecPkgContext_KeyInfoW;
00487 
00488 #define SecPkgContext_KeyInfo WINELIB_NAME_AW(SecPkgContext_KeyInfo)
00489 #define PSecPkgContext_KeyInfo WINELIB_NAME_AW(PSecPkgContext_KeyInfo)
00490 
00491 typedef struct _SecPkgContext_AuthorityA
00492 {
00493     SEC_CHAR *sAuthorityName;
00494 } SecPkgContext_AuthorityA, *PSecPkgContext_AuthorityA;
00495 
00496 typedef struct _SecPkgContext_AuthorityW
00497 {
00498     SEC_WCHAR *sAuthorityName;
00499 } SecPkgContext_AuthorityW, *PSecPkgContext_AuthorityW;
00500 
00501 #define SecPkgContext_Authority WINELIB_NAME_AW(SecPkgContext_Authority)
00502 #define PSecPkgContext_Authority WINELIB_NAME_AW(PSecPkgContext_Authority)
00503 
00504 typedef struct _SecPkgContext_ProtoInfoA
00505 {
00506     SEC_CHAR     *sProtocolName;
00507     ULONG majorVersion;
00508     ULONG minorVersion;
00509 } SecPkgContext_ProtoInfoA, *PSecPkgContext_ProtoInfoA;
00510 
00511 typedef struct _SecPkgContext_ProtoInfoW
00512 {
00513     SEC_WCHAR    *sProtocolName;
00514     ULONG majorVersion;
00515     ULONG minorVersion;
00516 } SecPkgContext_ProtoInfoW, *PSecPkgContext_ProtoInfoW;
00517 
00518 #define SecPkgContext_ProtoInfo WINELIB_NAME_AW(SecPkgContext_ProtoInfo)
00519 #define PSecPkgContext_ProtoInfo WINELIB_NAME_AW(PSecPkgContext_ProtoInfo)
00520 
00521 typedef struct _SecPkgContext_PasswordExpiry
00522 {
00523     TimeStamp tsPasswordExpires;
00524 } SecPkgContext_PasswordExpiry, *PSecPkgContext_PasswordExpiry;
00525 
00526 typedef struct _SecPkgContext_SessionKey
00527 {
00528     ULONG  SessionKeyLength;
00529     unsigned char *SessionKey;
00530 } SecPkgContext_SessionKey, *PSecPkgContext_SessionKey;
00531 
00532 typedef struct _SecPkgContext_PackageInfoA
00533 {
00534     PSecPkgInfoA PackageInfo;
00535 } SecPkgContext_PackageInfoA, *PSecPkgContext_PackageInfoA;
00536 
00537 typedef struct _SecPkgContext_PackageInfoW
00538 {
00539     PSecPkgInfoW PackageInfo;
00540 } SecPkgContext_PackageInfoW, *PSecPkgContext_PackageInfoW;
00541 
00542 #define SecPkgContext_PackageInfo WINELIB_NAME_AW(SecPkgContext_PackageInfo)
00543 #define PSecPkgContext_PackageInfo WINELIB_NAME_AW(PSecPkgContext_PackageInfo)
00544 
00545 typedef struct _SecPkgContext_Flags
00546 {
00547     ULONG Flags;
00548 } SecPkgContext_Flags, *PSecPkgContext_Flags;
00549 
00550 typedef struct _SecPkgContext_UserFlags
00551 {
00552     ULONG UserFlags;
00553 } SecPkgContext_UserFlags, *PSecPkgContext_UserFlags;
00554 
00555 typedef struct _SecPkgContext_NegotiationInfoA
00556 {
00557     PSecPkgInfoA  PackageInfo;
00558     ULONG NegotiationState;
00559 } SecPkgContext_NegotiationInfoA, *PSecPkgContext_NegotiationInfoA;
00560 
00561 typedef struct _SecPkgContext_NegotiationInfoW
00562 {
00563     PSecPkgInfoW  PackageInfo;
00564     ULONG NegotiationState;
00565 } SecPkgContext_NegotiationInfoW, *PSecPkgContext_NegotiationInfoW;
00566 
00567 #define SecPkgContext_NegotiationInfo WINELIB_NAME_AW(SecPkgContext_NegotiationInfo)
00568 #define PSecPkgContext_NegotiationInfo WINELIB_NAME_AW(PSecPkgContext_NegotiationInfo)
00569 
00570 /* values for NegotiationState */
00571 #define SECPKG_NEGOTIATION_COMPLETE      0
00572 #define SECPKG_NEGOTIATION_OPTIMISTIC    1
00573 #define SECPKG_NEGOTIATION_IN_PROGRESS   2
00574 #define SECPKG_NEGOTIATION_DIRECT        3
00575 #define SECPKG_NEGOTIATION_TRY_MULTICRED 4
00576 
00577 typedef struct _SecPkgContext_NativeNamesA
00578 {
00579     SEC_CHAR *sClientName;
00580     SEC_CHAR *sServerName;
00581 } SecPkgContext_NativeNamesA, *PSecPkgContext_NativeNamesA;
00582 
00583 typedef struct _SecPkgContext_NativeNamesW
00584 {
00585     SEC_WCHAR *sClientName;
00586     SEC_WCHAR *sServerName;
00587 } SecPkgContext_NativeNamesW, *PSecPkgContext_NativeNamesW;
00588 
00589 #define SecPkgContext_NativeNames WINELIB_NAME_AW(SecPkgContext_NativeNames)
00590 #define PSecPkgContext_NativeNames WINELIB_NAME_AW(PSecPkgContext_NativeNames)
00591 
00592 typedef struct _SecPkgContext_CredentialNameA
00593 {
00594     ULONG  CredentialType;
00595     SEC_CHAR      *sCredentialName;
00596 } SecPkgContext_CredentialNameA, *PSecPkgContext_CredentialNameA;
00597 
00598 typedef struct _SecPkgContext_CredentialNameW
00599 {
00600     ULONG  CredentialType;
00601     SEC_WCHAR     *sCredentialName;
00602 } SecPkgContext_CredentialNameW, *PSecPkgContext_CredentialNameW;
00603 
00604 #define SecPkgContext_CredentialName WINELIB_NAME_AW(SecPkgContext_CredentialName)
00605 #define PSecPkgContext_CredentialName WINELIB_NAME_AW(PSecPkgContext_CredentialName)
00606 
00607 typedef struct _SecPkgContext_AccessToken
00608 {
00609     void *AccessToken;
00610 } SecPkgContext_AccessToken, *PSecPkgContext_AccessToken;
00611 
00612 typedef struct _SecPkgContext_TargetInformation
00613 {
00614     ULONG  MarshalledTargetInfoLength;
00615     unsigned char *MarshalledTargetInfo;
00616 } SecPkgContext_TargetInformation, *PSecPkgContext_TargetInformation;
00617 
00618 typedef struct _SecPkgContext_AuthzID
00619 {
00620     ULONG  AuthzIDLength;
00621     char          *AuthzID;
00622 } SecPkgContext_AuthzID, *PSecPkgContext_AuthzID;
00623 
00624 typedef struct _SecPkgContext_Target
00625 {
00626     ULONG  TargetLength;
00627     char          *Target;
00628 } SecPkgContext_Target, *PSecPkgContext_Target;
00629 
00630 SECURITY_STATUS SEC_ENTRY ImpersonateSecurityContext(PCtxtHandle phContext);
00631 
00632 typedef SECURITY_STATUS (SEC_ENTRY *IMPERSONATE_SECURITY_CONTEXT_FN)
00633  (PCtxtHandle);
00634 
00635 SECURITY_STATUS SEC_ENTRY RevertSecurityContext(PCtxtHandle phContext);
00636 
00637 typedef SECURITY_STATUS (SEC_ENTRY *REVERT_SECURITY_CONTEXT_FN)(PCtxtHandle);
00638 
00639 SECURITY_STATUS SEC_ENTRY MakeSignature(PCtxtHandle phContext,
00640  ULONG fQOP, PSecBufferDesc pMessage, ULONG MessageSeqNo);
00641 
00642 typedef SECURITY_STATUS (SEC_ENTRY *MAKE_SIGNATURE_FN)(PCtxtHandle,
00643  ULONG, PSecBufferDesc, ULONG);
00644 
00645 SECURITY_STATUS SEC_ENTRY VerifySignature(PCtxtHandle phContext,
00646  PSecBufferDesc pMessage, ULONG MessageSeqNo, PULONG pfQOP);
00647 
00648 typedef SECURITY_STATUS (SEC_ENTRY *VERIFY_SIGNATURE_FN)(PCtxtHandle,
00649  PSecBufferDesc, ULONG, PULONG);
00650 
00651 SECURITY_STATUS SEC_ENTRY QuerySecurityPackageInfoA(
00652  SEC_CHAR *pszPackageName, PSecPkgInfoA *ppPackageInfo);
00653 SECURITY_STATUS SEC_ENTRY QuerySecurityPackageInfoW(
00654  SEC_WCHAR *pszPackageName, PSecPkgInfoW *ppPackageInfo);
00655 #define QuerySecurityPackageInfo WINELIB_NAME_AW(QuerySecurityPackageInfo)
00656 
00657 typedef SECURITY_STATUS (SEC_ENTRY *QUERY_SECURITY_PACKAGE_INFO_FN_A)
00658  (SEC_CHAR *, PSecPkgInfoA *);
00659 typedef SECURITY_STATUS (SEC_ENTRY *QUERY_SECURITY_PACKAGE_INFO_FN_W)
00660  (SEC_WCHAR *, PSecPkgInfoW *);
00661 #define QUERY_SECURITY_PACKAGE_INFO_FN WINELIB_NAME_AW(QUERY_SECURITY_PACKAGE_INFO_FN_)
00662 
00663 SECURITY_STATUS SEC_ENTRY ExportSecurityContext(PCtxtHandle phContext,
00664  ULONG fFlags, PSecBuffer pPackedContext, void **pToken);
00665 
00666 typedef SECURITY_STATUS (SEC_ENTRY *EXPORT_SECURITY_CONTEXT_FN)(PCtxtHandle,
00667  ULONG, PSecBuffer, void **);
00668 
00669 /* values for ExportSecurityContext fFlags */
00670 #define SECPKG_CONTEXT_EXPORT_RESET_NEW  0x00000001
00671 #define SECPKG_CONTEXT_EXPORT_DELETE_OLD 0x00000002
00672 
00673 SECURITY_STATUS SEC_ENTRY ImportSecurityContextA(SEC_CHAR *pszPackage,
00674  PSecBuffer pPackedContext, void *Token, PCtxtHandle phContext);
00675 SECURITY_STATUS SEC_ENTRY ImportSecurityContextW(SEC_WCHAR *pszPackage,
00676  PSecBuffer pPackedContext, void *Token, PCtxtHandle phContext);
00677 #define ImportSecurityContext WINELIB_NAME_AW(ImportSecurityContext)
00678 
00679 typedef SECURITY_STATUS (SEC_ENTRY *IMPORT_SECURITY_CONTEXT_FN_A)(SEC_CHAR *,
00680  PSecBuffer, void *, PCtxtHandle);
00681 typedef SECURITY_STATUS (SEC_ENTRY *IMPORT_SECURITY_CONTEXT_FN_W)(SEC_WCHAR *,
00682  PSecBuffer, void *, PCtxtHandle);
00683 #define IMPORT_SECURITY_CONTEXT_FN WINELIB_NAME_AW(IMPORT_SECURITY_CONTEXT_FN_)
00684 
00685 SECURITY_STATUS SEC_ENTRY AddCredentialsA(PCredHandle hCredentials,
00686  SEC_CHAR *pszPrincipal, SEC_CHAR *pszPackage, ULONG fCredentialUse,
00687  void *pAuthData, SEC_GET_KEY_FN pGetKeyFn, void *pvGetKeyArgument,
00688  PTimeStamp ptsExpiry);
00689 SECURITY_STATUS SEC_ENTRY AddCredentialsW(PCredHandle hCredentials,
00690  SEC_WCHAR *pszPrincipal, SEC_WCHAR *pszPackage, ULONG fCredentialUse,
00691  void *pAuthData, SEC_GET_KEY_FN pGetKeyFn, void *pvGetKeyArgument,
00692  PTimeStamp ptsExpiry);
00693 #define AddCredentials WINELIB_NAME_AW(AddCredentials)
00694 
00695 typedef SECURITY_STATUS (SEC_ENTRY *ADD_CREDENTIALS_FN_A)(PCredHandle,
00696  SEC_CHAR *, SEC_CHAR *, ULONG, void *, SEC_GET_KEY_FN, void *,
00697  PTimeStamp);
00698 typedef SECURITY_STATUS (SEC_ENTRY *ADD_CREDENTIALS_FN_W)(PCredHandle,
00699  SEC_WCHAR *, SEC_WCHAR *, ULONG, void *, SEC_GET_KEY_FN, void *,
00700  PTimeStamp);
00701 
00702 SECURITY_STATUS SEC_ENTRY QuerySecurityContextToken(PCtxtHandle phContext,
00703  HANDLE *phToken);
00704 
00705 typedef SECURITY_STATUS (SEC_ENTRY *QUERY_SECURITY_CONTEXT_TOKEN_FN)
00706  (PCtxtHandle, HANDLE *);
00707 
00708 SECURITY_STATUS SEC_ENTRY EncryptMessage(PCtxtHandle phContext, ULONG fQOP,
00709  PSecBufferDesc pMessage, ULONG MessageSeqNo);
00710 SECURITY_STATUS SEC_ENTRY DecryptMessage(PCtxtHandle phContext,
00711  PSecBufferDesc pMessage, ULONG MessageSeqNo, PULONG pfQOP);
00712 
00713 /* values for EncryptMessage fQOP */
00714 #define SECQOP_WRAP_NO_ENCRYPT 0x80000001
00715 
00716 typedef SECURITY_STATUS (SEC_ENTRY *ENCRYPT_MESSAGE_FN)(PCtxtHandle, ULONG,
00717  PSecBufferDesc, ULONG);
00718 typedef SECURITY_STATUS (SEC_ENTRY *DECRYPT_MESSAGE_FN)(PCtxtHandle,
00719  PSecBufferDesc, ULONG, PULONG);
00720 
00721 SECURITY_STATUS SEC_ENTRY SetContextAttributesA(PCtxtHandle phContext,
00722  ULONG ulAttribute, void *pBuffer, ULONG cbBuffer);
00723 SECURITY_STATUS SEC_ENTRY SetContextAttributesW(PCtxtHandle phContext,
00724  ULONG ulAttribute, void *pBuffer, ULONG cbBuffer);
00725 #define SetContextAttributes WINELIB_NAME_AW(SetContextAttributes)
00726 
00727 typedef SECURITY_STATUS (SEC_ENTRY *SET_CONTEXT_ATTRIBUTES_FN_A)(PCtxtHandle,
00728  ULONG, void *, ULONG);
00729 typedef SECURITY_STATUS (SEC_ENTRY *SET_CONTEXT_ATTRIBUTES_FN_W)(PCtxtHandle,
00730  ULONG, void *, ULONG);
00731 
00732 #define SECURITY_ENTRYPOINT_ANSIA "InitSecurityInterfaceA"
00733 #define SECURITY_ENTRYPOINT_ANSIW "InitSecurityInterfaceW"
00734 #define SECURITY_ENTRYPOINT_ANSI WINELIB_NAME_AW(SECURITY_ENTRYPOINT_ANSI)
00735 
00736 typedef struct _SECURITY_FUNCTION_TABLE_A
00737 {
00738     ULONG                     dwVersion;
00739     ENUMERATE_SECURITY_PACKAGES_FN_A  EnumerateSecurityPackagesA;
00740     QUERY_CREDENTIALS_ATTRIBUTES_FN_A QueryCredentialsAttributesA;
00741     ACQUIRE_CREDENTIALS_HANDLE_FN_A   AcquireCredentialsHandleA;
00742     FREE_CREDENTIALS_HANDLE_FN        FreeCredentialsHandle;
00743     void                             *Reserved2;
00744     INITIALIZE_SECURITY_CONTEXT_FN_A  InitializeSecurityContextA;
00745     ACCEPT_SECURITY_CONTEXT_FN        AcceptSecurityContext;
00746     COMPLETE_AUTH_TOKEN_FN            CompleteAuthToken;
00747     DELETE_SECURITY_CONTEXT_FN        DeleteSecurityContext;
00748     APPLY_CONTROL_TOKEN_FN            ApplyControlToken;
00749     QUERY_CONTEXT_ATTRIBUTES_FN_A     QueryContextAttributesA;
00750     IMPERSONATE_SECURITY_CONTEXT_FN   ImpersonateSecurityContext;
00751     REVERT_SECURITY_CONTEXT_FN        RevertSecurityContext;
00752     MAKE_SIGNATURE_FN                 MakeSignature;
00753     VERIFY_SIGNATURE_FN               VerifySignature;
00754     FREE_CONTEXT_BUFFER_FN            FreeContextBuffer;
00755     QUERY_SECURITY_PACKAGE_INFO_FN_A  QuerySecurityPackageInfoA;
00756     void                             *Reserved3;
00757     void                             *Reserved4;
00758     EXPORT_SECURITY_CONTEXT_FN        ExportSecurityContext;
00759     IMPORT_SECURITY_CONTEXT_FN_A      ImportSecurityContextA;
00760     ADD_CREDENTIALS_FN_A              AddCredentialsA;
00761     void                             *Reserved8;
00762     QUERY_SECURITY_CONTEXT_TOKEN_FN   QuerySecurityContextToken;
00763     ENCRYPT_MESSAGE_FN                EncryptMessage;
00764     DECRYPT_MESSAGE_FN                DecryptMessage;
00765     SET_CONTEXT_ATTRIBUTES_FN_A       SetContextAttributesA;
00766 } SecurityFunctionTableA, *PSecurityFunctionTableA;
00767 
00768 /* No, it really is FreeCredentialsHandle, see the thread beginning
00769  * http://sourceforge.net/mailarchive/message.php?msg_id=4321080 for a
00770  * discovery discussion. */
00771 typedef struct _SECURITY_FUNCTION_TABLE_W
00772 {
00773     ULONG                     dwVersion;
00774     ENUMERATE_SECURITY_PACKAGES_FN_W  EnumerateSecurityPackagesW;
00775     QUERY_CREDENTIALS_ATTRIBUTES_FN_W QueryCredentialsAttributesW;
00776     ACQUIRE_CREDENTIALS_HANDLE_FN_W   AcquireCredentialsHandleW;
00777     FREE_CREDENTIALS_HANDLE_FN        FreeCredentialsHandle;
00778     void                             *Reserved2;
00779     INITIALIZE_SECURITY_CONTEXT_FN_W  InitializeSecurityContextW;
00780     ACCEPT_SECURITY_CONTEXT_FN        AcceptSecurityContext;
00781     COMPLETE_AUTH_TOKEN_FN            CompleteAuthToken;
00782     DELETE_SECURITY_CONTEXT_FN        DeleteSecurityContext;
00783     APPLY_CONTROL_TOKEN_FN            ApplyControlToken;
00784     QUERY_CONTEXT_ATTRIBUTES_FN_W     QueryContextAttributesW;
00785     IMPERSONATE_SECURITY_CONTEXT_FN   ImpersonateSecurityContext;
00786     REVERT_SECURITY_CONTEXT_FN        RevertSecurityContext;
00787     MAKE_SIGNATURE_FN                 MakeSignature;
00788     VERIFY_SIGNATURE_FN               VerifySignature;
00789     FREE_CONTEXT_BUFFER_FN            FreeContextBuffer;
00790     QUERY_SECURITY_PACKAGE_INFO_FN_W  QuerySecurityPackageInfoW;
00791     void                             *Reserved3;
00792     void                             *Reserved4;
00793     EXPORT_SECURITY_CONTEXT_FN        ExportSecurityContext;
00794     IMPORT_SECURITY_CONTEXT_FN_W      ImportSecurityContextW;
00795     ADD_CREDENTIALS_FN_W              AddCredentialsW;
00796     void                             *Reserved8;
00797     QUERY_SECURITY_CONTEXT_TOKEN_FN   QuerySecurityContextToken;
00798     ENCRYPT_MESSAGE_FN                EncryptMessage;
00799     DECRYPT_MESSAGE_FN                DecryptMessage;
00800     SET_CONTEXT_ATTRIBUTES_FN_W       SetContextAttributesW;
00801 } SecurityFunctionTableW, *PSecurityFunctionTableW;
00802 
00803 #define SecurityFunctionTable WINELIB_NAME_AW(SecurityFunctionTable)
00804 #define PSecurityFunctionTable WINELIB_NAME_AW(PSecurityFunctionTable)
00805 
00806 #define SECURITY_SUPPORT_PROVIDER_INTERFACE_VERSION   1
00807 #define SECURITY_SUPPORT_PROVIDER_INTERFACE_VERSION_2 2
00808 
00809 PSecurityFunctionTableA SEC_ENTRY InitSecurityInterfaceA(void);
00810 PSecurityFunctionTableW SEC_ENTRY InitSecurityInterfaceW(void);
00811 #define InitSecurityInterface WINELIB_NAME_AW(InitSecurityInterface)
00812 
00813 typedef PSecurityFunctionTableA (SEC_ENTRY *INIT_SECURITY_INTERFACE_A)(void);
00814 typedef PSecurityFunctionTableW (SEC_ENTRY *INIT_SECURITY_INTERFACE_W)(void);
00815 #define INIT_SECURITY_INTERFACE WINELIB_NAME_AW(INIT_SECURITY_INTERFACE_)
00816 
00817 #ifdef __cplusplus
00818 }
00819 #endif
00820 
00821 #endif /* ndef __WINE_SSPI_H__ */

Generated on Fri May 25 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.