Henri Verbeet : secur32: Skip schannel tests if schannel is unavailable.
Alexandre Julliard
julliard at winehq.org
Tue Sep 23 09:28:32 CDT 2008
Module: wine
Branch: master
Commit: 4ac3fe7f897819e1fe3baa4629bdac5fcb8667e4
URL: http://source.winehq.org/git/wine.git/?a=commit;h=4ac3fe7f897819e1fe3baa4629bdac5fcb8667e4
Author: Henri Verbeet <hverbeet at gmail.com>
Date: Mon Sep 22 22:13:18 2008 +0200
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;
More information about the wine-cvs
mailing list