diff options
author | Steve Holme <steve_holme@hotmail.com> | 2014-11-09 15:12:56 +0000 |
---|---|---|
committer | Steve Holme <steve_holme@hotmail.com> | 2014-11-09 15:12:35 +0000 |
commit | 2fbf23875f992aba93d85a7b77802eeecb8503cb (patch) | |
tree | f999b20f6f3f05d63ba3a7424e0d593c2041a176 | |
parent | 48d19acb7cebb13f9222789ff90fd1dccef3c3c7 (diff) |
ntlm: Added separate SSPI based functions
In preparation for moving the NTLM message code into the SASL module,
and separating the native code from the SSPI code, added functions that
simply call the functions in curl_ntlm_msg.c.
-rw-r--r-- | lib/curl_sasl.c | 7 | ||||
-rw-r--r-- | lib/curl_sasl_sspi.c | 77 |
2 files changed, 79 insertions, 5 deletions
diff --git a/lib/curl_sasl.c b/lib/curl_sasl.c index 75af97f58..44efd9149 100644 --- a/lib/curl_sasl.c +++ b/lib/curl_sasl.c @@ -1097,7 +1097,7 @@ void Curl_sasl_digest_cleanup(struct digestdata *digest) #endif /* CURL_DISABLE_CRYPTO_AUTH */ -#ifdef USE_NTLM +#if defined(USE_NTLM) && !defined(USE_WINDOWS_SSPI) /* * Curl_sasl_create_ntlm_type1_message() * @@ -1183,7 +1183,6 @@ CURLcode Curl_sasl_create_ntlm_type3_message(struct SessionHandle *data, outlen); } -#if !defined(USE_WINDOWS_SSPI) /* * Curl_sasl_ntlm_cleanup() * @@ -1202,9 +1201,7 @@ void Curl_sasl_ntlm_cleanup(struct ntlmdata *ntlm) /* Reset any variables */ ntlm->target_info_len = 0; } -#endif /* !USE_WINDOWS_SSPI */ - -#endif /* USE_NTLM */ +#endif /* USE_NTLM && !USE_WINDOWS_SSPI*/ /* * Curl_sasl_create_xoauth2_message() diff --git a/lib/curl_sasl_sspi.c b/lib/curl_sasl_sspi.c index de247cc2c..78d669b94 100644 --- a/lib/curl_sasl_sspi.c +++ b/lib/curl_sasl_sspi.c @@ -37,6 +37,7 @@ #include "warnless.h" #include "curl_memory.h" #include "curl_multibyte.h" +#include "curl_ntlm_msgs.h" #include "strdup.h" #define _MPRINTF_REPLACE /* use our functions only */ @@ -487,6 +488,82 @@ void Curl_sasl_digest_cleanup(struct digestdata *digest) #if defined USE_NTLM /* +* Curl_sasl_create_ntlm_type1_message() +* +* This is used to generate an already encoded NTLM type-1 message ready for +* sending to the recipient. +* +* Note: This is a simple wrapper of the NTLM function which means that any +* SASL based protocols don't have to include the NTLM functions directly. +* +* Parameters: +* +* userp [in] - The user name in the format User or Domain\User. +* passdwp [in] - The user's password. +* ntlm [in/out] - The ntlm data struct being used and modified. +* outptr [in/out] - The address where a pointer to newly allocated memory +* holding the result will be stored upon completion. +* outlen [out] - The length of the output message. +* +* Returns CURLE_OK on success. +*/ +CURLcode Curl_sasl_create_ntlm_type1_message(const char *userp, + const char *passwdp, + struct ntlmdata *ntlm, + char **outptr, size_t *outlen) +{ + return Curl_ntlm_create_type1_message(userp, passwdp, ntlm, outptr, outlen); +} + +/* +* Curl_sasl_decode_ntlm_type2_message() +* +* This is used to decode an already encoded NTLM type-2 message. +* +* Parameters: +* +* data [in] - Pointer to session handle. +* type2msg [in] - Pointer to the base64 encoded type-2 message. +* ntlm [in/out] - The ntlm data struct being used and modified. +* +* Returns CURLE_OK on success. +*/ +CURLcode Curl_sasl_decode_ntlm_type2_message(struct SessionHandle *data, + const char *type2msg, + struct ntlmdata *ntlm) +{ + return Curl_ntlm_decode_type2_message(data, type2msg, ntlm); +} + +/* +* Curl_sasl_create_ntlm_type3_message() +* +* This is used to generate an already encoded NTLM type-3 message ready for +* sending to the recipient. +* +* Parameters: +* +* data [in] - Pointer to session handle. +* userp [in] - The user name in the format User or Domain\User. +* passdwp [in] - The user's password. +* ntlm [in/out] - The ntlm data struct being used and modified. +* outptr [in/out] - The address where a pointer to newly allocated memory +* holding the result will be stored upon completion. +* outlen [out] - The length of the output message. +* +* Returns CURLE_OK on success. +*/ +CURLcode Curl_sasl_create_ntlm_type3_message(struct SessionHandle *data, + const char *userp, + const char *passwdp, + struct ntlmdata *ntlm, + char **outptr, size_t *outlen) +{ + return Curl_ntlm_create_type3_message(data, userp, passwdp, ntlm, outptr, + outlen); +} + +/* * Curl_sasl_ntlm_cleanup() * * This is used to clean up the ntlm specific data. |