| 1 | #ifndef _SSPI_H | 
 
 
 
 
 | 2 | #define _SSPI_H | 
 
 
 
 
 | 3 | #if __GNUC__ >=3 | 
 
 
 
 
 | 4 | #pragma GCC system_header | 
 
 
 
 
 | 5 | #endif | 
 
 
 
 
 | 6 |  | 
 
 
 
 
 | 7 | #include <ntsecapi.h> | 
 
 
 
 
 | 8 |  | 
 
 
 
 
 | 9 | #ifdef __cplusplus | 
 
 
 
 
 | 10 | extern "C" { | 
 
 
 
 
 | 11 | #endif | 
 
 
 
 
 | 12 |  | 
 
 
 
 
 | 13 | #include <subauth.h> | 
 
 
 
 
 | 14 |  | 
 
 
 
 
 | 15 | #define SECPKG_CRED_INBOUND 1 | 
 
 
 
 
 | 16 | #define SECPKG_CRED_OUTBOUND 2 | 
 
 
 
 
 | 17 | #define SECPKG_CRED_BOTH (SECPKG_CRED_OUTBOUND|SECPKG_CRED_INBOUND) | 
 
 
 
 
 | 18 | #define SECPKG_CRED_ATTR_NAMES 1 | 
 
 
 
 
 | 19 |  | 
 
 
 
 
 | 20 | #define SECPKG_FLAG_INTEGRITY 1 | 
 
 
 
 
 | 21 | #define SECPKG_FLAG_PRIVACY 2 | 
 
 
 
 
 | 22 | #define SECPKG_FLAG_TOKEN_ONLY 4 | 
 
 
 
 
 | 23 | #define SECPKG_FLAG_DATAGRAM 8 | 
 
 
 
 
 | 24 | #define SECPKG_FLAG_CONNECTION 16 | 
 
 
 
 
 | 25 | #define SECPKG_FLAG_MULTI_REQUIRED 32 | 
 
 
 
 
 | 26 | #define SECPKG_FLAG_CLIENT_ONLY 64 | 
 
 
 
 
 | 27 | #define SECPKG_FLAG_EXTENDED_ERROR 128 | 
 
 
 
 
 | 28 | #define SECPKG_FLAG_IMPERSONATION 256 | 
 
 
 
 
 | 29 | #define SECPKG_FLAG_ACCEPT_WIN32_NAME 512 | 
 
 
 
 
 | 30 | #define SECPKG_FLAG_STREAM 1024 | 
 
 
 
 
 | 31 |  | 
 
 
 
 
 | 32 | #define SECPKG_ATTR_AUTHORITY 6 | 
 
 
 
 
 | 33 | #define SECPKG_ATTR_CONNECTION_INFO 90 | 
 
 
 
 
 | 34 | #define SECPKG_ATTR_ISSUER_LIST 80 | 
 
 
 
 
 | 35 | #define SECPKG_ATTR_ISSUER_LIST_EX 89 | 
 
 
 
 
 | 36 | #define SECPKG_ATTR_KEY_INFO 5 | 
 
 
 
 
 | 37 | #define SECPKG_ATTR_LIFESPAN 2 | 
 
 
 
 
 | 38 | #define SECPKG_ATTR_LOCAL_CERT_CONTEXT 84 | 
 
 
 
 
 | 39 | #define SECPKG_ATTR_LOCAL_CRED 82 | 
 
 
 
 
 | 40 | #define SECPKG_ATTR_NAMES 1 | 
 
 
 
 
 | 41 | #define SECPKG_ATTR_PROTO_INFO 7 | 
 
 
 
 
 | 42 | #define SECPKG_ATTR_REMOTE_CERT_CONTEXT 83 | 
 
 
 
 
 | 43 | #define SECPKG_ATTR_REMOTE_CRED 81 | 
 
 
 
 
 | 44 | #define SECPKG_ATTR_SIZES 0 | 
 
 
 
 
 | 45 | #define SECPKG_ATTR_STREAM_SIZES 4 | 
 
 
 
 
 | 46 |  | 
 
 
 
 
 | 47 | #define SECBUFFER_EMPTY 0 | 
 
 
 
 
 | 48 | #define SECBUFFER_DATA 1 | 
 
 
 
 
 | 49 | #define SECBUFFER_TOKEN 2 | 
 
 
 
 
 | 50 | #define SECBUFFER_PKG_PARAMS 3 | 
 
 
 
 
 | 51 | #define SECBUFFER_MISSING 4 | 
 
 
 
 
 | 52 | #define SECBUFFER_EXTRA 5 | 
 
 
 
 
 | 53 | #define SECBUFFER_STREAM_TRAILER 6 | 
 
 
 
 
 | 54 | #define SECBUFFER_STREAM_HEADER 7 | 
 
 
 
 
 | 55 | #define SECBUFFER_PADDING 9 | 
 
 
 
 
 | 56 | #define SECBUFFER_STREAM 10 | 
 
 
 
 
 | 57 | #define SECBUFFER_READONLY 0x80000000 | 
 
 
 
 
 | 58 | #define SECBUFFER_ATTRMASK 0xf0000000 | 
 
 
 
 
 | 59 |  | 
 
 
 
 
 | 60 | #define UNISP_NAME_A "Microsoft Unified Security Protocol Provider" | 
 
 
 
 
 | 61 | #define UNISP_NAME_W L"Microsoft Unified Security Protocol Provider" | 
 
 
 
 
 | 62 | #define SECBUFFER_VERSION 0 | 
 
 
 
 
 | 63 |  | 
 
 
 
 
 | 64 | typedef UNICODE_STRING SECURITY_STRING, *PSECURITY_STRING; | 
 
 
 
 
 | 65 |  | 
 
 
 
 
 | 66 | typedef struct _SecHandle { | 
 
 
 
 
 | 67 | ULONG_PTR dwLower; | 
 
 
 
 
 | 68 | ULONG_PTR dwUpper; | 
 
 
 
 
 | 69 | } SecHandle, *PSecHandle; | 
 
 
 
 
 | 70 | typedef struct _SecBuffer { | 
 
 
 
 
 | 71 | ULONG cbBuffer; | 
 
 
 
 
 | 72 | ULONG BufferType; | 
 
 
 
 
 | 73 | PVOID pvBuffer; | 
 
 
 
 
 | 74 | } SecBuffer, *PSecBuffer; | 
 
 
 
 
 | 75 | typedef SecHandle CredHandle; | 
 
 
 
 
 | 76 | typedef PSecHandle PCredHandle; | 
 
 
 
 
 | 77 | typedef SecHandle CtxtHandle; | 
 
 
 
 
 | 78 | typedef PSecHandle PCtxtHandle; | 
 
 
 
 
 | 79 | typedef struct _SECURITY_INTEGER { | 
 
 
 
 
 | 80 | unsigned long LowPart; | 
 
 
 
 
 | 81 | long HighPart; | 
 
 
 
 
 | 82 | } SECURITY_INTEGER; | 
 
 
 
 
 | 83 | typedef SECURITY_INTEGER TimeStamp, *PTimeStamp; | 
 
 
 
 
 | 84 | typedef struct _SecBufferDesc { | 
 
 
 
 
 | 85 | ULONG ulVersion; | 
 
 
 
 
 | 86 | ULONG cBuffers; | 
 
 
 
 
 | 87 | PSecBuffer pBuffers; | 
 
 
 
 
 | 88 | } SecBufferDesc, *PSecBufferDesc; | 
 
 
 
 
 | 89 | typedef struct _SecPkgContext_StreamSizes { | 
 
 
 
 
 | 90 | ULONG cbHeader; | 
 
 
 
 
 | 91 | ULONG cbTrailer; | 
 
 
 
 
 | 92 | ULONG cbMaximumMessage; | 
 
 
 
 
 | 93 | ULONG cBuffers; | 
 
 
 
 
 | 94 | ULONG cbBlockSize; | 
 
 
 
 
 | 95 | } SecPkgContext_StreamSizes, *PSecPkgContext_StreamSizes; | 
 
 
 
 
 | 96 | typedef struct _SecPkgContext_Sizes { | 
 
 
 
 
 | 97 | ULONG cbMaxToken; | 
 
 
 
 
 | 98 | ULONG cbMaxSignature; | 
 
 
 
 
 | 99 | ULONG cbBlockSize; | 
 
 
 
 
 | 100 | ULONG cbSecurityTrailer; | 
 
 
 
 
 | 101 | } SecPkgContext_Sizes, *PSecPkgContext_Sizes; | 
 
 
 
 
 | 102 | typedef struct _SecPkgContext_AuthorityW { | 
 
 
 
 
 | 103 | SEC_WCHAR* sAuthorityName; | 
 
 
 
 
 | 104 | } SecPkgContext_AuthorityW, *PSecPkgContext_AuthorityW; | 
 
 
 
 
 | 105 | typedef struct _SecPkgContext_AuthorityA { | 
 
 
 
 
 | 106 | SEC_CHAR* sAuthorityName; | 
 
 
 
 
 | 107 | } SecPkgContext_AuthorityA, *PSecPkgContext_AuthorityA; | 
 
 
 
 
 | 108 | typedef struct _SecPkgContext_KeyInfoW { | 
 
 
 
 
 | 109 | SEC_WCHAR* sSignatureAlgorithmName; | 
 
 
 
 
 | 110 | SEC_WCHAR* sEncryptAlgorithmName; | 
 
 
 
 
 | 111 | ULONG KeySize; | 
 
 
 
 
 | 112 | ULONG SignatureAlgorithm; | 
 
 
 
 
 | 113 | ULONG EncryptAlgorithm; | 
 
 
 
 
 | 114 | } SecPkgContext_KeyInfoW, *PSecPkgContext_KeyInfoW; | 
 
 
 
 
 | 115 | typedef struct _SecPkgContext_KeyInfoA { | 
 
 
 
 
 | 116 | SEC_CHAR* sSignatureAlgorithmName; | 
 
 
 
 
 | 117 | SEC_CHAR* sEncryptAlgorithmName; | 
 
 
 
 
 | 118 | ULONG KeySize; | 
 
 
 
 
 | 119 | ULONG SignatureAlgorithm; | 
 
 
 
 
 | 120 | ULONG EncryptAlgorithm; | 
 
 
 
 
 | 121 | } SecPkgContext_KeyInfoA, *PSecPkgContext_KeyInfoA; | 
 
 
 
 
 | 122 | typedef struct _SecPkgContext_LifeSpan { | 
 
 
 
 
 | 123 | TimeStamp tsStart; | 
 
 
 
 
 | 124 | TimeStamp tsExpiry; | 
 
 
 
 
 | 125 | } SecPkgContext_LifeSpan, *PSecPkgContext_LifeSpan; | 
 
 
 
 
 | 126 | typedef struct _SecPkgContext_NamesW { | 
 
 
 
 
 | 127 | SEC_WCHAR* sUserName; | 
 
 
 
 
 | 128 | } SecPkgContext_NamesW, *PSecPkgContext_NamesW; | 
 
 
 
 
 | 129 | typedef struct _SecPkgContext_NamesA { | 
 
 
 
 
 | 130 | SEC_CHAR* sUserName; | 
 
 
 
 
 | 131 | } SecPkgContext_NamesA, *PSecPkgContext_NamesA; | 
 
 
 
 
 | 132 | typedef struct _SecPkgInfoW { | 
 
 
 
 
 | 133 | ULONG fCapabilities; | 
 
 
 
 
 | 134 | USHORT wVersion; | 
 
 
 
 
 | 135 | USHORT wRPCID; | 
 
 
 
 
 | 136 | ULONG cbMaxToken; | 
 
 
 
 
 | 137 | SEC_WCHAR* Name; | 
 
 
 
 
 | 138 | SEC_WCHAR* Comment; | 
 
 
 
 
 | 139 | } SecPkgInfoW, *PSecPkgInfoW; | 
 
 
 
 
 | 140 | typedef struct _SecPkgInfoA { | 
 
 
 
 
 | 141 | ULONG fCapabilities; | 
 
 
 
 
 | 142 | USHORT wVersion; | 
 
 
 
 
 | 143 | USHORT wRPCID; | 
 
 
 
 
 | 144 | ULONG cbMaxToken; | 
 
 
 
 
 | 145 | SEC_CHAR* Name; | 
 
 
 
 
 | 146 | SEC_CHAR* Comment; | 
 
 
 
 
 | 147 | } SecPkgInfoA, *PSecPkgInfoA; | 
 
 
 
 
 | 148 | /* supported only in win2k+, so it should be a PSecPkgInfoW */ | 
 
 
 
 
 | 149 | /* PSDK does not say it has ANSI/Unicode versions */ | 
 
 
 
 
 | 150 | typedef struct _SecPkgContext_PackageInfo { | 
 
 
 
 
 | 151 | PSecPkgInfoW PackageInfo; | 
 
 
 
 
 | 152 | } SecPkgContext_PackageInfo, *PSecPkgContext_PackageInfo; | 
 
 
 
 
 | 153 | typedef struct _SecPkgCredentials_NamesW { | 
 
 
 
 
 | 154 | SEC_WCHAR* sUserName; | 
 
 
 
 
 | 155 | } SecPkgCredentials_NamesW, *PSecPkgCredentials_NamesW; | 
 
 
 
 
 | 156 | typedef struct _SecPkgCredentials_NamesA { | 
 
 
 
 
 | 157 | SEC_CHAR* sUserName; | 
 
 
 
 
 | 158 | } SecPkgCredentials_NamesA, *PSecPkgCredentials_NamesA; | 
 
 
 
 
 | 159 |  | 
 
 
 
 
 | 160 | /* TODO: missing type in SDK */ | 
 
 
 
 
 | 161 | typedef void (*SEC_GET_KEY_FN)(); | 
 
 
 
 
 | 162 |  | 
 
 
 
 
 | 163 | typedef SECURITY_STATUS (WINAPI *ENUMERATE_SECURITY_PACKAGES_FN_W)(PULONG,PSecPkgInfoW*); | 
 
 
 
 
 | 164 | typedef SECURITY_STATUS (WINAPI *ENUMERATE_SECURITY_PACKAGES_FN_A)(PULONG,PSecPkgInfoA*); | 
 
 
 
 
 | 165 | typedef SECURITY_STATUS (WINAPI *QUERY_CREDENTIALS_ATTRIBUTES_FN_W)(PCredHandle,ULONG,PVOID); | 
 
 
 
 
 | 166 | typedef SECURITY_STATUS (WINAPI *QUERY_CREDENTIALS_ATTRIBUTES_FN_A)(PCredHandle,ULONG,PVOID); | 
 
 
 
 
 | 167 | typedef SECURITY_STATUS (WINAPI *ACQUIRE_CREDENTIALS_HANDLE_FN_W)(SEC_WCHAR*,SEC_WCHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp); | 
 
 
 
 
 | 168 | typedef SECURITY_STATUS (WINAPI *ACQUIRE_CREDENTIALS_HANDLE_FN_A)(SEC_CHAR*,SEC_CHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp); | 
 
 
 
 
 | 169 | typedef SECURITY_STATUS (WINAPI *FREE_CREDENTIALS_HANDLE_FN)(PCredHandle); | 
 
 
 
 
 | 170 | typedef SECURITY_STATUS (WINAPI *INITIALIZE_SECURITY_CONTEXT_FN_W)(PCredHandle,PCtxtHandle,SEC_WCHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); | 
 
 
 
 
 | 171 | typedef SECURITY_STATUS (WINAPI *INITIALIZE_SECURITY_CONTEXT_FN_A)(PCredHandle,PCtxtHandle,SEC_CHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); | 
 
 
 
 
 | 172 | typedef SECURITY_STATUS (WINAPI *ACCEPT_SECURITY_CONTEXT_FN)(PCredHandle,PCtxtHandle,PSecBufferDesc,ULONG,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); | 
 
 
 
 
 | 173 | typedef SECURITY_STATUS (WINAPI *COMPLETE_AUTH_TOKEN_FN)(PCtxtHandle,PSecBufferDesc); | 
 
 
 
 
 | 174 | typedef SECURITY_STATUS (WINAPI *DELETE_SECURITY_CONTEXT_FN)(PCtxtHandle); | 
 
 
 
 
 | 175 | typedef SECURITY_STATUS (WINAPI *APPLY_CONTROL_TOKEN_FN_W)(PCtxtHandle,PSecBufferDesc); | 
 
 
 
 
 | 176 | typedef SECURITY_STATUS (WINAPI *APPLY_CONTROL_TOKEN_FN_A)(PCtxtHandle,PSecBufferDesc); | 
 
 
 
 
 | 177 | typedef SECURITY_STATUS (WINAPI *QUERY_CONTEXT_ATTRIBUTES_FN_A)(PCtxtHandle,ULONG,PVOID); | 
 
 
 
 
 | 178 | typedef SECURITY_STATUS (WINAPI *QUERY_CONTEXT_ATTRIBUTES_FN_W)(PCtxtHandle,ULONG,PVOID); | 
 
 
 
 
 | 179 | typedef SECURITY_STATUS (WINAPI *IMPERSONATE_SECURITY_CONTEXT_FN)(PCtxtHandle); | 
 
 
 
 
 | 180 | typedef SECURITY_STATUS (WINAPI *REVERT_SECURITY_CONTEXT_FN)(PCtxtHandle); | 
 
 
 
 
 | 181 | typedef SECURITY_STATUS (WINAPI *MAKE_SIGNATURE_FN)(PCtxtHandle,ULONG,PSecBufferDesc,ULONG); | 
 
 
 
 
 | 182 | typedef SECURITY_STATUS (WINAPI *VERIFY_SIGNATURE_FN)(PCtxtHandle,PSecBufferDesc,ULONG,PULONG); | 
 
 
 
 
 | 183 | typedef SECURITY_STATUS (WINAPI *FREE_CONTEXT_BUFFER_FN)(PVOID); | 
 
 
 
 
 | 184 | typedef SECURITY_STATUS (WINAPI *QUERY_SECURITY_PACKAGE_INFO_FN_A)(SEC_CHAR*,PSecPkgInfoA*); | 
 
 
 
 
 | 185 | typedef SECURITY_STATUS (WINAPI *QUERY_SECURITY_CONTEXT_TOKEN_FN)(PCtxtHandle,HANDLE*); | 
 
 
 
 
 | 186 | typedef SECURITY_STATUS (WINAPI *QUERY_SECURITY_PACKAGE_INFO_FN_W)(SEC_WCHAR*,PSecPkgInfoW*); | 
 
 
 
 
 | 187 | typedef SECURITY_STATUS (WINAPI *ENCRYPT_MESSAGE_FN)(PCtxtHandle,ULONG,PSecBufferDesc,ULONG); | 
 
 
 
 
 | 188 | typedef SECURITY_STATUS (WINAPI *DECRYPT_MESSAGE_FN)(PCtxtHandle,PSecBufferDesc,ULONG,PULONG); | 
 
 
 
 
 | 189 |  | 
 
 
 
 
 | 190 | /* No, it really is FreeCredentialsHandle, see the thread beginning | 
 
 
 
 
 | 191 | * http://sourceforge.net/mailarchive/message.php?msg_id=4321080 for a | 
 
 
 
 
 | 192 | * discovery discussion. */ | 
 
 
 
 
 | 193 | typedef struct _SECURITY_FUNCTION_TABLEW { | 
 
 
 
 
 | 194 | unsigned long dwVersion; | 
 
 
 
 
 | 195 | ENUMERATE_SECURITY_PACKAGES_FN_W EnumerateSecurityPackagesW; | 
 
 
 
 
 | 196 | QUERY_CREDENTIALS_ATTRIBUTES_FN_W QueryCredentialsAttributesW; | 
 
 
 
 
 | 197 | ACQUIRE_CREDENTIALS_HANDLE_FN_W AcquireCredentialsHandleW; | 
 
 
 
 
 | 198 | FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle; | 
 
 
 
 
 | 199 | void SEC_FAR* Reserved2; | 
 
 
 
 
 | 200 | INITIALIZE_SECURITY_CONTEXT_FN_W InitializeSecurityContextW; | 
 
 
 
 
 | 201 | ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext; | 
 
 
 
 
 | 202 | COMPLETE_AUTH_TOKEN_FN CompleteAuthToken; | 
 
 
 
 
 | 203 | DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext; | 
 
 
 
 
 | 204 | APPLY_CONTROL_TOKEN_FN_W ApplyControlTokenW; | 
 
 
 
 
 | 205 | QUERY_CONTEXT_ATTRIBUTES_FN_W QueryContextAttributesW; | 
 
 
 
 
 | 206 | IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext; | 
 
 
 
 
 | 207 | REVERT_SECURITY_CONTEXT_FN RevertSecurityContext; | 
 
 
 
 
 | 208 | MAKE_SIGNATURE_FN MakeSignature; | 
 
 
 
 
 | 209 | VERIFY_SIGNATURE_FN VerifySignature; | 
 
 
 
 
 | 210 | FREE_CONTEXT_BUFFER_FN FreeContextBuffer; | 
 
 
 
 
 | 211 | QUERY_SECURITY_PACKAGE_INFO_FN_W QuerySecurityPackageInfoW; | 
 
 
 
 
 | 212 | void SEC_FAR* Reserved3; | 
 
 
 
 
 | 213 | void SEC_FAR* Reserved4; | 
 
 
 
 
 | 214 | void SEC_FAR* Reserved5; | 
 
 
 
 
 | 215 | void SEC_FAR* Reserved6; | 
 
 
 
 
 | 216 | void SEC_FAR* Reserved7; | 
 
 
 
 
 | 217 | void SEC_FAR* Reserved8; | 
 
 
 
 
 | 218 | QUERY_SECURITY_CONTEXT_TOKEN_FN QuerySecurityContextToken; | 
 
 
 
 
 | 219 | ENCRYPT_MESSAGE_FN EncryptMessage; | 
 
 
 
 
 | 220 | DECRYPT_MESSAGE_FN DecryptMessage; | 
 
 
 
 
 | 221 | } SecurityFunctionTableW, *PSecurityFunctionTableW; | 
 
 
 
 
 | 222 | typedef struct _SECURITY_FUNCTION_TABLEA { | 
 
 
 
 
 | 223 | unsigned long dwVersion; | 
 
 
 
 
 | 224 | ENUMERATE_SECURITY_PACKAGES_FN_A EnumerateSecurityPackagesA; | 
 
 
 
 
 | 225 | QUERY_CREDENTIALS_ATTRIBUTES_FN_A QueryCredentialsAttributesA; | 
 
 
 
 
 | 226 | ACQUIRE_CREDENTIALS_HANDLE_FN_A AcquireCredentialsHandleA; | 
 
 
 
 
 | 227 | FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle; | 
 
 
 
 
 | 228 | void SEC_FAR* Reserved2; | 
 
 
 
 
 | 229 | INITIALIZE_SECURITY_CONTEXT_FN_A InitializeSecurityContextA; | 
 
 
 
 
 | 230 | ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext; | 
 
 
 
 
 | 231 | COMPLETE_AUTH_TOKEN_FN CompleteAuthToken; | 
 
 
 
 
 | 232 | DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext; | 
 
 
 
 
 | 233 | APPLY_CONTROL_TOKEN_FN_A ApplyControlTokenA; | 
 
 
 
 
 | 234 | QUERY_CONTEXT_ATTRIBUTES_FN_A QueryContextAttributesA; | 
 
 
 
 
 | 235 | IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext; | 
 
 
 
 
 | 236 | REVERT_SECURITY_CONTEXT_FN RevertSecurityContext; | 
 
 
 
 
 | 237 | MAKE_SIGNATURE_FN MakeSignature; | 
 
 
 
 
 | 238 | VERIFY_SIGNATURE_FN VerifySignature; | 
 
 
 
 
 | 239 | FREE_CONTEXT_BUFFER_FN FreeContextBuffer; | 
 
 
 
 
 | 240 | QUERY_SECURITY_PACKAGE_INFO_FN_A QuerySecurityPackageInfoA; | 
 
 
 
 
 | 241 | void SEC_FAR* Reserved3; | 
 
 
 
 
 | 242 | void SEC_FAR* Reserved4; | 
 
 
 
 
 | 243 | void SEC_FAR* Unknown1; | 
 
 
 
 
 | 244 | void SEC_FAR* Unknown2; | 
 
 
 
 
 | 245 | void SEC_FAR* Unknown3; | 
 
 
 
 
 | 246 | void SEC_FAR* Unknown4; | 
 
 
 
 
 | 247 | void SEC_FAR* Unknown5; | 
 
 
 
 
 | 248 | ENCRYPT_MESSAGE_FN EncryptMessage; | 
 
 
 
 
 | 249 | DECRYPT_MESSAGE_FN DecryptMessage; | 
 
 
 
 
 | 250 | } SecurityFunctionTableA, *PSecurityFunctionTableA; | 
 
 
 
 
 | 251 | typedef PSecurityFunctionTableA (WINAPI *INIT_SECURITY_INTERFACE_A)(VOID); | 
 
 
 
 
 | 252 | typedef PSecurityFunctionTableW (WINAPI *INIT_SECURITY_INTERFACE_W)(VOID); | 
 
 
 
 
 | 253 |  | 
 
 
 
 
 | 254 | SECURITY_STATUS WINAPI FreeCredentialsHandle(PCredHandle); | 
 
 
 
 
 | 255 | SECURITY_STATUS WINAPI EnumerateSecurityPackagesA(PULONG,PSecPkgInfoA*); | 
 
 
 
 
 | 256 | SECURITY_STATUS WINAPI EnumerateSecurityPackagesW(PULONG,PSecPkgInfoW*); | 
 
 
 
 
 | 257 | SECURITY_STATUS WINAPI AcquireCredentialsHandleA(SEC_CHAR*,SEC_CHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp); | 
 
 
 
 
 | 258 | SECURITY_STATUS WINAPI AcquireCredentialsHandleW(SEC_WCHAR*,SEC_WCHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp); | 
 
 
 
 
 | 259 | SECURITY_STATUS WINAPI AcceptSecurityContext(PCredHandle,PCtxtHandle,PSecBufferDesc,ULONG,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); | 
 
 
 
 
 | 260 | SECURITY_STATUS WINAPI InitializeSecurityContextA(PCredHandle,PCtxtHandle,SEC_CHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); | 
 
 
 
 
 | 261 | SECURITY_STATUS WINAPI InitializeSecurityContextW(PCredHandle,PCtxtHandle,SEC_WCHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp); | 
 
 
 
 
 | 262 | SECURITY_STATUS WINAPI FreeContextBuffer(PVOID); | 
 
 
 
 
 | 263 | SECURITY_STATUS WINAPI QueryContextAttributesA(PCtxtHandle,ULONG,PVOID); | 
 
 
 
 
 | 264 | SECURITY_STATUS WINAPI QueryContextAttributesW(PCtxtHandle,ULONG,PVOID); | 
 
 
 
 
 | 265 | SECURITY_STATUS WINAPI QueryCredentialsAttributesA(PCredHandle,ULONG,PVOID); | 
 
 
 
 
 | 266 | SECURITY_STATUS WINAPI QueryCredentialsAttributesW(PCredHandle,ULONG,PVOID); | 
 
 
 
 
 | 267 | #if (_WIN32_WINNT >= 0x0500) | 
 
 
 
 
 | 268 | SECURITY_STATUS WINAPI QuerySecurityContextToken(PCtxtHandle,HANDLE*); | 
 
 
 
 
 | 269 | #endif | 
 
 
 
 
 | 270 | SECURITY_STATUS WINAPI DecryptMessage(PCtxtHandle,PSecBufferDesc,ULONG,PULONG); | 
 
 
 
 
 | 271 | SECURITY_STATUS WINAPI EncryptMessage(PCtxtHandle,ULONG,PSecBufferDesc,ULONG); | 
 
 
 
 
 | 272 | SECURITY_STATUS WINAPI DeleteSecurityContext(PCtxtHandle); | 
 
 
 
 
 | 273 | SECURITY_STATUS WINAPI CompleteAuthToken(PCtxtHandle,PSecBufferDesc); | 
 
 
 
 
 | 274 | SECURITY_STATUS WINAPI ApplyControlTokenA(PCtxtHandle,PSecBufferDesc); | 
 
 
 
 
 | 275 | SECURITY_STATUS WINAPI ApplyControlTokenW(PCtxtHandle,PSecBufferDesc); | 
 
 
 
 
 | 276 | SECURITY_STATUS WINAPI ImpersonateSecurityContext(PCtxtHandle); | 
 
 
 
 
 | 277 | SECURITY_STATUS WINAPI RevertSecurityContext(PCtxtHandle); | 
 
 
 
 
 | 278 | SECURITY_STATUS WINAPI MakeSignature(PCtxtHandle,ULONG,PSecBufferDesc,ULONG); | 
 
 
 
 
 | 279 | SECURITY_STATUS WINAPI VerifySignature(PCtxtHandle,PSecBufferDesc,ULONG,PULONG); | 
 
 
 
 
 | 280 | SECURITY_STATUS WINAPI QuerySecurityPackageInfoA(SEC_CHAR*,PSecPkgInfoA*); | 
 
 
 
 
 | 281 | SECURITY_STATUS WINAPI QuerySecurityPackageInfoW(SEC_WCHAR*,PSecPkgInfoW*); | 
 
 
 
 
 | 282 | PSecurityFunctionTableA WINAPI InitSecurityInterfaceA(VOID); | 
 
 
 
 
 | 283 | PSecurityFunctionTableW WINAPI InitSecurityInterfaceW(VOID); | 
 
 
 
 
 | 284 |  | 
 
 
 
 
 | 285 | #ifdef UNICODE | 
 
 
 
 
 | 286 | #define UNISP_NAME UNISP_NAME_W | 
 
 
 
 
 | 287 | #define SecPkgInfo SecPkgInfoW | 
 
 
 
 
 | 288 | #define PSecPkgInfo PSecPkgInfoW | 
 
 
 
 
 | 289 | #define SecPkgCredentials_Names SecPkgCredentials_NamesW | 
 
 
 
 
 | 290 | #define PSecPkgCredentials_Names PSecPkgCredentials_NamesW | 
 
 
 
 
 | 291 | #define SecPkgContext_Authority SecPkgContext_AuthorityW | 
 
 
 
 
 | 292 | #define PSecPkgContext_Authority PSecPkgContext_AuthorityW | 
 
 
 
 
 | 293 | #define SecPkgContext_KeyInfo SecPkgContext_KeyInfoW | 
 
 
 
 
 | 294 | #define PSecPkgContext_KeyInfo PSecPkgContext_KeyInfoW | 
 
 
 
 
 | 295 | #define SecPkgContext_Names SecPkgContext_NamesW | 
 
 
 
 
 | 296 | #define PSecPkgContext_Names PSecPkgContext_NamesW | 
 
 
 
 
 | 297 | #define SecurityFunctionTable SecurityFunctionTableW | 
 
 
 
 
 | 298 | #define PSecurityFunctionTable PSecurityFunctionTableW | 
 
 
 
 
 | 299 | #define AcquireCredentialsHandle AcquireCredentialsHandleW | 
 
 
 
 
 | 300 | #define EnumerateSecurityPackages EnumerateSecurityPackagesW | 
 
 
 
 
 | 301 | #define InitializeSecurityContext InitializeSecurityContextW | 
 
 
 
 
 | 302 | #define QueryContextAttributes QueryContextAttributesW | 
 
 
 
 
 | 303 | #define QueryCredentialsAttributes QueryCredentialsAttributesW | 
 
 
 
 
 | 304 | #define QuerySecurityPackageInfo QuerySecurityPackageInfoW | 
 
 
 
 
 | 305 | #define ApplyControlToken ApplyControlTokenW | 
 
 
 
 
 | 306 | #define ENUMERATE_SECURITY_PACKAGES_FN ENUMERATE_SECURITY_PACKAGES_FN_W | 
 
 
 
 
 | 307 | #define QUERY_CREDENTIALS_ATTRIBUTES_FN QUERY_CREDENTIALS_ATTRIBUTES_FN_W | 
 
 
 
 
 | 308 | #define ACQUIRE_CREDENTIALS_HANDLE_FN ACQUIRE_CREDENTIALS_HANDLE_FN_W | 
 
 
 
 
 | 309 | #define INITIALIZE_SECURITY_CONTEXT_FN INITIALIZE_SECURITY_CONTEXT_FN_W | 
 
 
 
 
 | 310 | #define APPLY_CONTROL_TOKEN_FN APPLY_CONTROL_TOKEN_FN_W | 
 
 
 
 
 | 311 | #define QUERY_CONTEXT_ATTRIBUTES_FN QUERY_CONTEXT_ATTRIBUTES_FN_W | 
 
 
 
 
 | 312 | #define QUERY_SECURITY_PACKAGE_INFO_FN QUERY_SECURITY_PACKAGE_INFO_FN_W | 
 
 
 
 
 | 313 | #define INIT_SECURITY_INTERFACE INIT_SECURITY_INTERFACE_W | 
 
 
 
 
 | 314 | #else | 
 
 
 
 
 | 315 | #define UNISP_NAME UNISP_NAME_A | 
 
 
 
 
 | 316 | #define SecPkgInfo SecPkgInfoA | 
 
 
 
 
 | 317 | #define PSecPkgInfo PSecPkgInfoA | 
 
 
 
 
 | 318 | #define SecPkgCredentials_Names SecPkgCredentials_NamesA | 
 
 
 
 
 | 319 | #define PSecPkgCredentials_Names PSecPkgCredentials_NamesA | 
 
 
 
 
 | 320 | #define SecPkgContext_Authority SecPkgContext_AuthorityA | 
 
 
 
 
 | 321 | #define PSecPkgContext_Authority PSecPkgContext_AuthorityA | 
 
 
 
 
 | 322 | #define SecPkgContext_KeyInfo SecPkgContext_KeyInfoA | 
 
 
 
 
 | 323 | #define PSecPkgContext_KeyInfo PSecPkgContext_KeyInfoA | 
 
 
 
 
 | 324 | #define SecPkgContext_Names SecPkgContext_NamesA | 
 
 
 
 
 | 325 | #define PSecPkgContext_Names PSecPkgContext_NamesA | 
 
 
 
 
 | 326 | #define SecurityFunctionTable SecurityFunctionTableA | 
 
 
 
 
 | 327 | #define PSecurityFunctionTable PSecurityFunctionTableA | 
 
 
 
 
 | 328 | #define AcquireCredentialsHandle AcquireCredentialsHandleA | 
 
 
 
 
 | 329 | #define EnumerateSecurityPackages EnumerateSecurityPackagesA | 
 
 
 
 
 | 330 | #define InitializeSecurityContext InitializeSecurityContextA | 
 
 
 
 
 | 331 | #define QueryContextAttributes QueryContextAttributesA | 
 
 
 
 
 | 332 | #define QueryCredentialsAttributes QueryCredentialsAttributesA | 
 
 
 
 
 | 333 | #define QuerySecurityPackageInfo QuerySecurityPackageInfoA | 
 
 
 
 
 | 334 | #define ApplyControlToken ApplyControlTokenA | 
 
 
 
 
 | 335 | #define ENUMERATE_SECURITY_PACKAGES_FN ENUMERATE_SECURITY_PACKAGES_FN_A | 
 
 
 
 
 | 336 | #define QUERY_CREDENTIALS_ATTRIBUTES_FN QUERY_CREDENTIALS_ATTRIBUTES_FN_A | 
 
 
 
 
 | 337 | #define ACQUIRE_CREDENTIALS_HANDLE_FN ACQUIRE_CREDENTIALS_HANDLE_FN_A | 
 
 
 
 
 | 338 | #define INITIALIZE_SECURITY_CONTEXT_FN INITIALIZE_SECURITY_CONTEXT_FN_A | 
 
 
 
 
 | 339 | #define APPLY_CONTROL_TOKEN_FN APPLY_CONTROL_TOKEN_FN_A | 
 
 
 
 
 | 340 | #define QUERY_CONTEXT_ATTRIBUTES_FN QUERY_CONTEXT_ATTRIBUTES_FN_A | 
 
 
 
 
 | 341 | #define QUERY_SECURITY_PACKAGE_INFO_FN QUERY_SECURITY_PACKAGE_INFO_FN_A | 
 
 
 
 
 | 342 | #define INIT_SECURITY_INTERFACE INIT_SECURITY_INTERFACE_A | 
 
 
 
 
 | 343 | #endif | 
 
 
 
 
 | 344 |  | 
 
 
 
 
 | 345 | #ifdef __cplusplus | 
 
 
 
 
 | 346 | } | 
 
 
 
 
 | 347 | #endif | 
 
 
 
 
 | 348 | #endif |