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 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; 132 } 133 alias SecPkgContext_AuthorityA* PSecPkgContext_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 SecPkgContext_KeyInfoW* PSecPkgContext_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 SecPkgContext_KeyInfoA* PSecPkgContext_KeyInfoA; 150 struct SecPkgContext_LifeSpan { 151 TimeStamp tsStart; 152 TimeStamp tsExpiry; 153 } 154 alias SecPkgContext_LifeSpan* PSecPkgContext_LifeSpan; 155 struct SecPkgContext_NamesW { 156 SEC_WCHAR* sUserName; 157 } 158 alias SecPkgContext_NamesW* PSecPkgContext_NamesW; 159 struct SecPkgContext_NamesA { 160 SEC_CHAR* sUserName; 161 } 162 alias SecPkgContext_NamesA* PSecPkgContext_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 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 }