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 core/sys/windows/_sspi.d)
9 */
10module core.sys.windows.sspi;
11version (Windows):
12@system:
13
14version (ANSI) {} else version = Unicode;
15
16import core.sys.windows.windef;
17import core.sys.windows.ntdef;
18import core.sys.windows.w32api;
19import core.sys.windows.security;
20import core.sys.windows.ntsecapi;
21import core.sys.windows.subauth;
22
23enum :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
30enum :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
44enum :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
61enum :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
76enum UNISP_NAME_A = "Microsoft Unified Security Protocol Provider";
77enum UNISP_NAME_W = "Microsoft Unified Security Protocol Provider"w;
78enum SECBUFFER_VERSION = 0;
79
80alias UNICODE_STRING SECURITY_STRING;
81alias UNICODE_STRING* PSECURITY_STRING;
82
83extern(Windows):
84
85struct SecHandle {
86    ULONG_PTR dwLower;
87    ULONG_PTR dwUpper;
88}
89alias SecHandle* PSecHandle;
90struct SecBuffer {
91    ULONG cbBuffer;
92    ULONG BufferType;
93    PVOID pvBuffer;
94}
95alias SecBuffer* PSecBuffer;
96alias SecHandle CredHandle;
97alias PSecHandle PCredHandle;
98alias SecHandle CtxtHandle;
99alias PSecHandle PCtxtHandle;
100struct SECURITY_INTEGER {
101    uint LowPart;
102    int HighPart;
103}
104alias SECURITY_INTEGER TimeStamp;
105alias SECURITY_INTEGER* PTimeStamp;
106struct SecBufferDesc {
107    ULONG ulVersion;
108    ULONG cBuffers;
109    PSecBuffer pBuffers;
110}
111alias SecBufferDesc* PSecBufferDesc;
112struct SecPkgContext_StreamSizes {
113    ULONG cbHeader;
114    ULONG cbTrailer;
115    ULONG cbMaximumMessage;
116    ULONG cBuffers;
117    ULONG cbBlockSize;
118}
119alias SecPkgContext_StreamSizes* PSecPkgContext_StreamSizes;
120struct SecPkgContext_Sizes {
121    ULONG cbMaxToken;
122    ULONG cbMaxSignature;
123    ULONG cbBlockSize;
124    ULONG cbSecurityTrailer;
125}
126alias SecPkgContext_Sizes* PSecPkgContext_Sizes;
127struct SecPkgContext_AuthorityW {
128    SEC_WCHAR* sAuthorityName;
129}
130alias SecPkgContext_AuthorityW* PSecPkgContext_AuthorityW;
131struct SecPkgContext_AuthorityA {
132    SEC_CHAR* sAuthorityName;
133}
134alias SecPkgContext_AuthorityA* PSecPkgContext_AuthorityA;
135struct SecPkgContext_KeyInfoW {
136    SEC_WCHAR* sSignatureAlgorithmName;
137    SEC_WCHAR* sEncryptAlgorithmName;
138    ULONG KeySize;
139    ULONG SignatureAlgorithm;
140    ULONG EncryptAlgorithm;
141}
142alias SecPkgContext_KeyInfoW* PSecPkgContext_KeyInfoW;
143struct SecPkgContext_KeyInfoA {
144    SEC_CHAR* sSignatureAlgorithmName;
145    SEC_CHAR* sEncryptAlgorithmName;
146    ULONG KeySize;
147    ULONG SignatureAlgorithm;
148    ULONG EncryptAlgorithm;
149}
150alias SecPkgContext_KeyInfoA* PSecPkgContext_KeyInfoA;
151struct SecPkgContext_LifeSpan {
152    TimeStamp tsStart;
153    TimeStamp tsExpiry;
154}
155alias SecPkgContext_LifeSpan* PSecPkgContext_LifeSpan;
156struct SecPkgContext_NamesW {
157    SEC_WCHAR* sUserName;
158}
159alias SecPkgContext_NamesW* PSecPkgContext_NamesW;
160struct SecPkgContext_NamesA {
161    SEC_CHAR* sUserName;
162}
163alias SecPkgContext_NamesA* PSecPkgContext_NamesA;
164struct SecPkgInfoW {
165    ULONG fCapabilities;
166    USHORT wVersion;
167    USHORT wRPCID;
168    ULONG cbMaxToken;
169    SEC_WCHAR* Name;
170    SEC_WCHAR* Comment;
171}
172alias SecPkgInfoW* PSecPkgInfoW;
173struct SecPkgInfoA {
174    ULONG fCapabilities;
175    USHORT wVersion;
176    USHORT wRPCID;
177    ULONG cbMaxToken;
178    SEC_CHAR* Name;
179    SEC_CHAR* Comment;
180}
181alias SecPkgInfoA* PSecPkgInfoA;
182/* supported only in win2k+, so it should be a PSecPkgInfoW */
183/* PSDK does not say it has ANSI/Unicode versions */
184struct SecPkgContext_PackageInfo {
185    PSecPkgInfoW PackageInfo;
186}
187alias SecPkgContext_PackageInfo* PSecPkgContext_PackageInfo;
188struct SecPkgCredentials_NamesW {
189    SEC_WCHAR* sUserName;
190}
191alias SecPkgCredentials_NamesW* PSecPkgCredentials_NamesW;
192struct SecPkgCredentials_NamesA {
193    SEC_CHAR* sUserName;
194}
195alias SecPkgCredentials_NamesA* PSecPkgCredentials_NamesA;
196
197/* TODO: missing type in SDK */
198alias void function() SEC_GET_KEY_FN;
199
200alias SECURITY_STATUS function(PULONG,PSecPkgInfoW*) ENUMERATE_SECURITY_PACKAGES_FN_W;
201alias SECURITY_STATUS function(PULONG,PSecPkgInfoA*) ENUMERATE_SECURITY_PACKAGES_FN_A;
202alias SECURITY_STATUS function(PCredHandle,ULONG,PVOID) QUERY_CREDENTIALS_ATTRIBUTES_FN_W;
203alias SECURITY_STATUS function(PCredHandle,ULONG,PVOID) QUERY_CREDENTIALS_ATTRIBUTES_FN_A;
204alias SECURITY_STATUS function(SEC_WCHAR*,SEC_WCHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp) ACQUIRE_CREDENTIALS_HANDLE_FN_W;
205alias SECURITY_STATUS function(SEC_CHAR*,SEC_CHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp) ACQUIRE_CREDENTIALS_HANDLE_FN_A;
206alias SECURITY_STATUS function(PCredHandle) FREE_CREDENTIALS_HANDLE_FN;
207alias SECURITY_STATUS function(PCredHandle,PCtxtHandle,SEC_WCHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp) INITIALIZE_SECURITY_CONTEXT_FN_W;
208alias SECURITY_STATUS function(PCredHandle,PCtxtHandle,SEC_CHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp) INITIALIZE_SECURITY_CONTEXT_FN_A;
209alias SECURITY_STATUS function(PCredHandle,PCtxtHandle,PSecBufferDesc,ULONG,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp) ACCEPT_SECURITY_CONTEXT_FN;
210alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc) COMPLETE_AUTH_TOKEN_FN;
211alias SECURITY_STATUS function(PCtxtHandle) DELETE_SECURITY_CONTEXT_FN;
212alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc) APPLY_CONTROL_TOKEN_FN_W;
213alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc) APPLY_CONTROL_TOKEN_FN_A;
214alias SECURITY_STATUS function(PCtxtHandle,ULONG,PVOID) QUERY_CONTEXT_ATTRIBUTES_FN_A;
215alias SECURITY_STATUS function(PCtxtHandle,ULONG,PVOID) QUERY_CONTEXT_ATTRIBUTES_FN_W;
216alias SECURITY_STATUS function(PCtxtHandle) IMPERSONATE_SECURITY_CONTEXT_FN;
217alias SECURITY_STATUS function(PCtxtHandle) REVERT_SECURITY_CONTEXT_FN;
218alias SECURITY_STATUS function(PCtxtHandle,ULONG,PSecBufferDesc,ULONG) MAKE_SIGNATURE_FN;
219alias SECURITY_STATUS function(PCtxtHandle,PSecBufferDesc,ULONG,PULONG) VERIFY_SIGNATURE_FN;
220alias SECURITY_STATUS function(PVOID) FREE_CONTEXT_BUFFER_FN;
221alias SECURITY_STATUS function(SEC_CHAR*,PSecPkgInfoA*) QUERY_SECURITY_PACKAGE_INFO_FN_A;
222alias SECURITY_STATUS function(PCtxtHandle,HANDLE*) QUERY_SECURITY_CONTEXT_TOKEN_FN;
223alias SECURITY_STATUS function(SEC_WCHAR*,PSecPkgInfoW*) QUERY_SECURITY_PACKAGE_INFO_FN_W;
224alias SECURITY_STATUS function(PCtxtHandle,ULONG,PSecBufferDesc,ULONG) ENCRYPT_MESSAGE_FN;
225alias 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. */
230struct 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}
259alias SecurityFunctionTableW* PSecurityFunctionTableW;
260struct 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}
289alias SecurityFunctionTableA* PSecurityFunctionTableA;
290alias PSecurityFunctionTableA function() INIT_SECURITY_INTERFACE_A;
291alias PSecurityFunctionTableW function() INIT_SECURITY_INTERFACE_W;
292
293SECURITY_STATUS FreeCredentialsHandle(PCredHandle);
294SECURITY_STATUS EnumerateSecurityPackagesA(PULONG,PSecPkgInfoA*);
295SECURITY_STATUS EnumerateSecurityPackagesW(PULONG,PSecPkgInfoW*);
296SECURITY_STATUS AcquireCredentialsHandleA(SEC_CHAR*,SEC_CHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp);
297SECURITY_STATUS AcquireCredentialsHandleW(SEC_WCHAR*,SEC_WCHAR*,ULONG,PLUID,PVOID,SEC_GET_KEY_FN,PVOID,PCredHandle,PTimeStamp);
298SECURITY_STATUS AcceptSecurityContext(PCredHandle,PCtxtHandle,PSecBufferDesc,ULONG,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp);
299SECURITY_STATUS InitializeSecurityContextA(PCredHandle,PCtxtHandle,SEC_CHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp);
300SECURITY_STATUS InitializeSecurityContextW(PCredHandle,PCtxtHandle,SEC_WCHAR*,ULONG,ULONG,ULONG,PSecBufferDesc,ULONG,PCtxtHandle,PSecBufferDesc,PULONG,PTimeStamp);
301SECURITY_STATUS FreeContextBuffer(PVOID);
302SECURITY_STATUS QueryContextAttributesA(PCtxtHandle,ULONG,PVOID);
303SECURITY_STATUS QueryContextAttributesW(PCtxtHandle,ULONG,PVOID);
304SECURITY_STATUS QueryCredentialsAttributesA(PCredHandle,ULONG,PVOID);
305SECURITY_STATUS QueryCredentialsAttributesW(PCredHandle,ULONG,PVOID);
306static if (_WIN32_WINNT >= 0x500){
307    SECURITY_STATUS QuerySecurityContextToken(PCtxtHandle,HANDLE*);
308}
309SECURITY_STATUS DecryptMessage(PCtxtHandle,PSecBufferDesc,ULONG,PULONG);
310SECURITY_STATUS EncryptMessage(PCtxtHandle,ULONG,PSecBufferDesc,ULONG);
311SECURITY_STATUS DeleteSecurityContext(PCtxtHandle);
312SECURITY_STATUS CompleteAuthToken(PCtxtHandle,PSecBufferDesc);
313SECURITY_STATUS ApplyControlTokenA(PCtxtHandle,PSecBufferDesc);
314SECURITY_STATUS ApplyControlTokenW(PCtxtHandle,PSecBufferDesc);
315SECURITY_STATUS ImpersonateSecurityContext(PCtxtHandle);
316SECURITY_STATUS RevertSecurityContext(PCtxtHandle);
317SECURITY_STATUS MakeSignature(PCtxtHandle,ULONG,PSecBufferDesc,ULONG);
318SECURITY_STATUS VerifySignature(PCtxtHandle,PSecBufferDesc,ULONG,PULONG);
319SECURITY_STATUS QuerySecurityPackageInfoA(SEC_CHAR*,PSecPkgInfoA*);
320SECURITY_STATUS QuerySecurityPackageInfoW(SEC_WCHAR*,PSecPkgInfoW*);
321PSecurityFunctionTableA InitSecurityInterfaceA();
322PSecurityFunctionTableW InitSecurityInterfaceW();
323
324version (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