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 */ 10 module nulib.system.win32.sspi; 11 12 13 version (ANSI) {} else version = Unicode; 14 15 import nulib.system.win32.windef; 16 import nulib.system.win32.ntdef; 17 import nulib.system.win32.w32api; 18 import nulib.system.win32.security; 19 import nulib.system.win32.ntsecapi; 20 import nulib.system.win32.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 SECURITY_STRING = UNICODE_STRING; 80 alias PSECURITY_STRING = UNICODE_STRING*; 81 82 extern(Windows): 83 84 struct SecHandle { 85 ULONG_PTR dwLower; 86 ULONG_PTR dwUpper; 87 } 88 alias PSecHandle = SecHandle*; 89 struct SecBuffer { 90 ULONG cbBuffer; 91 ULONG BufferType; 92 PVOID pvBuffer; 93 } 94 alias PSecBuffer = SecBuffer*; 95 alias CredHandle = SecHandle; 96 alias PCredHandle = PSecHandle; 97 alias CtxtHandle = SecHandle; 98 alias PCtxtHandle = PSecHandle; 99 struct SECURITY_INTEGER { 100 uint LowPart; 101 int HighPart; 102 } 103 alias TimeStamp = SECURITY_INTEGER; 104 alias PTimeStamp = SECURITY_INTEGER*; 105 struct SecBufferDesc { 106 ULONG ulVersion; 107 ULONG cBuffers; 108 PSecBuffer pBuffers; 109 } 110 alias PSecBufferDesc = SecBufferDesc*; 111 struct SecPkgContext_StreamSizes { 112 ULONG cbHeader; 113 ULONG cbTrailer; 114 ULONG cbMaximumMessage; 115 ULONG cBuffers; 116 ULONG cbBlockSize; 117 } 118 alias PSecPkgContext_StreamSizes = SecPkgContext_StreamSizes*; 119 struct SecPkgContext_Sizes { 120 ULONG cbMaxToken; 121 ULONG cbMaxSignature; 122 ULONG cbBlockSize; 123 ULONG cbSecurityTrailer; 124 } 125 alias PSecPkgContext_Sizes = SecPkgContext_Sizes*; 126 struct SecPkgContext_AuthorityW { 127 SEC_WCHAR* sAuthorityName; 128 } 129 alias PSecPkgContext_AuthorityW = SecPkgContext_AuthorityW*; 130 struct SecPkgContext_AuthorityA { 131 SEC_CHAR* sAuthorityName; 132 } 133 alias PSecPkgContext_AuthorityA = SecPkgContext_AuthorityA*; 134 struct SecPkgContext_KeyInfoW { 135 SEC_WCHAR* sSignatureAlgorithmName; 136 SEC_WCHAR* sEncryptAlgorithmName; 137 ULONG KeySize; 138 ULONG SignatureAlgorithm; 139 ULONG EncryptAlgorithm; 140 } 141 alias PSecPkgContext_KeyInfoW = SecPkgContext_KeyInfoW*; 142 struct SecPkgContext_KeyInfoA { 143 SEC_CHAR* sSignatureAlgorithmName; 144 SEC_CHAR* sEncryptAlgorithmName; 145 ULONG KeySize; 146 ULONG SignatureAlgorithm; 147 ULONG EncryptAlgorithm; 148 } 149 alias PSecPkgContext_KeyInfoA = SecPkgContext_KeyInfoA*; 150 struct SecPkgContext_LifeSpan { 151 TimeStamp tsStart; 152 TimeStamp tsExpiry; 153 } 154 alias PSecPkgContext_LifeSpan = SecPkgContext_LifeSpan*; 155 struct SecPkgContext_NamesW { 156 SEC_WCHAR* sUserName; 157 } 158 alias PSecPkgContext_NamesW = SecPkgContext_NamesW*; 159 struct SecPkgContext_NamesA { 160 SEC_CHAR* sUserName; 161 } 162 alias PSecPkgContext_NamesA = SecPkgContext_NamesA*; 163 struct SecPkgInfoW { 164 ULONG fCapabilities; 165 USHORT wVersion; 166 USHORT wRPCID; 167 ULONG cbMaxToken; 168 SEC_WCHAR* Name; 169 SEC_WCHAR* Comment; 170 } 171 alias PSecPkgInfoW = SecPkgInfoW*; 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 PSecPkgInfoA = SecPkgInfoA*; 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 PSecPkgContext_PackageInfo = SecPkgContext_PackageInfo*; 187 struct SecPkgCredentials_NamesW { 188 SEC_WCHAR* sUserName; 189 } 190 alias PSecPkgCredentials_NamesW = SecPkgCredentials_NamesW*; 191 struct SecPkgCredentials_NamesA { 192 SEC_CHAR* sUserName; 193 } 194 alias PSecPkgCredentials_NamesA = SecPkgCredentials_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 PSecurityFunctionTableW = SecurityFunctionTableW*; 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 PSecurityFunctionTableA = SecurityFunctionTableA*; 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 = UNISP_NAME_W; 325 alias SecPkgInfo = SecPkgInfoW; 326 alias PSecPkgInfo = PSecPkgInfoW; 327 alias SecPkgCredentials_Names = SecPkgCredentials_NamesW; 328 alias PSecPkgCredentials_Names = PSecPkgCredentials_NamesW; 329 alias SecPkgContext_Authority = SecPkgContext_AuthorityW; 330 alias PSecPkgContext_Authority = PSecPkgContext_AuthorityW; 331 alias SecPkgContext_KeyInfo = SecPkgContext_KeyInfoW; 332 alias PSecPkgContext_KeyInfo = PSecPkgContext_KeyInfoW; 333 alias SecPkgContext_Names = SecPkgContext_NamesW; 334 alias PSecPkgContext_Names = PSecPkgContext_NamesW; 335 alias SecurityFunctionTable = SecurityFunctionTableW; 336 alias PSecurityFunctionTable = PSecurityFunctionTableW; 337 alias AcquireCredentialsHandle = AcquireCredentialsHandleW; 338 alias EnumerateSecurityPackages = EnumerateSecurityPackagesW; 339 alias InitializeSecurityContext = InitializeSecurityContextW; 340 alias QueryContextAttributes = QueryContextAttributesW; 341 alias QueryCredentialsAttributes = QueryCredentialsAttributesW; 342 alias QuerySecurityPackageInfo = QuerySecurityPackageInfoW; 343 alias ApplyControlToken = ApplyControlTokenW; 344 alias ENUMERATE_SECURITY_PACKAGES_FN = ENUMERATE_SECURITY_PACKAGES_FN_W; 345 alias QUERY_CREDENTIALS_ATTRIBUTES_FN = QUERY_CREDENTIALS_ATTRIBUTES_FN_W; 346 alias ACQUIRE_CREDENTIALS_HANDLE_FN = ACQUIRE_CREDENTIALS_HANDLE_FN_W; 347 alias INITIALIZE_SECURITY_CONTEXT_FN = INITIALIZE_SECURITY_CONTEXT_FN_W; 348 alias APPLY_CONTROL_TOKEN_FN = APPLY_CONTROL_TOKEN_FN_W; 349 alias QUERY_CONTEXT_ATTRIBUTES_FN = QUERY_CONTEXT_ATTRIBUTES_FN_W; 350 alias QUERY_SECURITY_PACKAGE_INFO_FN = QUERY_SECURITY_PACKAGE_INFO_FN_W; 351 alias INIT_SECURITY_INTERFACE = INIT_SECURITY_INTERFACE_W; 352 }else{ 353 alias UNISP_NAME = UNISP_NAME_A; 354 alias SecPkgInfo = SecPkgInfoA; 355 alias PSecPkgInfo = PSecPkgInfoA; 356 alias SecPkgCredentials_Names = SecPkgCredentials_NamesA; 357 alias PSecPkgCredentials_Names = PSecPkgCredentials_NamesA; 358 alias SecPkgContext_Authority = SecPkgContext_AuthorityA; 359 alias PSecPkgContext_Authority = PSecPkgContext_AuthorityA; 360 alias SecPkgContext_KeyInfo = SecPkgContext_KeyInfoA; 361 alias PSecPkgContext_KeyInfo = PSecPkgContext_KeyInfoA; 362 alias SecPkgContext_Names = SecPkgContext_NamesA; 363 alias PSecPkgContext_Names = PSecPkgContext_NamesA; 364 alias SecurityFunctionTable = SecurityFunctionTableA; 365 alias PSecurityFunctionTable = PSecurityFunctionTableA; 366 alias AcquireCredentialsHandle = AcquireCredentialsHandleA; 367 alias EnumerateSecurityPackages = EnumerateSecurityPackagesA; 368 alias InitializeSecurityContext = InitializeSecurityContextA; 369 alias QueryContextAttributes = QueryContextAttributesA; 370 alias QueryCredentialsAttributes = QueryCredentialsAttributesA; 371 alias QuerySecurityPackageInfo = QuerySecurityPackageInfoA; 372 alias ApplyControlToken = ApplyControlTokenA; 373 alias ENUMERATE_SECURITY_PACKAGES_FN = ENUMERATE_SECURITY_PACKAGES_FN_A; 374 alias QUERY_CREDENTIALS_ATTRIBUTES_FN = QUERY_CREDENTIALS_ATTRIBUTES_FN_A; 375 alias ACQUIRE_CREDENTIALS_HANDLE_FN = ACQUIRE_CREDENTIALS_HANDLE_FN_A; 376 alias INITIALIZE_SECURITY_CONTEXT_FN = INITIALIZE_SECURITY_CONTEXT_FN_A; 377 alias APPLY_CONTROL_TOKEN_FN = APPLY_CONTROL_TOKEN_FN_A; 378 alias QUERY_CONTEXT_ATTRIBUTES_FN = QUERY_CONTEXT_ATTRIBUTES_FN_A; 379 alias QUERY_SECURITY_PACKAGE_INFO_FN = QUERY_SECURITY_PACKAGE_INFO_FN_A; 380 alias INIT_SECURITY_INTERFACE = INIT_SECURITY_INTERFACE_A; 381 }