From 43dbd766164153d49ab266355d2f35e6bf010b30 Mon Sep 17 00:00:00 2001 From: Steve Holme Date: Thu, 24 Mar 2016 19:03:58 +0000 Subject: vauth: Added check for supported SSPI based authentication mechanisms Completing commit 00417fd66c and 2708d4259b. --- lib/vauth/digest_sspi.c | 11 ++++++++--- lib/vauth/krb5_sspi.c | 12 +++++++++--- lib/vauth/ntlm_sspi.c | 11 ++++++++--- lib/vauth/spnego_sspi.c | 12 +++++++++--- 4 files changed, 34 insertions(+), 12 deletions(-) (limited to 'lib') diff --git a/lib/vauth/digest_sspi.c b/lib/vauth/digest_sspi.c index 9254385e5..1cc704d58 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 e04690046..151794e61 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 6f446780e..c3305176d 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 f83c44632..672b43fa4 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); } /* -- cgit v1.2.3