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