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