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