| 1 | /* | 
|---|
| 2 | * Copyright (C) 2004 Juan Lang | 
|---|
| 3 | * | 
|---|
| 4 | * This library is free software; you can redistribute it and/or | 
|---|
| 5 | * modify it under the terms of the GNU Lesser General Public | 
|---|
| 6 | * License as published by the Free Software Foundation; either | 
|---|
| 7 | * version 2.1 of the License, or (at your option) any later version. | 
|---|
| 8 | * | 
|---|
| 9 | * This library is distributed in the hope that it will be useful, | 
|---|
| 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|---|
| 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|---|
| 12 | * Lesser General Public License for more details. | 
|---|
| 13 | * | 
|---|
| 14 | * You should have received a copy of the GNU Lesser General Public | 
|---|
| 15 | * License along with this library; if not, write to the Free Software | 
|---|
| 16 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA | 
|---|
| 17 | */ | 
|---|
| 18 | #ifndef __WINE_SSPI_H__ | 
|---|
| 19 | #define __WINE_SSPI_H__ | 
|---|
| 20 |  | 
|---|
| 21 | /* FIXME: #include <sdkddkver.h> */ | 
|---|
| 22 |  | 
|---|
| 23 | #ifdef __cplusplus | 
|---|
| 24 | extern "C" { | 
|---|
| 25 | #endif | 
|---|
| 26 |  | 
|---|
| 27 | #define SEC_ENTRY __stdcall | 
|---|
| 28 |  | 
|---|
| 29 | typedef WCHAR SEC_WCHAR; | 
|---|
| 30 | typedef CHAR  SEC_CHAR; | 
|---|
| 31 |  | 
|---|
| 32 | #ifndef __SECSTATUS_DEFINED__ | 
|---|
| 33 | #define __SECSTATUS_DEFINED__ | 
|---|
| 34 | typedef LONG SECURITY_STATUS; | 
|---|
| 35 | #endif | 
|---|
| 36 |  | 
|---|
| 37 | #ifdef UNICODE | 
|---|
| 38 | typedef SEC_WCHAR * SECURITY_PSTR; | 
|---|
| 39 | typedef CONST SEC_WCHAR *  SECURITY_PCSTR; | 
|---|
| 40 | #else | 
|---|
| 41 | typedef SEC_CHAR * SECURITY_PSTR; | 
|---|
| 42 | typedef CONST SEC_CHAR *  SECURITY_PCSTR; | 
|---|
| 43 | #endif | 
|---|
| 44 |  | 
|---|
| 45 | #ifndef __SECHANDLE_DEFINED__ | 
|---|
| 46 | #define __SECHANDLE_DEFINED__ | 
|---|
| 47 | typedef struct _SecHandle | 
|---|
| 48 | { | 
|---|
| 49 | ULONG_PTR dwLower; | 
|---|
| 50 | ULONG_PTR dwUpper; | 
|---|
| 51 | } SecHandle, *PSecHandle; | 
|---|
| 52 | #endif | 
|---|
| 53 |  | 
|---|
| 54 | #define SecInvalidateHandle(x) do { \ | 
|---|
| 55 | ((PSecHandle)(x))->dwLower = ((ULONG_PTR)((INT_PTR)-1)); \ | 
|---|
| 56 | ((PSecHandle)(x))->dwUpper = ((ULONG_PTR)((INT_PTR)-1)); \ | 
|---|
| 57 | } while (0) | 
|---|
| 58 |  | 
|---|
| 59 | #define SecIsValidHandle(x) \ | 
|---|
| 60 | ((((PSecHandle)(x))->dwLower != ((ULONG_PTR)(INT_PTR)-1)) && \ | 
|---|
| 61 | (((PSecHandle)(x))->dwUpper != ((ULONG_PTR)(INT_PTR)-1))) | 
|---|
| 62 |  | 
|---|
| 63 | typedef SecHandle CredHandle; | 
|---|
| 64 | typedef PSecHandle PCredHandle; | 
|---|
| 65 |  | 
|---|
| 66 | #ifndef __WINE_CTXTHANDLE_DEFINED__ | 
|---|
| 67 | #define __WINE_CTXTHANDLE_DEFINED__ | 
|---|
| 68 | typedef SecHandle CtxtHandle; | 
|---|
| 69 | typedef PSecHandle PCtxtHandle; | 
|---|
| 70 | #endif | 
|---|
| 71 |  | 
|---|
| 72 | typedef struct _SECURITY_INTEGER | 
|---|
| 73 | { | 
|---|
| 74 | unsigned long LowPart; | 
|---|
| 75 | long HighPart; | 
|---|
| 76 | } SECURITY_INTEGER, *PSECURITY_INTEGER; | 
|---|
| 77 | typedef SECURITY_INTEGER TimeStamp, *PTimeStamp; | 
|---|
| 78 |  | 
|---|
| 79 | #ifndef __UNICODE_STRING_DEFINED__ | 
|---|
| 80 | #define __UNICODE_STRING_DEFINED__ | 
|---|
| 81 | typedef struct _UNICODE_STRING { | 
|---|
| 82 | USHORT Length;        /* bytes */ | 
|---|
| 83 | USHORT MaximumLength; /* bytes */ | 
|---|
| 84 | PWSTR  Buffer; | 
|---|
| 85 | } UNICODE_STRING, *PUNICODE_STRING; | 
|---|
| 86 | #endif | 
|---|
| 87 |  | 
|---|
| 88 | typedef UNICODE_STRING SECURITY_STRING, *PSECURITY_STRING; | 
|---|
| 89 |  | 
|---|
| 90 | typedef struct _SecPkgInfoA | 
|---|
| 91 | { | 
|---|
| 92 | unsigned long  fCapabilities; | 
|---|
| 93 | unsigned short wVersion; | 
|---|
| 94 | unsigned short wRPCID; | 
|---|
| 95 | unsigned long  cbMaxToken; | 
|---|
| 96 | SEC_CHAR      *Name; | 
|---|
| 97 | SEC_CHAR      *Comment; | 
|---|
| 98 | } SecPkgInfoA, *PSecPkgInfoA; | 
|---|
| 99 |  | 
|---|
| 100 | typedef struct _SecPkgInfoW | 
|---|
| 101 | { | 
|---|
| 102 | unsigned long  fCapabilities; | 
|---|
| 103 | unsigned short wVersion; | 
|---|
| 104 | unsigned short wRPCID; | 
|---|
| 105 | unsigned long  cbMaxToken; | 
|---|
| 106 | SEC_WCHAR     *Name; | 
|---|
| 107 | SEC_WCHAR     *Comment; | 
|---|
| 108 | } SecPkgInfoW, *PSecPkgInfoW; | 
|---|
| 109 |  | 
|---|
| 110 | #define SecPkgInfo WINELIB_NAME_AW(SecPkgInfo) | 
|---|
| 111 | #define PSecPkgInfo WINELIB_NAME_AW(PSecPkgInfo) | 
|---|
| 112 |  | 
|---|
| 113 | /* fCapabilities field of SecPkgInfo */ | 
|---|
| 114 | #define SECPKG_FLAG_INTEGRITY              0x00000001 | 
|---|
| 115 | #define SECPKG_FLAG_PRIVACY                0x00000002 | 
|---|
| 116 | #define SECPKG_FLAG_TOKEN_ONLY             0x00000004 | 
|---|
| 117 | #define SECPKG_FLAG_DATAGRAM               0x00000008 | 
|---|
| 118 | #define SECPKG_FLAG_CONNECTION             0x00000010 | 
|---|
| 119 | #define SECPKG_FLAG_MULTI_REQUIRED         0x00000020 | 
|---|
| 120 | #define SECPKG_FLAG_CLIENT_ONLY            0x00000040 | 
|---|
| 121 | #define SECPKG_FLAG_EXTENDED_ERROR         0x00000080 | 
|---|
| 122 | #define SECPKG_FLAG_IMPERSONATION          0x00000100 | 
|---|
| 123 | #define SECPKG_FLAG_ACCEPT_WIN32_NAME      0x00000200 | 
|---|
| 124 | #define SECPKG_FLAG_STREAM                 0x00000400 | 
|---|
| 125 | #define SECPKG_FLAG_NEGOTIABLE             0x00000800 | 
|---|
| 126 | #define SECPKG_FLAG_GSS_COMPATIBLE         0x00001000 | 
|---|
| 127 | #define SECPKG_FLAG_LOGON                  0x00002000 | 
|---|
| 128 | #define SECPKG_FLAG_ASCII_BUFFERS          0x00004000 | 
|---|
| 129 | #define SECPKG_FLAG_FRAGMENT               0x00008000 | 
|---|
| 130 | #define SECPKG_FLAG_MUTUAL_AUTH            0x00010000 | 
|---|
| 131 | #define SECPKG_FLAG_DELEGATION             0x00020000 | 
|---|
| 132 | #define SECPKG_FLAG_READONLY_WITH_CHECKSUM 0x00040000 | 
|---|
| 133 |  | 
|---|
| 134 | typedef struct _SecBuffer | 
|---|
| 135 | { | 
|---|
| 136 | unsigned long cbBuffer; | 
|---|
| 137 | unsigned long BufferType; | 
|---|
| 138 | void         *pvBuffer; | 
|---|
| 139 | } SecBuffer, *PSecBuffer; | 
|---|
| 140 |  | 
|---|
| 141 | /* values for BufferType */ | 
|---|
| 142 | #define SECBUFFER_EMPTY               0 | 
|---|
| 143 | #define SECBUFFER_DATA                1 | 
|---|
| 144 | #define SECBUFFER_TOKEN               2 | 
|---|
| 145 | #define SECBUFFER_PKG_PARAMS          3 | 
|---|
| 146 | #define SECBUFFER_MISSING             4 | 
|---|
| 147 | #define SECBUFFER_EXTRA               5 | 
|---|
| 148 | #define SECBUFFER_STREAM_TRAILER      6 | 
|---|
| 149 | #define SECBUFFER_STREAM_HEADER       7 | 
|---|
| 150 | #define SECBUFFER_NEGOTIATION_INFO    8 | 
|---|
| 151 | #define SECBUFFER_PADDING             9 | 
|---|
| 152 | #define SECBUFFER_STREAM             10 | 
|---|
| 153 | #define SECBUFFER_MECHLIST           11 | 
|---|
| 154 | #define SECBUFFER_MECHLIST_SIGNATURE 12 | 
|---|
| 155 | #define SECBUFFER_TARGET             13 | 
|---|
| 156 | #define SECBUFFER_CHANNEL_BINDINGS   14 | 
|---|
| 157 |  | 
|---|
| 158 | #define SECBUFFER_ATTRMASK               0xf0000000 | 
|---|
| 159 | #define SECBUFFER_READONLY               0x80000000 | 
|---|
| 160 | #define SECBUFFER_READONLY_WITH_CHECKSUM 0x10000000 | 
|---|
| 161 | #define SECBUFFER_RESERVED               0x60000000 | 
|---|
| 162 |  | 
|---|
| 163 | typedef struct _SecBufferDesc | 
|---|
| 164 | { | 
|---|
| 165 | unsigned long ulVersion; | 
|---|
| 166 | unsigned long cBuffers; | 
|---|
| 167 | PSecBuffer    pBuffers; | 
|---|
| 168 | } SecBufferDesc, *PSecBufferDesc; | 
|---|
| 169 |  | 
|---|
| 170 | /* values for ulVersion */ | 
|---|
| 171 | #define SECBUFFER_VERSION 0 | 
|---|
| 172 |  | 
|---|
| 173 | typedef void (*SEC_ENTRY SEC_GET_KEY_FN)(void *Arg, void *Principal, | 
|---|
| 174 | unsigned long KeyVer, void **Key, SECURITY_STATUS *Status); | 
|---|
| 175 |  | 
|---|
| 176 | SECURITY_STATUS SEC_ENTRY EnumerateSecurityPackagesA(PULONG pcPackages, | 
|---|
| 177 | PSecPkgInfoA *ppPackageInfo); | 
|---|
| 178 | SECURITY_STATUS SEC_ENTRY EnumerateSecurityPackagesW(PULONG pcPackages, | 
|---|
| 179 | PSecPkgInfoW *ppPackageInfo); | 
|---|
| 180 | #define EnumerateSecurityPackages WINELIB_NAME_AW(EnumerateSecurityPackages) | 
|---|
| 181 |  | 
|---|
| 182 | typedef SECURITY_STATUS (*SEC_ENTRY ENUMERATE_SECURITY_PACKAGES_FN_A)(PULONG, | 
|---|
| 183 | PSecPkgInfoA *); | 
|---|
| 184 | typedef SECURITY_STATUS (*SEC_ENTRY ENUMERATE_SECURITY_PACKAGES_FN_W)(PULONG, | 
|---|
| 185 | PSecPkgInfoW *); | 
|---|
| 186 | #define ENUMERATE_SECURITY_PACKAGES_FN WINELIB_NAME_AW(ENUMERATE_SECURITY_PACKAGES_FN_) | 
|---|
| 187 |  | 
|---|
| 188 | SECURITY_STATUS SEC_ENTRY QueryCredentialsAttributesA( | 
|---|
| 189 | PCredHandle phCredential, ULONG ulAttribute, void *pBuffer); | 
|---|
| 190 | SECURITY_STATUS SEC_ENTRY QueryCredentialsAttributesW( | 
|---|
| 191 | PCredHandle phCredential, ULONG ulAttribute, void *pBuffer); | 
|---|
| 192 | #define QueryCredentialsAttributes WINELIB_NAME_AW(QueryCredentialsAttributes) | 
|---|
| 193 |  | 
|---|
| 194 | typedef SECURITY_STATUS (*SEC_ENTRY QUERY_CREDENTIALS_ATTRIBUTES_FN_A) | 
|---|
| 195 | (PCredHandle, ULONG, PVOID); | 
|---|
| 196 | typedef SECURITY_STATUS (*SEC_ENTRY QUERY_CREDENTIALS_ATTRIBUTES_FN_W) | 
|---|
| 197 | (PCredHandle, ULONG, PVOID); | 
|---|
| 198 | #define QUERY_CREDENTIALS_ATTRIBUTES_FN WINELIB_NAME_AW(QUERY_CREDENTIALS_ATTRIBUTES_FN_) | 
|---|
| 199 |  | 
|---|
| 200 | /* values for QueryCredentialsAttributes ulAttribute */ | 
|---|
| 201 | #define SECPKG_CRED_ATTR_NAMES 1 | 
|---|
| 202 |  | 
|---|
| 203 | /* types for QueryCredentialsAttributes */ | 
|---|
| 204 | typedef struct _SecPkgCredentials_NamesA | 
|---|
| 205 | { | 
|---|
| 206 | SEC_CHAR *sUserName; | 
|---|
| 207 | } SecPkgCredentials_NamesA, *PSecPkgCredentials_NamesA; | 
|---|
| 208 |  | 
|---|
| 209 | typedef struct _SecPkgCredentials_NamesW | 
|---|
| 210 | { | 
|---|
| 211 | SEC_WCHAR *sUserName; | 
|---|
| 212 | } SecPkgCredentials_NamesW, *PSecPkgCredentials_NamesW; | 
|---|
| 213 |  | 
|---|
| 214 | #define SecPkgCredentials_Names WINELIB_NAME_AW(SecPkgCredentials_Names) | 
|---|
| 215 |  | 
|---|
| 216 | SECURITY_STATUS SEC_ENTRY AcquireCredentialsHandleA( | 
|---|
| 217 | SEC_CHAR *pszPrincipal, SEC_CHAR *pszPackage, ULONG fCredentialsUse, | 
|---|
| 218 | PLUID pvLogonID, PVOID pAuthData, SEC_GET_KEY_FN pGetKeyFn, | 
|---|
| 219 | PVOID pvGetKeyArgument, PCredHandle phCredential, PTimeStamp ptsExpiry); | 
|---|
| 220 | SECURITY_STATUS SEC_ENTRY AcquireCredentialsHandleW( | 
|---|
| 221 | SEC_WCHAR *pszPrincipal, SEC_WCHAR *pszPackage, ULONG fCredentialsUse, | 
|---|
| 222 | PLUID pvLogonID, PVOID pAuthData, SEC_GET_KEY_FN pGetKeyFn, | 
|---|
| 223 | PVOID pvGetKeyArgument, PCredHandle phCredential, PTimeStamp ptsExpiry); | 
|---|
| 224 | #define AcquireCredentialsHandle WINELIB_NAME_AW(AcquireCredentialsHandle) | 
|---|
| 225 |  | 
|---|
| 226 | /* flags for fCredentialsUse */ | 
|---|
| 227 | #define SECPKG_CRED_INBOUND  0x00000001 | 
|---|
| 228 | #define SECPKG_CRED_OUTBOUND 0x00000002 | 
|---|
| 229 | #define SECPKG_CRED_BOTH     (SECPKG_CRED_INBOUND | SECPKG_CRED_OUTBOUND) | 
|---|
| 230 | #define SECPKG_CRED_DEFAULT  0x00000004 | 
|---|
| 231 | #define SECPKG_CRED_RESERVED 0xf0000000 | 
|---|
| 232 |  | 
|---|
| 233 | typedef SECURITY_STATUS (*SEC_ENTRY ACQUIRE_CREDENTIALS_HANDLE_FN_A)( | 
|---|
| 234 | SEC_CHAR *, SEC_CHAR *, ULONG, PLUID, PVOID, SEC_GET_KEY_FN, PVOID, | 
|---|
| 235 | PCredHandle, PTimeStamp); | 
|---|
| 236 | typedef SECURITY_STATUS (*SEC_ENTRY ACQUIRE_CREDENTIALS_HANDLE_FN_W)( | 
|---|
| 237 | SEC_WCHAR *, SEC_WCHAR *, ULONG, PLUID, PVOID, SEC_GET_KEY_FN, PVOID, | 
|---|
| 238 | PCredHandle, PTimeStamp); | 
|---|
| 239 | #define ACQUIRE_CREDENTIALS_HANDLE_FN WINELIB_NAME_AW(ACQUIRE_CREDENTIALS_HANDLE_FN_) | 
|---|
| 240 |  | 
|---|
| 241 | SECURITY_STATUS SEC_ENTRY FreeContextBuffer(PVOID pv); | 
|---|
| 242 |  | 
|---|
| 243 | typedef SECURITY_STATUS (*SEC_ENTRY FREE_CONTEXT_BUFFER_FN)(PVOID); | 
|---|
| 244 |  | 
|---|
| 245 | SECURITY_STATUS SEC_ENTRY FreeCredentialsHandle(PCredHandle | 
|---|
| 246 | phCredential); | 
|---|
| 247 |  | 
|---|
| 248 | #define FreeCredentialHandle FreeCredentialsHandle | 
|---|
| 249 |  | 
|---|
| 250 | typedef SECURITY_STATUS (*SEC_ENTRY FREE_CREDENTIALS_HANDLE_FN)(PCredHandle); | 
|---|
| 251 |  | 
|---|
| 252 | SECURITY_STATUS SEC_ENTRY InitializeSecurityContextA( | 
|---|
| 253 | PCredHandle phCredential, PCtxtHandle phContext, | 
|---|
| 254 | SEC_CHAR *pszTargetName, ULONG fContextReq, | 
|---|
| 255 | ULONG Reserved1, ULONG TargetDataRep, PSecBufferDesc pInput, | 
|---|
| 256 | ULONG Reserved2, PCtxtHandle phNewContext, PSecBufferDesc pOutput, | 
|---|
| 257 | ULONG *pfContextAttr, PTimeStamp ptsExpiry); | 
|---|
| 258 | SECURITY_STATUS SEC_ENTRY InitializeSecurityContextW( | 
|---|
| 259 | PCredHandle phCredential, PCtxtHandle phContext, | 
|---|
| 260 | SEC_WCHAR *pszTargetName, ULONG fContextReq, | 
|---|
| 261 | ULONG Reserved1, ULONG TargetDataRep, PSecBufferDesc pInput, | 
|---|
| 262 | ULONG Reserved2, PCtxtHandle phNewContext, PSecBufferDesc pOutput, | 
|---|
| 263 | ULONG *pfContextAttr, PTimeStamp ptsExpiry); | 
|---|
| 264 | #define InitializeSecurityContext WINELIB_NAME_AW(InitializeSecurityContext) | 
|---|
| 265 |  | 
|---|
| 266 | typedef SECURITY_STATUS (*SEC_ENTRY INITIALIZE_SECURITY_CONTEXT_FN_A) | 
|---|
| 267 | (PCredHandle, PCtxtHandle, SEC_CHAR *, ULONG, ULONG, ULONG, PSecBufferDesc, | 
|---|
| 268 | ULONG, PCtxtHandle, PSecBufferDesc, ULONG *, PTimeStamp); | 
|---|
| 269 | typedef SECURITY_STATUS (*SEC_ENTRY INITIALIZE_SECURITY_CONTEXT_FN_W) | 
|---|
| 270 | (PCredHandle, PCtxtHandle, SEC_WCHAR *, ULONG, ULONG, ULONG, PSecBufferDesc, | 
|---|
| 271 | ULONG, PCtxtHandle, PSecBufferDesc, ULONG *, PTimeStamp); | 
|---|
| 272 | #define INITIALIZE_SECURITY_CONTEXT_FN WINELIB_NAME_AW(INITIALIZE_SECURITY_CONTEXT_FN_) | 
|---|
| 273 |  | 
|---|
| 274 | /* flags for InitializeSecurityContext fContextReq and pfContextAttr */ | 
|---|
| 275 | #define ISC_REQ_DELEGATE               0x00000001 | 
|---|
| 276 | #define ISC_REQ_MUTUAL_AUTH            0x00000002 | 
|---|
| 277 | #define ISC_REQ_REPLAY_DETECT          0x00000004 | 
|---|
| 278 | #define ISC_REQ_SEQUENCE_DETECT        0x00000008 | 
|---|
| 279 | #define ISC_REQ_CONFIDENTIALITY        0x00000010 | 
|---|
| 280 | #define ISC_REQ_USE_SESSION_KEY        0x00000020 | 
|---|
| 281 | #define ISC_REQ_PROMPT_FOR_CREDS       0x00000040 | 
|---|
| 282 | #define ISC_REQ_USE_SUPPLIED_CREDS     0x00000080 | 
|---|
| 283 | #define ISC_REQ_ALLOCATE_MEMORY        0x00000100 | 
|---|
| 284 | #define ISC_REQ_USE_DCE_STYLE          0x00000200 | 
|---|
| 285 | #define ISC_REQ_DATAGRAM               0x00000400 | 
|---|
| 286 | #define ISC_REQ_CONNECTION             0x00000800 | 
|---|
| 287 | #define ISC_REQ_CALL_LEVEL             0x00001000 | 
|---|
| 288 | #define ISC_REQ_FRAGMENT_SUPPLIED      0x00002000 | 
|---|
| 289 | #define ISC_REQ_EXTENDED_ERROR         0x00004000 | 
|---|
| 290 | #define ISC_REQ_STREAM                 0x00008000 | 
|---|
| 291 | #define ISC_REQ_INTEGRITY              0x00010000 | 
|---|
| 292 | #define ISC_REQ_IDENTIFY               0x00020000 | 
|---|
| 293 | #define ISC_REQ_NULL_SESSION           0x00040000 | 
|---|
| 294 | #define ISC_REQ_MANUAL_CRED_VALIDATION 0x00080000 | 
|---|
| 295 | #define ISC_REQ_RESERVED1              0x00100000 | 
|---|
| 296 | #define ISC_REQ_FRAGMENT_TO_FIT        0x00200000 | 
|---|
| 297 |  | 
|---|
| 298 | #define ISC_RET_DELEGATE               0x00000001 | 
|---|
| 299 | #define ISC_RET_MUTUAL_AUTH            0x00000002 | 
|---|
| 300 | #define ISC_RET_REPLAY_DETECT          0x00000004 | 
|---|
| 301 | #define ISC_RET_SEQUENCE_DETECT        0x00000008 | 
|---|
| 302 | #define ISC_RET_CONFIDENTIALITY        0x00000010 | 
|---|
| 303 | #define ISC_RET_USE_SESSION_KEY        0x00000020 | 
|---|
| 304 | #define ISC_RET_USED_COLLECTED_CREDS   0x00000040 | 
|---|
| 305 | #define ISC_RET_USED_SUPPLIED_CREDS    0x00000080 | 
|---|
| 306 | #define ISC_RET_ALLOCATED_MEMORY       0x00000100 | 
|---|
| 307 | #define ISC_RET_USED_DCE_STYLE         0x00000200 | 
|---|
| 308 | #define ISC_RET_DATAGRAM               0x00000400 | 
|---|
| 309 | #define ISC_RET_CONNECTION             0x00000800 | 
|---|
| 310 | #define ISC_RET_INTERMEDIATE_RETURN    0x00001000 | 
|---|
| 311 | #define ISC_RET_CALL_LEVEL             0x00002000 | 
|---|
| 312 | #define ISC_RET_EXTENDED_ERROR         0x00004000 | 
|---|
| 313 | #define ISC_RET_STREAM                 0x00008000 | 
|---|
| 314 | #define ISC_RET_INTEGRITY              0x00010000 | 
|---|
| 315 | #define ISC_RET_IDENTIFY               0x00020000 | 
|---|
| 316 | #define ISC_RET_NULL_SESSION           0x00040000 | 
|---|
| 317 | #define ISC_RET_MANUAL_CRED_VALIDATION 0x00080000 | 
|---|
| 318 | #define ISC_RET_RESERVED1              0x00100000 | 
|---|
| 319 | #define ISC_RET_FRAGMENT_ONLY          0x00200000 | 
|---|
| 320 |  | 
|---|
| 321 | SECURITY_STATUS SEC_ENTRY AcceptSecurityContext( | 
|---|
| 322 | PCredHandle phCredential, PCtxtHandle phContext, PSecBufferDesc pInput, | 
|---|
| 323 | ULONG fContextReq, ULONG TargetDataRep, | 
|---|
| 324 | PCtxtHandle phNewContext, PSecBufferDesc pOutput, | 
|---|
| 325 | ULONG *pfContextAttr, PTimeStamp ptsExpiry); | 
|---|
| 326 |  | 
|---|
| 327 | typedef SECURITY_STATUS (*SEC_ENTRY ACCEPT_SECURITY_CONTEXT_FN)(PCredHandle, | 
|---|
| 328 | PCtxtHandle, PSecBufferDesc, ULONG, ULONG, PCtxtHandle, | 
|---|
| 329 | PSecBufferDesc, ULONG *, PTimeStamp); | 
|---|
| 330 |  | 
|---|
| 331 | /* flags for AcceptSecurityContext fContextReq and pfContextAttr */ | 
|---|
| 332 | #define ASC_REQ_DELEGATE               0x00000001 | 
|---|
| 333 | #define ASC_REQ_MUTUAL_AUTH            0x00000002 | 
|---|
| 334 | #define ASC_REQ_REPLAY_DETECT          0x00000004 | 
|---|
| 335 | #define ASC_REQ_SEQUENCE_DETECT        0x00000008 | 
|---|
| 336 | #define ASC_REQ_CONFIDENTIALITY        0x00000010 | 
|---|
| 337 | #define ASC_REQ_USE_SESSION_KEY        0x00000020 | 
|---|
| 338 | #define ASC_REQ_ALLOCATE_MEMORY        0x00000100 | 
|---|
| 339 | #define ASC_REQ_USE_DCE_STYLE          0x00000200 | 
|---|
| 340 | #define ASC_REQ_DATAGRAM               0x00000400 | 
|---|
| 341 | #define ASC_REQ_CONNECTION             0x00000800 | 
|---|
| 342 | #define ASC_REQ_CALL_LEVEL             0x00001000 | 
|---|
| 343 | #define ASC_REQ_FRAGMENT_SUPPLIED      0x00002000 | 
|---|
| 344 | #define ASC_REQ_EXTENDED_ERROR         0x00008000 | 
|---|
| 345 | #define ASC_REQ_STREAM                 0x00010000 | 
|---|
| 346 | #define ASC_REQ_INTEGRITY              0x00020000 | 
|---|
| 347 | #define ASC_REQ_LICENSING              0x00040000 | 
|---|
| 348 | #define ASC_REQ_IDENTIFY               0x00080000 | 
|---|
| 349 | #define ASC_REQ_ALLOW_NULL_SESSION     0x00100000 | 
|---|
| 350 | #define ASC_REQ_ALLOW_NON_USER_LOGONS  0x00200000 | 
|---|
| 351 | #define ASC_REQ_ALLOW_CONTEXT_REPLAY   0x00400000 | 
|---|
| 352 | #define ASC_REQ_FRAGMENT_TO_FIT        0x00800000 | 
|---|
| 353 | #define ASC_REQ_FRAGMENT_NO_TOKEN      0x01000000 | 
|---|
| 354 |  | 
|---|
| 355 | #define ASC_RET_DELEGATE               0x00000001 | 
|---|
| 356 | #define ASC_RET_MUTUAL_AUTH            0x00000002 | 
|---|
| 357 | #define ASC_RET_REPLAY_DETECT          0x00000004 | 
|---|
| 358 | #define ASC_RET_SEQUENCE_DETECT        0x00000008 | 
|---|
| 359 | #define ASC_RET_CONFIDENTIALITY        0x00000010 | 
|---|
| 360 | #define ASC_RET_USE_SESSION_KEY        0x00000020 | 
|---|
| 361 | #define ASC_RET_ALLOCATED_MEMORY       0x00000100 | 
|---|
| 362 | #define ASC_RET_USED_DCE_STYLE         0x00000200 | 
|---|
| 363 | #define ASC_RET_DATAGRAM               0x00000400 | 
|---|
| 364 | #define ASC_RET_CONNECTION             0x00000800 | 
|---|
| 365 | #define ASC_RET_CALL_LEVEL             0x00002000 | 
|---|
| 366 | #define ASC_RET_THIRD_LEG_FAILED       0x00004000 | 
|---|
| 367 | #define ASC_RET_EXTENDED_ERROR         0x00008000 | 
|---|
| 368 | #define ASC_RET_STREAM                 0x00010000 | 
|---|
| 369 | #define ASC_RET_INTEGRITY              0x00020000 | 
|---|
| 370 | #define ASC_RET_LICENSING              0x00040000 | 
|---|
| 371 | #define ASC_RET_IDENTIFY               0x00080000 | 
|---|
| 372 | #define ASC_RET_NULL_SESSION           0x00100000 | 
|---|
| 373 | #define ASC_RET_ALLOW_NON_USER_LOGONS  0x00200000 | 
|---|
| 374 | #define ASC_RET_ALLOW_CONTEXT_REPLAY   0x00400000 | 
|---|
| 375 | #define ASC_RET_FRAGMENT_ONLY          0x00800000 | 
|---|
| 376 | #define ASC_RET_NO_TOKEN               0x01000000 | 
|---|
| 377 |  | 
|---|
| 378 | /* values for TargetDataRep */ | 
|---|
| 379 | #define SECURITY_NATIVE_DREP  0x00000010 | 
|---|
| 380 | #define SECURITY_NETWORK_DREP 0x00000000 | 
|---|
| 381 |  | 
|---|
| 382 | SECURITY_STATUS SEC_ENTRY CompleteAuthToken(PCtxtHandle phContext, | 
|---|
| 383 | PSecBufferDesc pToken); | 
|---|
| 384 |  | 
|---|
| 385 | typedef SECURITY_STATUS (*SEC_ENTRY COMPLETE_AUTH_TOKEN_FN)(PCtxtHandle, | 
|---|
| 386 | PSecBufferDesc); | 
|---|
| 387 |  | 
|---|
| 388 | SECURITY_STATUS SEC_ENTRY DeleteSecurityContext(PCtxtHandle phContext); | 
|---|
| 389 |  | 
|---|
| 390 | typedef SECURITY_STATUS (*SEC_ENTRY DELETE_SECURITY_CONTEXT_FN)(PCtxtHandle); | 
|---|
| 391 |  | 
|---|
| 392 | SECURITY_STATUS SEC_ENTRY ApplyControlToken(PCtxtHandle phContext, | 
|---|
| 393 | PSecBufferDesc pInput); | 
|---|
| 394 |  | 
|---|
| 395 | typedef SECURITY_STATUS (*SEC_ENTRY APPLY_CONTROL_TOKEN_FN)(PCtxtHandle, | 
|---|
| 396 | PSecBufferDesc); | 
|---|
| 397 |  | 
|---|
| 398 | SECURITY_STATUS SEC_ENTRY QueryContextAttributesA(PCtxtHandle phContext, | 
|---|
| 399 | ULONG ulAttribute, void *pBuffer); | 
|---|
| 400 | SECURITY_STATUS SEC_ENTRY QueryContextAttributesW(PCtxtHandle phContext, | 
|---|
| 401 | ULONG ulAttribute, void *pBuffer); | 
|---|
| 402 | #define QueryContextAttributes WINELIB_NAME_AW(QueryContextAttributes) | 
|---|
| 403 |  | 
|---|
| 404 | typedef SECURITY_STATUS (*SEC_ENTRY QUERY_CONTEXT_ATTRIBUTES_FN_A)(PCtxtHandle, | 
|---|
| 405 | ULONG, void *); | 
|---|
| 406 | typedef SECURITY_STATUS (*SEC_ENTRY QUERY_CONTEXT_ATTRIBUTES_FN_W)(PCtxtHandle, | 
|---|
| 407 | ULONG, void *); | 
|---|
| 408 | #define QUERY_CONTEXT_ATTRIBUTES_FN WINELIB_NAME_AW(QUERY_CONTEXT_ATTRIBUTES_FN_) | 
|---|
| 409 |  | 
|---|
| 410 | /* values for QueryContextAttributes/SetContextAttributes ulAttribute */ | 
|---|
| 411 | #define SECPKG_ATTR_SIZES               0 | 
|---|
| 412 | #define SECPKG_ATTR_NAMES               1 | 
|---|
| 413 | #define SECPKG_ATTR_LIFESPAN            2 | 
|---|
| 414 | #define SECPKG_ATTR_DCE_INFO            3 | 
|---|
| 415 | #define SECPKG_ATTR_STREAM_SIZES        4 | 
|---|
| 416 | #define SECPKG_ATTR_KEY_INFO            5 | 
|---|
| 417 | #define SECPKG_ATTR_AUTHORITY           6 | 
|---|
| 418 | #define SECPKG_ATTR_PROTO_INFO          7 | 
|---|
| 419 | #define SECPKG_ATTR_PASSWORD_EXPIRY     8 | 
|---|
| 420 | #define SECPKG_ATTR_SESSION_KEY         9 | 
|---|
| 421 | #define SECPKG_ATTR_PACKAGE_INFO       10 | 
|---|
| 422 | #define SECPKG_ATTR_USER_FLAGS         11 | 
|---|
| 423 | #define SECPKG_ATTR_NEGOTIATION_INFO   12 | 
|---|
| 424 | #define SECPKG_ATTR_NATIVE_NAMES       13 | 
|---|
| 425 | #define SECPKG_ATTR_FLAGS              14 | 
|---|
| 426 | #define SECPKG_ATTR_USE_VALIDATED      15 | 
|---|
| 427 | #define SECPKG_ATTR_CREDENTIAL_NAME    16 | 
|---|
| 428 | #define SECPKG_ATTR_TARGET_INFORMATION 17 | 
|---|
| 429 | #define SECPKG_ATTR_ACCESS_TOKEN       18 | 
|---|
| 430 | #define SECPKG_ATTR_TARGET             19 | 
|---|
| 431 | #define SECPKG_ATTR_AUTHENTICATION_ID  20 | 
|---|
| 432 |  | 
|---|
| 433 | /* types for QueryContextAttributes/SetContextAttributes */ | 
|---|
| 434 |  | 
|---|
| 435 | typedef struct _SecPkgContext_Sizes | 
|---|
| 436 | { | 
|---|
| 437 | unsigned long cbMaxToken; | 
|---|
| 438 | unsigned long cbMaxSignature; | 
|---|
| 439 | unsigned long cbBlockSize; | 
|---|
| 440 | unsigned long cbSecurityTrailer; | 
|---|
| 441 | } SecPkgContext_Sizes, *PSecPkgContext_Sizes; | 
|---|
| 442 |  | 
|---|
| 443 | typedef struct _SecPkgContext_StreamSizes | 
|---|
| 444 | { | 
|---|
| 445 | unsigned long cbHeader; | 
|---|
| 446 | unsigned long cbTrailer; | 
|---|
| 447 | unsigned long cbMaximumMessage; | 
|---|
| 448 | unsigned long cbBuffers; | 
|---|
| 449 | unsigned long cbBlockSize; | 
|---|
| 450 | } SecPkgContext_StreamSizes, *PSecPkgContext_StreamSizes; | 
|---|
| 451 |  | 
|---|
| 452 | typedef struct _SecPkgContext_NamesA | 
|---|
| 453 | { | 
|---|
| 454 | SEC_CHAR *sUserName; | 
|---|
| 455 | } SecPkgContext_NamesA, *PSecPkgContext_NamesA; | 
|---|
| 456 |  | 
|---|
| 457 | typedef struct _SecPkgContext_NamesW | 
|---|
| 458 | { | 
|---|
| 459 | SEC_WCHAR *sUserName; | 
|---|
| 460 | } SecPkgContext_NamesW, *PSecPkgContext_NamesW; | 
|---|
| 461 |  | 
|---|
| 462 | #define SecPkgContext_Names WINELIB_NAME_AW(SecPkgContext_Names) | 
|---|
| 463 | #define PSecPkgContext_Names WINELIB_NAME_AW(PSecPkgContext_Names) | 
|---|
| 464 |  | 
|---|
| 465 | typedef struct _SecPkgContext_Lifespan | 
|---|
| 466 | { | 
|---|
| 467 | TimeStamp tsStart; | 
|---|
| 468 | TimeStamp tsExpiry; | 
|---|
| 469 | } SecPkgContext_Lifespan, *PSecPkgContext_Lifespan; | 
|---|
| 470 |  | 
|---|
| 471 | typedef struct _SecPkgContext_DceInfo | 
|---|
| 472 | { | 
|---|
| 473 | unsigned long AuthzSvc; | 
|---|
| 474 | void *pPac; | 
|---|
| 475 | } SecPkgContext_DceInfo, *PSecPkgContext_DceInfo; | 
|---|
| 476 |  | 
|---|
| 477 | typedef struct _SecPkgContext_KeyInfoA | 
|---|
| 478 | { | 
|---|
| 479 | SEC_CHAR      *sSignatureAlgorithmName; | 
|---|
| 480 | SEC_CHAR      *sEncryptAlgorithmName; | 
|---|
| 481 | unsigned long  KeySize; | 
|---|
| 482 | unsigned long  SignatureAlgorithm; | 
|---|
| 483 | unsigned long  EncryptAlgorithm; | 
|---|
| 484 | } SecPkgContext_KeyInfoA, *PSecPkgContext_KeyInfoA; | 
|---|
| 485 |  | 
|---|
| 486 | typedef struct _SecPkgContext_KeyInfoW | 
|---|
| 487 | { | 
|---|
| 488 | SEC_WCHAR     *sSignatureAlgorithmName; | 
|---|
| 489 | SEC_WCHAR     *sEncryptAlgorithmName; | 
|---|
| 490 | unsigned long  KeySize; | 
|---|
| 491 | unsigned long  SignatureAlgorithm; | 
|---|
| 492 | unsigned long  EncryptAlgorithm; | 
|---|
| 493 | } SecPkgContext_KeyInfoW, *PSecPkgContext_KeyInfoW; | 
|---|
| 494 |  | 
|---|
| 495 | #define SecPkgContext_KeyInfo WINELIB_NAME_AW(SecPkgContext_KeyInfo) | 
|---|
| 496 | #define PSecPkgContext_KeyInfo WINELIB_NAME_AW(PSecPkgContext_KeyInfo) | 
|---|
| 497 |  | 
|---|
| 498 | typedef struct _SecPkgContext_AuthorityA | 
|---|
| 499 | { | 
|---|
| 500 | SEC_CHAR *sAuthorityName; | 
|---|
| 501 | } SecPkgContext_AuthorityA, *PSecPkgContext_AuthorityA; | 
|---|
| 502 |  | 
|---|
| 503 | typedef struct _SecPkgContext_AuthorityW | 
|---|
| 504 | { | 
|---|
| 505 | SEC_WCHAR *sAuthorityName; | 
|---|
| 506 | } SecPkgContext_AuthorityW, *PSecPkgContext_AuthorityW; | 
|---|
| 507 |  | 
|---|
| 508 | #define SecPkgContext_Authority WINELIB_NAME_AW(SecPkgContext_Authority) | 
|---|
| 509 | #define PSecPkgContext_Authority WINELIB_NAME_AW(PSecPkgContext_Authority) | 
|---|
| 510 |  | 
|---|
| 511 | typedef struct _SecPkgContext_ProtoInfoA | 
|---|
| 512 | { | 
|---|
| 513 | SEC_CHAR     *sProtocolName; | 
|---|
| 514 | unsigned long majorVersion; | 
|---|
| 515 | unsigned long minorVersion; | 
|---|
| 516 | } SecPkgContext_ProtoInfoA, *PSecPkgContext_ProtoInfoA; | 
|---|
| 517 |  | 
|---|
| 518 | typedef struct _SecPkgContext_ProtoInfoW | 
|---|
| 519 | { | 
|---|
| 520 | SEC_WCHAR    *sProtocolName; | 
|---|
| 521 | unsigned long majorVersion; | 
|---|
| 522 | unsigned long minorVersion; | 
|---|
| 523 | } SecPkgContext_ProtoInfoW, *PSecPkgContext_ProtoInfoW; | 
|---|
| 524 |  | 
|---|
| 525 | #define SecPkgContext_ProtoInfo WINELIB_NAME_AW(SecPkgContext_ProtoInfo) | 
|---|
| 526 | #define PSecPkgContext_ProtoInfo WINELIB_NAME_AW(PSecPkgContext_ProtoInfo) | 
|---|
| 527 |  | 
|---|
| 528 | typedef struct _SecPkgContext_PasswordExpiry | 
|---|
| 529 | { | 
|---|
| 530 | TimeStamp tsPasswordExpires; | 
|---|
| 531 | } SecPkgContext_PasswordExpiry, *PSecPkgContext_PasswordExpiry; | 
|---|
| 532 |  | 
|---|
| 533 | typedef struct _SecPkgContext_SessionKey | 
|---|
| 534 | { | 
|---|
| 535 | unsigned long  SessionKeyLength; | 
|---|
| 536 | unsigned char *SessionKey; | 
|---|
| 537 | } SecPkgContext_SessionKey, *PSecPkgContext_SessionKey; | 
|---|
| 538 |  | 
|---|
| 539 | typedef struct _SecPkgContext_PackageInfoA | 
|---|
| 540 | { | 
|---|
| 541 | PSecPkgInfoA PackageInfo; | 
|---|
| 542 | } SecPkgContext_PackageInfoA, *PSecPkgContext_PackageInfoA; | 
|---|
| 543 |  | 
|---|
| 544 | typedef struct _SecPkgContext_PackageInfoW | 
|---|
| 545 | { | 
|---|
| 546 | PSecPkgInfoW PackageInfo; | 
|---|
| 547 | } SecPkgContext_PackageInfoW, *PSecPkgContext_PackageInfoW; | 
|---|
| 548 |  | 
|---|
| 549 | #define SecPkgContext_PackageInfo WINELIB_NAME_AW(SecPkgContext_PackageInfo) | 
|---|
| 550 | #define PSecPkgContext_PackageInfo WINELIB_NAME_AW(PSecPkgContext_PackageInfo) | 
|---|
| 551 |  | 
|---|
| 552 | typedef struct _SecPkgContext_Flags | 
|---|
| 553 | { | 
|---|
| 554 | unsigned long Flags; | 
|---|
| 555 | } SecPkgContext_Flags, *PSecPkgContext_Flags; | 
|---|
| 556 |  | 
|---|
| 557 | typedef struct _SecPkgContext_UserFlags | 
|---|
| 558 | { | 
|---|
| 559 | unsigned long UserFlags; | 
|---|
| 560 | } SecPkgContext_UserFlags, *PSecPkgContext_UserFlags; | 
|---|
| 561 |  | 
|---|
| 562 | typedef struct _SecPkgContext_NegotiationInfoA | 
|---|
| 563 | { | 
|---|
| 564 | PSecPkgInfoA  PackageInfo; | 
|---|
| 565 | unsigned long NegotiationState; | 
|---|
| 566 | } SecPkgContext_NegotiationInfoA, *PSecPkgContext_NegotiationInfoA; | 
|---|
| 567 |  | 
|---|
| 568 | typedef struct _SecPkgContext_NegotiationInfoW | 
|---|
| 569 | { | 
|---|
| 570 | PSecPkgInfoW  PackageInfo; | 
|---|
| 571 | unsigned long NegotiationState; | 
|---|
| 572 | } SecPkgContext_NegotiationInfoW, *PSecPkgContext_NegotiationInfoW; | 
|---|
| 573 |  | 
|---|
| 574 | #define SecPkgContext_NegotiationInfo WINELIB_NAME_AW(SecPkgContext_NegotiationInfo) | 
|---|
| 575 | #define PSecPkgContext_NegotiationInfo WINELIB_NAME_AW(PSecPkgContext_NegotiationInfo) | 
|---|
| 576 |  | 
|---|
| 577 | /* values for NegotiationState */ | 
|---|
| 578 | #define SECPKG_NEGOTIATION_COMPLETE      0 | 
|---|
| 579 | #define SECPKG_NEGOTIATION_OPTIMISTIC    1 | 
|---|
| 580 | #define SECPKG_NEGOTIATION_IN_PROGRESS   2 | 
|---|
| 581 | #define SECPKG_NEGOTIATION_DIRECT        3 | 
|---|
| 582 | #define SECPKG_NEGOTIATION_TRY_MULTICRED 4 | 
|---|
| 583 |  | 
|---|
| 584 | typedef struct _SecPkgContext_NativeNamesA | 
|---|
| 585 | { | 
|---|
| 586 | SEC_CHAR *sClientName; | 
|---|
| 587 | SEC_CHAR *sServerName; | 
|---|
| 588 | } SecPkgContext_NativeNamesA, *PSecPkgContext_NativeNamesA; | 
|---|
| 589 |  | 
|---|
| 590 | typedef struct _SecPkgContext_NativeNamesW | 
|---|
| 591 | { | 
|---|
| 592 | SEC_WCHAR *sClientName; | 
|---|
| 593 | SEC_WCHAR *sServerName; | 
|---|
| 594 | } SecPkgContext_NativeNamesW, *PSecPkgContext_NativeNamesW; | 
|---|
| 595 |  | 
|---|
| 596 | #define SecPkgContext_NativeNames WINELIB_NAME_AW(SecPkgContext_NativeNames) | 
|---|
| 597 | #define PSecPkgContext_NativeNames WINELIB_NAME_AW(PSecPkgContext_NativeNames) | 
|---|
| 598 |  | 
|---|
| 599 | typedef struct _SecPkgContext_CredentialNameA | 
|---|
| 600 | { | 
|---|
| 601 | unsigned long  CredentialType; | 
|---|
| 602 | SEC_CHAR      *sCredentialName; | 
|---|
| 603 | } SecPkgContext_CredentialNameA, *PSecPkgContext_CredentialNameA; | 
|---|
| 604 |  | 
|---|
| 605 | typedef struct _SecPkgContext_CredentialNameW | 
|---|
| 606 | { | 
|---|
| 607 | unsigned long  CredentialType; | 
|---|
| 608 | SEC_WCHAR     *sCredentialName; | 
|---|
| 609 | } SecPkgContext_CredentialNameW, *PSecPkgContext_CredentialNameW; | 
|---|
| 610 |  | 
|---|
| 611 | #define SecPkgContext_CredentialName WINELIB_NAME_AW(SecPkgContext_CredentialName) | 
|---|
| 612 | #define PSecPkgContext_CredentialName WINELIB_NAME_AW(PSecPkgContext_CredentialName) | 
|---|
| 613 |  | 
|---|
| 614 | typedef struct _SecPkgContext_AccessToken | 
|---|
| 615 | { | 
|---|
| 616 | void *AccessToken; | 
|---|
| 617 | } SecPkgContext_AccessToken, *PSecPkgContext_AccessToken; | 
|---|
| 618 |  | 
|---|
| 619 | typedef struct _SecPkgContext_TargetInformation | 
|---|
| 620 | { | 
|---|
| 621 | unsigned long  MarshalledTargetInfoLength; | 
|---|
| 622 | unsigned char *MarshalledTargetInfo; | 
|---|
| 623 | } SecPkgContext_TargetInformation, *PSecPkgContext_TargetInformation; | 
|---|
| 624 |  | 
|---|
| 625 | typedef struct _SecPkgContext_AuthzID | 
|---|
| 626 | { | 
|---|
| 627 | unsigned long  AuthzIDLength; | 
|---|
| 628 | char          *AuthzID; | 
|---|
| 629 | } SecPkgContext_AuthzID, *PSecPkgContext_AuthzID; | 
|---|
| 630 |  | 
|---|
| 631 | typedef struct _SecPkgContext_Target | 
|---|
| 632 | { | 
|---|
| 633 | unsigned long  TargetLength; | 
|---|
| 634 | char          *Target; | 
|---|
| 635 | } SecPkgContext_Target, *PSecPkgContext_Target; | 
|---|
| 636 |  | 
|---|
| 637 | SECURITY_STATUS SEC_ENTRY ImpersonateSecurityContext(PCtxtHandle phContext); | 
|---|
| 638 |  | 
|---|
| 639 | typedef SECURITY_STATUS (*SEC_ENTRY IMPERSONATE_SECURITY_CONTEXT_FN) | 
|---|
| 640 | (PCtxtHandle); | 
|---|
| 641 |  | 
|---|
| 642 | SECURITY_STATUS SEC_ENTRY RevertSecurityContext(PCtxtHandle phContext); | 
|---|
| 643 |  | 
|---|
| 644 | typedef SECURITY_STATUS (*SEC_ENTRY REVERT_SECURITY_CONTEXT_FN)(PCtxtHandle); | 
|---|
| 645 |  | 
|---|
| 646 | SECURITY_STATUS SEC_ENTRY MakeSignature(PCtxtHandle phContext, | 
|---|
| 647 | ULONG fQOP, PSecBufferDesc pMessage, ULONG MessageSeqNo); | 
|---|
| 648 |  | 
|---|
| 649 | typedef SECURITY_STATUS (*SEC_ENTRY MAKE_SIGNATURE_FN)(PCtxtHandle, | 
|---|
| 650 | ULONG, PSecBufferDesc, ULONG); | 
|---|
| 651 |  | 
|---|
| 652 | SECURITY_STATUS SEC_ENTRY VerifySignature(PCtxtHandle phContext, | 
|---|
| 653 | PSecBufferDesc pMessage, ULONG MessageSeqNo, PULONG pfQOP); | 
|---|
| 654 |  | 
|---|
| 655 | typedef SECURITY_STATUS (*SEC_ENTRY VERIFY_SIGNATURE_FN)(PCtxtHandle, | 
|---|
| 656 | PSecBufferDesc, ULONG, PULONG); | 
|---|
| 657 |  | 
|---|
| 658 | SECURITY_STATUS SEC_ENTRY QuerySecurityPackageInfoA( | 
|---|
| 659 | SEC_CHAR *pszPackageName, PSecPkgInfoA *ppPackageInfo); | 
|---|
| 660 | SECURITY_STATUS SEC_ENTRY QuerySecurityPackageInfoW( | 
|---|
| 661 | SEC_WCHAR *pszPackageName, PSecPkgInfoW *ppPackageInfo); | 
|---|
| 662 | #define QuerySecurityPackageInfo WINELIB_NAME_AW(QuerySecurityPackageInfo) | 
|---|
| 663 |  | 
|---|
| 664 | typedef SECURITY_STATUS (*SEC_ENTRY QUERY_SECURITY_PACKAGE_INFO_FN_A) | 
|---|
| 665 | (SEC_CHAR *, PSecPkgInfoA *); | 
|---|
| 666 | typedef SECURITY_STATUS (*SEC_ENTRY QUERY_SECURITY_PACKAGE_INFO_FN_W) | 
|---|
| 667 | (SEC_WCHAR *, PSecPkgInfoW *); | 
|---|
| 668 | #define QUERY_SECURITY_PACKAGE_INFO_FN WINELIB_NAME_AW(QUERY_SECURITY_PACKAGE_INFO_FN_) | 
|---|
| 669 |  | 
|---|
| 670 | SECURITY_STATUS SEC_ENTRY ExportSecurityContext(PCtxtHandle phContext, | 
|---|
| 671 | ULONG fFlags, PSecBuffer pPackedContext, void **pToken); | 
|---|
| 672 |  | 
|---|
| 673 | typedef SECURITY_STATUS (*SEC_ENTRY EXPORT_SECURITY_CONTEXT_FN)(PCtxtHandle, | 
|---|
| 674 | ULONG, PSecBuffer, void **); | 
|---|
| 675 |  | 
|---|
| 676 | /* values for ExportSecurityContext fFlags */ | 
|---|
| 677 | #define SECPKG_CONTEXT_EXPORT_RESET_NEW  0x00000001 | 
|---|
| 678 | #define SECPKG_CONTEXT_EXPORT_DELETE_OLD 0x00000002 | 
|---|
| 679 |  | 
|---|
| 680 | SECURITY_STATUS SEC_ENTRY ImportSecurityContextA(SEC_CHAR *pszPackage, | 
|---|
| 681 | PSecBuffer pPackedContext, void *Token, PCtxtHandle phContext); | 
|---|
| 682 | SECURITY_STATUS SEC_ENTRY ImportSecurityContextW(SEC_WCHAR *pszPackage, | 
|---|
| 683 | PSecBuffer pPackedContext, void *Token, PCtxtHandle phContext); | 
|---|
| 684 | #define ImportSecurityContext WINELIB_NAME_AW(ImportSecurityContext) | 
|---|
| 685 |  | 
|---|
| 686 | typedef SECURITY_STATUS (*SEC_ENTRY IMPORT_SECURITY_CONTEXT_FN_A)(SEC_CHAR *, | 
|---|
| 687 | PSecBuffer, void *, PCtxtHandle); | 
|---|
| 688 | typedef SECURITY_STATUS (*SEC_ENTRY IMPORT_SECURITY_CONTEXT_FN_W)(SEC_WCHAR *, | 
|---|
| 689 | PSecBuffer, void *, PCtxtHandle); | 
|---|
| 690 | #define IMPORT_SECURITY_CONTEXT_FN WINELIB_NAME_AW(IMPORT_SECURITY_CONTEXT_FN_) | 
|---|
| 691 |  | 
|---|
| 692 | SECURITY_STATUS SEC_ENTRY AddCredentialsA(PCredHandle hCredentials, | 
|---|
| 693 | SEC_CHAR *pszPrincipal, SEC_CHAR *pszPackage, ULONG fCredentialUse, | 
|---|
| 694 | void *pAuthData, SEC_GET_KEY_FN pGetKeyFn, void *pvGetKeyArgument, | 
|---|
| 695 | PTimeStamp ptsExpiry); | 
|---|
| 696 | SECURITY_STATUS SEC_ENTRY AddCredentialsW(PCredHandle hCredentials, | 
|---|
| 697 | SEC_WCHAR *pszPrincipal, SEC_WCHAR *pszPackage, ULONG fCredentialUse, | 
|---|
| 698 | void *pAuthData, SEC_GET_KEY_FN pGetKeyFn, void *pvGetKeyArgument, | 
|---|
| 699 | PTimeStamp ptsExpiry); | 
|---|
| 700 | #define AddCredentials WINELIB_NAME_AW(AddCredentials) | 
|---|
| 701 |  | 
|---|
| 702 | typedef SECURITY_STATUS (*SEC_ENTRY ADD_CREDENTIALS_FN_A)(PCredHandle, | 
|---|
| 703 | SEC_CHAR *, SEC_CHAR *, ULONG, void *, SEC_GET_KEY_FN, void *, | 
|---|
| 704 | PTimeStamp); | 
|---|
| 705 | typedef SECURITY_STATUS (*SEC_ENTRY ADD_CREDENTIALS_FN_W)(PCredHandle, | 
|---|
| 706 | SEC_WCHAR *, SEC_WCHAR *, ULONG, void *, SEC_GET_KEY_FN, void *, | 
|---|
| 707 | PTimeStamp); | 
|---|
| 708 |  | 
|---|
| 709 | SECURITY_STATUS SEC_ENTRY QuerySecurityContextToken(PCtxtHandle phContext, | 
|---|
| 710 | HANDLE *phToken); | 
|---|
| 711 |  | 
|---|
| 712 | typedef SECURITY_STATUS (*SEC_ENTRY QUERY_SECURITY_CONTEXT_TOKEN_FN) | 
|---|
| 713 | (PCtxtHandle, HANDLE *); | 
|---|
| 714 |  | 
|---|
| 715 | SECURITY_STATUS SEC_ENTRY EncryptMessage(PCtxtHandle phContext, ULONG fQOP, | 
|---|
| 716 | PSecBufferDesc pMessage, ULONG MessageSeqNo); | 
|---|
| 717 | SECURITY_STATUS SEC_ENTRY DecryptMessage(PCtxtHandle phContext, | 
|---|
| 718 | PSecBufferDesc pMessage, ULONG MessageSeqNo, PULONG pfQOP); | 
|---|
| 719 |  | 
|---|
| 720 | /* values for EncryptMessage fQOP */ | 
|---|
| 721 | #define SECQOP_WRAP_NO_ENCRYPT 0x80000001 | 
|---|
| 722 |  | 
|---|
| 723 | typedef SECURITY_STATUS (*SEC_ENTRY ENCRYPT_MESSAGE_FN)(PCtxtHandle, ULONG, | 
|---|
| 724 | PSecBufferDesc, ULONG); | 
|---|
| 725 | typedef SECURITY_STATUS (*SEC_ENTRY DECRYPT_MESSAGE_FN)(PCtxtHandle, | 
|---|
| 726 | PSecBufferDesc, ULONG, PULONG); | 
|---|
| 727 |  | 
|---|
| 728 | SECURITY_STATUS SEC_ENTRY SetContextAttributesA(PCtxtHandle phContext, | 
|---|
| 729 | ULONG ulAttribute, void *pBuffer, ULONG cbBuffer); | 
|---|
| 730 | SECURITY_STATUS SEC_ENTRY SetContextAttributesW(PCtxtHandle phContext, | 
|---|
| 731 | ULONG ulAttribute, void *pBuffer, ULONG cbBuffer); | 
|---|
| 732 | #define SetContextAttributes WINELIB_NAME_AW(SetContextAttributes) | 
|---|
| 733 |  | 
|---|
| 734 | typedef SECURITY_STATUS (*SEC_ENTRY SET_CONTEXT_ATTRIBUTES_FN_A)(PCtxtHandle, | 
|---|
| 735 | ULONG, void *, ULONG); | 
|---|
| 736 | typedef SECURITY_STATUS (*SEC_ENTRY SET_CONTEXT_ATTRIBUTES_FN_W)(PCtxtHandle, | 
|---|
| 737 | ULONG, void *, ULONG); | 
|---|
| 738 |  | 
|---|
| 739 | #define SECURITY_ENTRYPOINT_ANSIA "InitSecurityInterfaceA" | 
|---|
| 740 | #define SECURITY_ENTRYPOINT_ANSIW "InitSecurityInterfaceW" | 
|---|
| 741 | #define SECURITY_ENTRYPOINT_ANSI WINELIB_NAME_AW(SECURITY_ENTRYPOINT_ANSI) | 
|---|
| 742 |  | 
|---|
| 743 | typedef struct _SECURITY_FUNCTION_TABLE_A | 
|---|
| 744 | { | 
|---|
| 745 | unsigned long                     dwVersion; | 
|---|
| 746 | ENUMERATE_SECURITY_PACKAGES_FN_A  EnumerateSecurityPackagesA; | 
|---|
| 747 | QUERY_CREDENTIALS_ATTRIBUTES_FN_A QueryCredentialsAttributesA; | 
|---|
| 748 | ACQUIRE_CREDENTIALS_HANDLE_FN_A   AcquireCredentialsHandleA; | 
|---|
| 749 | FREE_CREDENTIALS_HANDLE_FN        FreeCredentialsHandle; | 
|---|
| 750 | void                             *Reserved2; | 
|---|
| 751 | INITIALIZE_SECURITY_CONTEXT_FN_A  InitializeSecurityContextA; | 
|---|
| 752 | ACCEPT_SECURITY_CONTEXT_FN        AcceptSecurityContext; | 
|---|
| 753 | COMPLETE_AUTH_TOKEN_FN            CompleteAuthToken; | 
|---|
| 754 | DELETE_SECURITY_CONTEXT_FN        DeleteSecurityContext; | 
|---|
| 755 | APPLY_CONTROL_TOKEN_FN            ApplyControlToken; | 
|---|
| 756 | QUERY_CONTEXT_ATTRIBUTES_FN_A     QueryContextAttributesA; | 
|---|
| 757 | IMPERSONATE_SECURITY_CONTEXT_FN   ImpersonateSecurityContext; | 
|---|
| 758 | REVERT_SECURITY_CONTEXT_FN        RevertSecurityContext; | 
|---|
| 759 | MAKE_SIGNATURE_FN                 MakeSignature; | 
|---|
| 760 | VERIFY_SIGNATURE_FN               VerifySignature; | 
|---|
| 761 | FREE_CONTEXT_BUFFER_FN            FreeContextBuffer; | 
|---|
| 762 | QUERY_SECURITY_PACKAGE_INFO_FN_A  QuerySecurityPackageInfoA; | 
|---|
| 763 | void                             *Reserved3; | 
|---|
| 764 | void                             *Reserved4; | 
|---|
| 765 | EXPORT_SECURITY_CONTEXT_FN        ExportSecurityContext; | 
|---|
| 766 | IMPORT_SECURITY_CONTEXT_FN_A      ImportSecurityContextA; | 
|---|
| 767 | ADD_CREDENTIALS_FN_A              AddCredentialsA; | 
|---|
| 768 | void                             *Reserved8; | 
|---|
| 769 | QUERY_SECURITY_CONTEXT_TOKEN_FN   QuerySecurityContextToken; | 
|---|
| 770 | ENCRYPT_MESSAGE_FN                EncryptMessage; | 
|---|
| 771 | DECRYPT_MESSAGE_FN                DecryptMessage; | 
|---|
| 772 | SET_CONTEXT_ATTRIBUTES_FN_A       SetContextAttributesA; | 
|---|
| 773 | } SecurityFunctionTableA, *PSecurityFunctionTableA; | 
|---|
| 774 |  | 
|---|
| 775 | typedef struct _SECURITY_FUNCTION_TABLE_W | 
|---|
| 776 | { | 
|---|
| 777 | unsigned long                     dwVersion; | 
|---|
| 778 | ENUMERATE_SECURITY_PACKAGES_FN_W  EnumerateSecurityPackagesW; | 
|---|
| 779 | QUERY_CREDENTIALS_ATTRIBUTES_FN_W QueryCredentialsAttributesW; | 
|---|
| 780 | ACQUIRE_CREDENTIALS_HANDLE_FN_W   AcquireCredentialsHandleW; | 
|---|
| 781 | FREE_CREDENTIALS_HANDLE_FN        FreeCredentialsHandle; | 
|---|
| 782 | void                             *Reserved2; | 
|---|
| 783 | INITIALIZE_SECURITY_CONTEXT_FN_W  InitializeSecurityContextW; | 
|---|
| 784 | ACCEPT_SECURITY_CONTEXT_FN        AcceptSecurityContext; | 
|---|
| 785 | COMPLETE_AUTH_TOKEN_FN            CompleteAuthToken; | 
|---|
| 786 | DELETE_SECURITY_CONTEXT_FN        DeleteSecurityContext; | 
|---|
| 787 | APPLY_CONTROL_TOKEN_FN            ApplyControlToken; | 
|---|
| 788 | QUERY_CONTEXT_ATTRIBUTES_FN_W     QueryContextAttributesW; | 
|---|
| 789 | IMPERSONATE_SECURITY_CONTEXT_FN   ImpersonateSecurityContext; | 
|---|
| 790 | REVERT_SECURITY_CONTEXT_FN        RevertSecurityContext; | 
|---|
| 791 | MAKE_SIGNATURE_FN                 MakeSignature; | 
|---|
| 792 | VERIFY_SIGNATURE_FN               VerifySignature; | 
|---|
| 793 | FREE_CONTEXT_BUFFER_FN            FreeContextBuffer; | 
|---|
| 794 | QUERY_SECURITY_PACKAGE_INFO_FN_W  QuerySecurityPackageInfoW; | 
|---|
| 795 | void                             *Reserved3; | 
|---|
| 796 | void                             *Reserved4; | 
|---|
| 797 | EXPORT_SECURITY_CONTEXT_FN        ExportSecurityContext; | 
|---|
| 798 | IMPORT_SECURITY_CONTEXT_FN_W      ImportSecurityContextW; | 
|---|
| 799 | ADD_CREDENTIALS_FN_W              AddCredentialsW; | 
|---|
| 800 | void                             *Reserved8; | 
|---|
| 801 | QUERY_SECURITY_CONTEXT_TOKEN_FN   QuerySecurityContextToken; | 
|---|
| 802 | ENCRYPT_MESSAGE_FN                EncryptMessage; | 
|---|
| 803 | DECRYPT_MESSAGE_FN                DecryptMessage; | 
|---|
| 804 | SET_CONTEXT_ATTRIBUTES_FN_W       SetContextAttributesW; | 
|---|
| 805 | } SecurityFunctionTableW, *PSecurityFunctionTableW; | 
|---|
| 806 |  | 
|---|
| 807 | #define SecurityFunctionTable WINELIB_NAME_AW(SecurityFunctionTable) | 
|---|
| 808 | #define PSecurityFunctionTable WINELIB_NAME_AW(PSecurityFunctionTable) | 
|---|
| 809 |  | 
|---|
| 810 | #define SECURITY_SUPPORT_PROVIDER_INTERFACE_VERSION   1 | 
|---|
| 811 | #define SECURITY_SUPPORT_PROVIDER_INTERFACE_VERSION_2 2 | 
|---|
| 812 |  | 
|---|
| 813 | PSecurityFunctionTableA SEC_ENTRY InitSecurityInterfaceA(void); | 
|---|
| 814 | PSecurityFunctionTableW SEC_ENTRY InitSecurityInterfaceW(void); | 
|---|
| 815 | #define InitSecurityInterface WINELIB_NAME_AW(InitSecurityInterface) | 
|---|
| 816 |  | 
|---|
| 817 | typedef PSecurityFunctionTableA (*SEC_ENTRY INIT_SECURITY_INTERFACE_A)(void); | 
|---|
| 818 | typedef PSecurityFunctionTableW (*SEC_ENTRY INIT_SECURITY_INTERFACE_W)(void); | 
|---|
| 819 | #define INIT_SECURITY_INTERFACE WINELIB_NAME_AW(INIT_SECURITY_INTERFACE_) | 
|---|
| 820 |  | 
|---|
| 821 | #ifdef __cplusplus | 
|---|
| 822 | } | 
|---|
| 823 | #endif | 
|---|
| 824 |  | 
|---|
| 825 | #endif /* ndef __WINE_SSPI_H__ */ | 
|---|