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