From: Steve Holme Date: Thu, 24 Mar 2016 19:03:58 +0000 (+0000) Subject: vauth: Added check for supported SSPI based authentication mechanisms X-Git-Tag: curl-7_50_2~48 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=43dbd766164153d49ab266355d2f35e6bf010b30;p=thirdparty%2Fcurl.git vauth: Added check for supported SSPI based authentication mechanisms Completing commit 00417fd66c and 2708d4259b. --- diff --git a/lib/vauth/digest_sspi.c b/lib/vauth/digest_sspi.c index 9254385e59..1cc704d588 100644 --- a/lib/vauth/digest_sspi.c +++ b/lib/vauth/digest_sspi.c @@ -54,9 +54,14 @@ */ bool Curl_auth_is_digest_supported(void) { - /* TODO: Return true for now which maintains compatability with the existing - code */ - return TRUE; + PSecPkgInfo SecurityPackage; + SECURITY_STATUS status; + + /* Query the security package for Digest */ + status = s_pSecFn->QuerySecurityPackageInfo((TCHAR *) TEXT(SP_NAME_DIGEST), + &SecurityPackage); + + return (status == SEC_E_OK ? TRUE : FALSE); } /* diff --git a/lib/vauth/krb5_sspi.c b/lib/vauth/krb5_sspi.c index e046900461..151794e619 100644 --- a/lib/vauth/krb5_sspi.c +++ b/lib/vauth/krb5_sspi.c @@ -50,9 +50,15 @@ */ bool Curl_auth_is_gssapi_supported(void) { - /* TODO: Return true for now which maintains compatability with the existing - code */ - return TRUE; + PSecPkgInfo SecurityPackage; + SECURITY_STATUS status; + + /* Query the security package for Kerberos */ + status = s_pSecFn->QuerySecurityPackageInfo((TCHAR *) + TEXT(SP_NAME_KERBEROS), + &SecurityPackage); + + return (status == SEC_E_OK ? TRUE : FALSE); } /* diff --git a/lib/vauth/ntlm_sspi.c b/lib/vauth/ntlm_sspi.c index 6f446780e0..c3305176d8 100644 --- a/lib/vauth/ntlm_sspi.c +++ b/lib/vauth/ntlm_sspi.c @@ -48,9 +48,14 @@ */ bool Curl_auth_is_ntlm_supported(void) { - /* TODO: Return true for now which maintains compatability with the existing - code */ - return TRUE; + PSecPkgInfo SecurityPackage; + SECURITY_STATUS status; + + /* Query the security package for NTLM */ + status = s_pSecFn->QuerySecurityPackageInfo((TCHAR *) TEXT(SP_NAME_NTLM), + &SecurityPackage); + + return (status == SEC_E_OK ? TRUE : FALSE); } /* diff --git a/lib/vauth/spnego_sspi.c b/lib/vauth/spnego_sspi.c index f83c44632e..672b43fa42 100644 --- a/lib/vauth/spnego_sspi.c +++ b/lib/vauth/spnego_sspi.c @@ -50,9 +50,15 @@ */ bool Curl_auth_is_spnego_supported(void) { - /* TODO: Return true for now which maintains compatability with the existing - code */ - return TRUE; + PSecPkgInfo SecurityPackage; + SECURITY_STATUS status; + + /* Query the security package for Negotiate */ + status = s_pSecFn->QuerySecurityPackageInfo((TCHAR *) + TEXT(SP_NAME_NEGOTIATE), + &SecurityPackage); + + return (status == SEC_E_OK ? TRUE : FALSE); } /*