From a0d752e04222fde6ecf04c80c52e6ffc88c9c04d Mon Sep 17 00:00:00 2001 From: Henri Verbeet Date: Mon, 22 Sep 2008 22:13:18 +0200 Subject: secur32: Skip schannel tests if schannel is unavailable --- dlls/secur32/tests/schannel.c | 26 ++++++++++++++++++++++++++ 1 files changed, 26 insertions(+), 0 deletions(-) diff --git a/dlls/secur32/tests/schannel.c b/dlls/secur32/tests/schannel.c index 9f7c2a8..a6032be 100644 --- a/dlls/secur32/tests/schannel.c +++ b/dlls/secur32/tests/schannel.c @@ -30,6 +30,8 @@ static HMODULE secdll, crypt32dll; static ACQUIRE_CREDENTIALS_HANDLE_FN_A pAcquireCredentialsHandleA; +static ENUMERATE_SECURITY_PACKAGES_FN_A pEnumerateSecurityPackagesA; +static FREE_CONTEXT_BUFFER_FN pFreeContextBuffer; static FREE_CREDENTIALS_HANDLE_FN pFreeCredentialsHandle; static QUERY_CREDENTIALS_ATTRIBUTES_FN_A pQueryCredentialsAttributesA; @@ -120,6 +122,8 @@ static void InitFunctionPtrs(void) if(secdll) { GET_PROC(secdll, AcquireCredentialsHandleA); + GET_PROC(secdll, EnumerateSecurityPackagesA); + GET_PROC(secdll, FreeContextBuffer); GET_PROC(secdll, FreeCredentialsHandle); GET_PROC(secdll, QueryCredentialsAttributesA); } @@ -150,6 +154,9 @@ static void test_strength(PCredHandle handle) static void testAcquireSecurityContext(void) { + BOOL has_schannel = FALSE; + SecPkgInfoA *package_info; + ULONG i; SECURITY_STATUS st; CredHandle cred; TimeStamp exp; @@ -163,12 +170,31 @@ static void testAcquireSecurityContext(void) CRYPT_KEY_PROV_INFO keyProvInfo; if (!pAcquireCredentialsHandleA || !pCertCreateCertificateContext || + !pEnumerateSecurityPackagesA || !pFreeContextBuffer || !pFreeCredentialsHandle || !pCryptAcquireContextW) { skip("Needed functions are not available\n"); return; } + if (SUCCEEDED(pEnumerateSecurityPackagesA(&i, &package_info))) + { + while(i--) + { + if (!strcmp(package_info[i].Name, unisp_name_a)) + { + has_schannel = TRUE; + break; + } + } + pFreeContextBuffer(package_info); + } + if (!has_schannel) + { + skip("Schannel not available\n"); + return; + } + lstrcpyW(ms_def_prov_w, MS_DEF_PROV_W); keyProvInfo.pwszContainerName = cspNameW; -- 1.5.6.4