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