| [21368] | 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__ */ | 
|---|