3 * @copy 2012 MinGW.org project
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
12 * The above copyright notice and this permission notice (including the next
13 * paragraph) shall be included in all copies or substantial portions of the
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
26 #pragma GCC system_header
36 #define SECPKG_CRED_INBOUND 1
37 #define SECPKG_CRED_OUTBOUND 2
38 #define SECPKG_CRED_BOTH (SECPKG_CRED_OUTBOUND|SECPKG_CRED_INBOUND)
39 #define SECPKG_CRED_ATTR_NAMES 1
41 #define SECPKG_FLAG_INTEGRITY 1
42 #define SECPKG_FLAG_PRIVACY 2
43 #define SECPKG_FLAG_TOKEN_ONLY 4
44 #define SECPKG_FLAG_DATAGRAM 8
45 #define SECPKG_FLAG_CONNECTION 16
46 #define SECPKG_FLAG_MULTI_REQUIRED 32
47 #define SECPKG_FLAG_CLIENT_ONLY 64
48 #define SECPKG_FLAG_EXTENDED_ERROR 128
49 #define SECPKG_FLAG_IMPERSONATION 256
50 #define SECPKG_FLAG_ACCEPT_WIN32_NAME 512
51 #define SECPKG_FLAG_STREAM 1024
53 #define SECPKG_ATTR_AUTHORITY 6
54 #define SECPKG_ATTR_CONNECTION_INFO 90
55 #define SECPKG_ATTR_ISSUER_LIST 80
56 #define SECPKG_ATTR_ISSUER_LIST_EX 89
57 #define SECPKG_ATTR_KEY_INFO 5
58 #define SECPKG_ATTR_LIFESPAN 2
59 #define SECPKG_ATTR_LOCAL_CERT_CONTEXT 84
60 #define SECPKG_ATTR_LOCAL_CRED 82
61 #define SECPKG_ATTR_NAMES 1
62 #define SECPKG_ATTR_PROTO_INFO 7
63 #define SECPKG_ATTR_REMOTE_CERT_CONTEXT 83
64 #define SECPKG_ATTR_REMOTE_CRED 81
65 #define SECPKG_ATTR_SIZES 0
66 #define SECPKG_ATTR_STREAM_SIZES 4
68 #define SECBUFFER_EMPTY 0
69 #define SECBUFFER_DATA 1
70 #define SECBUFFER_TOKEN 2
71 #define SECBUFFER_PKG_PARAMS 3
72 #define SECBUFFER_MISSING 4
73 #define SECBUFFER_EXTRA 5
74 #define SECBUFFER_STREAM_TRAILER 6
75 #define SECBUFFER_STREAM_HEADER 7
76 #define SECBUFFER_PADDING 9
77 #define SECBUFFER_STREAM 10
78 #define SECBUFFER_READONLY 0x80000000
79 #define SECBUFFER_ATTRMASK 0xf0000000
81 #define UNISP_NAME_A "Microsoft Unified Security Protocol Provider"
82 #define UNISP_NAME_W L"Microsoft Unified Security Protocol Provider"
83 #define SECBUFFER_VERSION 0
85 typedef UNICODE_STRING SECURITY_STRING, *PSECURITY_STRING;
87 typedef struct _SecHandle {
90 } SecHandle, *PSecHandle;
91 typedef struct _SecBuffer {
95 } SecBuffer, *PSecBuffer;
96 typedef SecHandle CredHandle;
97 typedef PSecHandle PCredHandle;
98 typedef SecHandle CtxtHandle;
99 typedef PSecHandle PCtxtHandle;
100 typedef struct _SECURITY_INTEGER {
101 unsigned long LowPart;
104 typedef SECURITY_INTEGER TimeStamp, *PTimeStamp;
105 typedef struct _SecBufferDesc {
109 } SecBufferDesc, *PSecBufferDesc;
110 typedef struct _SecPkgContext_StreamSizes {
113 ULONG cbMaximumMessage;
116 } SecPkgContext_StreamSizes, *PSecPkgContext_StreamSizes;
117 typedef struct _SecPkgContext_Sizes {
119 ULONG cbMaxSignature;
121 ULONG cbSecurityTrailer;
122 } SecPkgContext_Sizes, *PSecPkgContext_Sizes;
123 typedef struct _SecPkgContext_AuthorityW {
124 SEC_WCHAR* sAuthorityName;
125 } SecPkgContext_AuthorityW, *PSecPkgContext_AuthorityW;
126 typedef struct _SecPkgContext_AuthorityA {
127 SEC_CHAR* sAuthorityName;
128 } SecPkgContext_AuthorityA, *PSecPkgContext_AuthorityA;
129 typedef struct _SecPkgContext_KeyInfoW {
130 SEC_WCHAR* sSignatureAlgorithmName;
131 SEC_WCHAR* sEncryptAlgorithmName;
133 ULONG SignatureAlgorithm;
134 ULONG EncryptAlgorithm;
135 } SecPkgContext_KeyInfoW, *PSecPkgContext_KeyInfoW;
136 typedef struct _SecPkgContext_KeyInfoA {
137 SEC_CHAR* sSignatureAlgorithmName;
138 SEC_CHAR* sEncryptAlgorithmName;
140 ULONG SignatureAlgorithm;
141 ULONG EncryptAlgorithm;
142 } SecPkgContext_KeyInfoA, *PSecPkgContext_KeyInfoA;
143 typedef struct _SecPkgContext_LifeSpan {
146 } SecPkgContext_LifeSpan, *PSecPkgContext_LifeSpan;
147 typedef struct _SecPkgContext_NamesW {
148 SEC_WCHAR* sUserName;
149 } SecPkgContext_NamesW, *PSecPkgContext_NamesW;
150 typedef struct _SecPkgContext_NamesA {
152 } SecPkgContext_NamesA, *PSecPkgContext_NamesA;
153 typedef struct _SecPkgInfoW {
160 } SecPkgInfoW, *PSecPkgInfoW;
161 typedef struct _SecPkgInfoA {
168 } SecPkgInfoA, *PSecPkgInfoA;
169 /* supported only in win2k+, so it should be a PSecPkgInfoW */
170 /* PSDK does not say it has ANSI/Unicode versions */
171 typedef struct _SecPkgContext_PackageInfo {
172 PSecPkgInfoW PackageInfo;
173 } SecPkgContext_PackageInfo, *PSecPkgContext_PackageInfo;
174 typedef struct _SecPkgCredentials_NamesW {
175 SEC_WCHAR* sUserName;
176 } SecPkgCredentials_NamesW, *PSecPkgCredentials_NamesW;
177 typedef struct _SecPkgCredentials_NamesA {
179 } SecPkgCredentials_NamesA, *PSecPkgCredentials_NamesA;
181 /* TODO: missing type in SDK */
182 typedef void (*SEC_GET_KEY_FN)();
184 typedef SECURITY_STATUS (WINAPI *ENUMERATE_SECURITY_PACKAGES_FN_W)(PULONG,PSecPkgInfoW*);
185 typedef SECURITY_STATUS (WINAPI *ENUMERATE_SECURITY_PACKAGES_FN_A)(PULONG,PSecPkgInfoA*);
186 typedef SECURITY_STATUS (WINAPI *QUERY_CREDENTIALS_ATTRIBUTES_FN_W)(PCredHandle,ULONG,PVOID);
187 typedef SECURITY_STATUS (WINAPI *QUERY_CREDENTIALS_ATTRIBUTES_FN_A)(PCredHandle,ULONG,PVOID);
188 typedef SECURITY_STATUS (WINAPI *ACQUIRE_CREDENTIALS_HANDLE_FN_W)(SEC_WCHAR*,SEC_WCHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp);
189 typedef SECURITY_STATUS (WINAPI *ACQUIRE_CREDENTIALS_HANDLE_FN_A)(SEC_CHAR*,SEC_CHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp);
190 typedef SECURITY_STATUS (WINAPI *FREE_CREDENTIALS_HANDLE_FN)(PCredHandle);
191 typedef SECURITY_STATUS (WINAPI *INITIALIZE_SECURITY_CONTEXT_FN_W)(PCredHandle,PCtxtHandle,SEC_WCHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp);
192 typedef SECURITY_STATUS (WINAPI *INITIALIZE_SECURITY_CONTEXT_FN_A)(PCredHandle,PCtxtHandle,SEC_CHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp);
193 typedef SECURITY_STATUS (WINAPI *ACCEPT_SECURITY_CONTEXT_FN)(PCredHandle,PCtxtHandle,PSecBufferDesc,ULONG,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp);
194 typedef SECURITY_STATUS (WINAPI *COMPLETE_AUTH_TOKEN_FN)(PCtxtHandle,PSecBufferDesc);
195 typedef SECURITY_STATUS (WINAPI *DELETE_SECURITY_CONTEXT_FN)(PCtxtHandle);
196 typedef SECURITY_STATUS (WINAPI *APPLY_CONTROL_TOKEN_FN_W)(PCtxtHandle,PSecBufferDesc);
197 typedef SECURITY_STATUS (WINAPI *APPLY_CONTROL_TOKEN_FN_A)(PCtxtHandle,PSecBufferDesc);
198 typedef SECURITY_STATUS (WINAPI *QUERY_CONTEXT_ATTRIBUTES_FN_A)(PCtxtHandle,ULONG,PVOID);
199 typedef SECURITY_STATUS (WINAPI *QUERY_CONTEXT_ATTRIBUTES_FN_W)(PCtxtHandle,ULONG,PVOID);
200 typedef SECURITY_STATUS (WINAPI *IMPERSONATE_SECURITY_CONTEXT_FN)(PCtxtHandle);
201 typedef SECURITY_STATUS (WINAPI *REVERT_SECURITY_CONTEXT_FN)(PCtxtHandle);
202 typedef SECURITY_STATUS (WINAPI *MAKE_SIGNATURE_FN)(PCtxtHandle,ULONG,PSecBufferDesc,ULONG);
203 typedef SECURITY_STATUS (WINAPI *VERIFY_SIGNATURE_FN)(PCtxtHandle,PSecBufferDesc,ULONG,PULONG);
204 typedef SECURITY_STATUS (WINAPI *FREE_CONTEXT_BUFFER_FN)(PVOID);
205 typedef SECURITY_STATUS (WINAPI *QUERY_SECURITY_PACKAGE_INFO_FN_A)(SEC_CHAR*,PSecPkgInfoA*);
206 typedef SECURITY_STATUS (WINAPI *QUERY_SECURITY_CONTEXT_TOKEN_FN)(PCtxtHandle,HANDLE*);
207 typedef SECURITY_STATUS (WINAPI *QUERY_SECURITY_PACKAGE_INFO_FN_W)(SEC_WCHAR*,PSecPkgInfoW*);
208 typedef SECURITY_STATUS (WINAPI *ENCRYPT_MESSAGE_FN)(PCtxtHandle,ULONG,PSecBufferDesc,ULONG);
209 typedef SECURITY_STATUS (WINAPI *DECRYPT_MESSAGE_FN)(PCtxtHandle,PSecBufferDesc,ULONG,PULONG);
211 /* No, it really is FreeCredentialsHandle, see the thread beginning
212 * http://sourceforge.net/mailarchive/message.php?msg_id=4321080 for a
213 * discovery discussion. */
214 typedef struct _SECURITY_FUNCTION_TABLEW {
215 unsigned long dwVersion;
216 ENUMERATE_SECURITY_PACKAGES_FN_W EnumerateSecurityPackagesW;
217 QUERY_CREDENTIALS_ATTRIBUTES_FN_W QueryCredentialsAttributesW;
218 ACQUIRE_CREDENTIALS_HANDLE_FN_W AcquireCredentialsHandleW;
219 FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle;
220 void SEC_FAR* Reserved2;
221 INITIALIZE_SECURITY_CONTEXT_FN_W InitializeSecurityContextW;
222 ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext;
223 COMPLETE_AUTH_TOKEN_FN CompleteAuthToken;
224 DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext;
225 APPLY_CONTROL_TOKEN_FN_W ApplyControlTokenW;
226 QUERY_CONTEXT_ATTRIBUTES_FN_W QueryContextAttributesW;
227 IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext;
228 REVERT_SECURITY_CONTEXT_FN RevertSecurityContext;
229 MAKE_SIGNATURE_FN MakeSignature;
230 VERIFY_SIGNATURE_FN VerifySignature;
231 FREE_CONTEXT_BUFFER_FN FreeContextBuffer;
232 QUERY_SECURITY_PACKAGE_INFO_FN_W QuerySecurityPackageInfoW;
233 void SEC_FAR* Reserved3;
234 void SEC_FAR* Reserved4;
235 void SEC_FAR* Reserved5;
236 void SEC_FAR* Reserved6;
237 void SEC_FAR* Reserved7;
238 void SEC_FAR* Reserved8;
239 QUERY_SECURITY_CONTEXT_TOKEN_FN QuerySecurityContextToken;
240 ENCRYPT_MESSAGE_FN EncryptMessage;
241 DECRYPT_MESSAGE_FN DecryptMessage;
242 } SecurityFunctionTableW, *PSecurityFunctionTableW;
243 typedef struct _SECURITY_FUNCTION_TABLEA {
244 unsigned long dwVersion;
245 ENUMERATE_SECURITY_PACKAGES_FN_A EnumerateSecurityPackagesA;
246 QUERY_CREDENTIALS_ATTRIBUTES_FN_A QueryCredentialsAttributesA;
247 ACQUIRE_CREDENTIALS_HANDLE_FN_A AcquireCredentialsHandleA;
248 FREE_CREDENTIALS_HANDLE_FN FreeCredentialsHandle;
249 void SEC_FAR* Reserved2;
250 INITIALIZE_SECURITY_CONTEXT_FN_A InitializeSecurityContextA;
251 ACCEPT_SECURITY_CONTEXT_FN AcceptSecurityContext;
252 COMPLETE_AUTH_TOKEN_FN CompleteAuthToken;
253 DELETE_SECURITY_CONTEXT_FN DeleteSecurityContext;
254 APPLY_CONTROL_TOKEN_FN_A ApplyControlTokenA;
255 QUERY_CONTEXT_ATTRIBUTES_FN_A QueryContextAttributesA;
256 IMPERSONATE_SECURITY_CONTEXT_FN ImpersonateSecurityContext;
257 REVERT_SECURITY_CONTEXT_FN RevertSecurityContext;
258 MAKE_SIGNATURE_FN MakeSignature;
259 VERIFY_SIGNATURE_FN VerifySignature;
260 FREE_CONTEXT_BUFFER_FN FreeContextBuffer;
261 QUERY_SECURITY_PACKAGE_INFO_FN_A QuerySecurityPackageInfoA;
262 void SEC_FAR* Reserved3;
263 void SEC_FAR* Reserved4;
264 void SEC_FAR* Unknown1;
265 void SEC_FAR* Unknown2;
266 void SEC_FAR* Unknown3;
267 void SEC_FAR* Unknown4;
268 void SEC_FAR* Unknown5;
269 ENCRYPT_MESSAGE_FN EncryptMessage;
270 DECRYPT_MESSAGE_FN DecryptMessage;
271 } SecurityFunctionTableA, *PSecurityFunctionTableA;
272 typedef PSecurityFunctionTableA (WINAPI *INIT_SECURITY_INTERFACE_A)(VOID);
273 typedef PSecurityFunctionTableW (WINAPI *INIT_SECURITY_INTERFACE_W)(VOID);
275 SECURITY_STATUS WINAPI FreeCredentialsHandle(PCredHandle);
276 SECURITY_STATUS WINAPI EnumerateSecurityPackagesA(PULONG,PSecPkgInfoA*);
277 SECURITY_STATUS WINAPI EnumerateSecurityPackagesW(PULONG,PSecPkgInfoW*);
278 SECURITY_STATUS WINAPI AcquireCredentialsHandleA(SEC_CHAR*,SEC_CHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp);
279 SECURITY_STATUS WINAPI AcquireCredentialsHandleW(SEC_WCHAR*,SEC_WCHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp);
280 SECURITY_STATUS WINAPI AcceptSecurityContext(PCredHandle,PCtxtHandle,PSecBufferDesc,ULONG,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp);
281 SECURITY_STATUS WINAPI InitializeSecurityContextA(PCredHandle,PCtxtHandle,SEC_CHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp);
282 SECURITY_STATUS WINAPI InitializeSecurityContextW(PCredHandle,PCtxtHandle,SEC_WCHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp);
283 SECURITY_STATUS WINAPI FreeContextBuffer(PVOID);
284 SECURITY_STATUS WINAPI QueryContextAttributesA(PCtxtHandle,ULONG,PVOID);
285 SECURITY_STATUS WINAPI QueryContextAttributesW(PCtxtHandle,ULONG,PVOID);
286 SECURITY_STATUS WINAPI QueryCredentialsAttributesA(PCredHandle,ULONG,PVOID);
287 SECURITY_STATUS WINAPI QueryCredentialsAttributesW(PCredHandle,ULONG,PVOID);
288 #if (_WIN32_WINNT >= 0x0500)
289 SECURITY_STATUS WINAPI QuerySecurityContextToken(PCtxtHandle,HANDLE*);
291 SECURITY_STATUS WINAPI DecryptMessage(PCtxtHandle,PSecBufferDesc,ULONG,PULONG);
292 SECURITY_STATUS WINAPI EncryptMessage(PCtxtHandle,ULONG,PSecBufferDesc,ULONG);
293 SECURITY_STATUS WINAPI DeleteSecurityContext(PCtxtHandle);
294 SECURITY_STATUS WINAPI CompleteAuthToken(PCtxtHandle,PSecBufferDesc);
295 SECURITY_STATUS WINAPI ApplyControlTokenA(PCtxtHandle,PSecBufferDesc);
296 SECURITY_STATUS WINAPI ApplyControlTokenW(PCtxtHandle,PSecBufferDesc);
297 SECURITY_STATUS WINAPI ImpersonateSecurityContext(PCtxtHandle);
298 SECURITY_STATUS WINAPI RevertSecurityContext(PCtxtHandle);
299 SECURITY_STATUS WINAPI MakeSignature(PCtxtHandle,ULONG,PSecBufferDesc,ULONG);
300 SECURITY_STATUS WINAPI VerifySignature(PCtxtHandle,PSecBufferDesc,ULONG,PULONG);
301 SECURITY_STATUS WINAPI QuerySecurityPackageInfoA(SEC_CHAR*,PSecPkgInfoA*);
302 SECURITY_STATUS WINAPI QuerySecurityPackageInfoW(SEC_WCHAR*,PSecPkgInfoW*);
303 PSecurityFunctionTableA WINAPI InitSecurityInterfaceA(VOID);
304 PSecurityFunctionTableW WINAPI InitSecurityInterfaceW(VOID);
307 #define UNISP_NAME UNISP_NAME_W
308 #define SecPkgInfo SecPkgInfoW
309 #define PSecPkgInfo PSecPkgInfoW
310 #define SecPkgCredentials_Names SecPkgCredentials_NamesW
311 #define PSecPkgCredentials_Names PSecPkgCredentials_NamesW
312 #define SecPkgContext_Authority SecPkgContext_AuthorityW
313 #define PSecPkgContext_Authority PSecPkgContext_AuthorityW
314 #define SecPkgContext_KeyInfo SecPkgContext_KeyInfoW
315 #define PSecPkgContext_KeyInfo PSecPkgContext_KeyInfoW
316 #define SecPkgContext_Names SecPkgContext_NamesW
317 #define PSecPkgContext_Names PSecPkgContext_NamesW
318 #define SecurityFunctionTable SecurityFunctionTableW
319 #define PSecurityFunctionTable PSecurityFunctionTableW
320 #define AcquireCredentialsHandle AcquireCredentialsHandleW
321 #define EnumerateSecurityPackages EnumerateSecurityPackagesW
322 #define InitializeSecurityContext InitializeSecurityContextW
323 #define QueryContextAttributes QueryContextAttributesW
324 #define QueryCredentialsAttributes QueryCredentialsAttributesW
325 #define QuerySecurityPackageInfo QuerySecurityPackageInfoW
326 #define ApplyControlToken ApplyControlTokenW
327 #define ENUMERATE_SECURITY_PACKAGES_FN ENUMERATE_SECURITY_PACKAGES_FN_W
328 #define QUERY_CREDENTIALS_ATTRIBUTES_FN QUERY_CREDENTIALS_ATTRIBUTES_FN_W
329 #define ACQUIRE_CREDENTIALS_HANDLE_FN ACQUIRE_CREDENTIALS_HANDLE_FN_W
330 #define INITIALIZE_SECURITY_CONTEXT_FN INITIALIZE_SECURITY_CONTEXT_FN_W
331 #define APPLY_CONTROL_TOKEN_FN APPLY_CONTROL_TOKEN_FN_W
332 #define QUERY_CONTEXT_ATTRIBUTES_FN QUERY_CONTEXT_ATTRIBUTES_FN_W
333 #define QUERY_SECURITY_PACKAGE_INFO_FN QUERY_SECURITY_PACKAGE_INFO_FN_W
334 #define INIT_SECURITY_INTERFACE INIT_SECURITY_INTERFACE_W
336 #define UNISP_NAME UNISP_NAME_A
337 #define SecPkgInfo SecPkgInfoA
338 #define PSecPkgInfo PSecPkgInfoA
339 #define SecPkgCredentials_Names SecPkgCredentials_NamesA
340 #define PSecPkgCredentials_Names PSecPkgCredentials_NamesA
341 #define SecPkgContext_Authority SecPkgContext_AuthorityA
342 #define PSecPkgContext_Authority PSecPkgContext_AuthorityA
343 #define SecPkgContext_KeyInfo SecPkgContext_KeyInfoA
344 #define PSecPkgContext_KeyInfo PSecPkgContext_KeyInfoA
345 #define SecPkgContext_Names SecPkgContext_NamesA
346 #define PSecPkgContext_Names PSecPkgContext_NamesA
347 #define SecurityFunctionTable SecurityFunctionTableA
348 #define PSecurityFunctionTable PSecurityFunctionTableA
349 #define AcquireCredentialsHandle AcquireCredentialsHandleA
350 #define EnumerateSecurityPackages EnumerateSecurityPackagesA
351 #define InitializeSecurityContext InitializeSecurityContextA
352 #define QueryContextAttributes QueryContextAttributesA
353 #define QueryCredentialsAttributes QueryCredentialsAttributesA
354 #define QuerySecurityPackageInfo QuerySecurityPackageInfoA
355 #define ApplyControlToken ApplyControlTokenA
356 #define ENUMERATE_SECURITY_PACKAGES_FN ENUMERATE_SECURITY_PACKAGES_FN_A
357 #define QUERY_CREDENTIALS_ATTRIBUTES_FN QUERY_CREDENTIALS_ATTRIBUTES_FN_A
358 #define ACQUIRE_CREDENTIALS_HANDLE_FN ACQUIRE_CREDENTIALS_HANDLE_FN_A
359 #define INITIALIZE_SECURITY_CONTEXT_FN INITIALIZE_SECURITY_CONTEXT_FN_A
360 #define APPLY_CONTROL_TOKEN_FN APPLY_CONTROL_TOKEN_FN_A
361 #define QUERY_CONTEXT_ATTRIBUTES_FN QUERY_CONTEXT_ATTRIBUTES_FN_A
362 #define QUERY_SECURITY_PACKAGE_INFO_FN QUERY_SECURITY_PACKAGE_INFO_FN_A
363 #define INIT_SECURITY_INTERFACE INIT_SECURITY_INTERFACE_A