diff options
-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. |