ntlm: Added separate SSPI based functions
authorSteve Holme <steve_holme@hotmail.com>
Sun, 9 Nov 2014 15:12:56 +0000 (15:12 +0000)
committerSteve Holme <steve_holme@hotmail.com>
Sun, 9 Nov 2014 15:12:35 +0000 (15:12 +0000)
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.

lib/curl_sasl.c
lib/curl_sasl_sspi.c

index 75af97f5812178d734b68beaad4676b5af7b9ba2..44efd91491f94a0de799aa3670ee71c5d0ec1292 100644 (file)
@@ -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()
index de247cc2cf1c8c98d33be0c26b19e1333e2c83ab..78d669b948b2376e1ad2ef58c921ee3128a7b29e 100644 (file)
@@ -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 */
@@ -486,6 +487,82 @@ void Curl_sasl_digest_cleanup(struct digestdata *digest)
 #endif /* !CURL_DISABLE_CRYPTO_AUTH */
 
 #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()
  *