return CURLE_OK;
}
-#endif
-
/*
NTLM message structure notes:
const char *header,
struct ntlmdata *ntlm)
{
-#ifndef USE_WINDOWS_SSPI
static const char type2_marker[] = { 0x02, 0x00, 0x00, 0x00 };
-#endif
/* NTLM type-2 message structure:
unsigned char *type2 = NULL;
size_t type2_len = 0;
-#if defined(CURL_DISABLE_VERBOSE_STRINGS) || defined(USE_WINDOWS_SSPI)
+#if defined(CURL_DISABLE_VERBOSE_STRINGS)
(void)data;
#endif
return CURLE_BAD_CONTENT_ENCODING;
}
-#ifdef USE_WINDOWS_SSPI
- ntlm->input_token = type2;
- ntlm->input_token_len = type2_len;
-#else
ntlm->flags = 0;
if((type2_len < 32) ||
});
free(type2);
-#endif
return result;
}
-#ifndef USE_WINDOWS_SSPI
/* copy the source to the destination and fill in zeroes in every
other destination byte! */
static void unicodecpy(unsigned char *dest, const char *src, size_t length)
dest[2 * i + 1] = '\0';
}
}
-#endif
/*
* Curl_ntlm_create_type1_message()
/* Return with binary blob encoded into base64 */
return Curl_base64_encode(NULL, (char *)ntlmbuf, size, outptr, outlen);
}
+#endif
/*
* Curl_ntlm_create_type3_message()
#include "curl_memory.h"
#include "curl_multibyte.h"
#include "curl_ntlm_msgs.h"
+#include "sendf.h"
#include "strdup.h"
#define _MPRINTF_REPLACE /* use our functions only */
const char *type2msg,
struct ntlmdata *ntlm)
{
- return Curl_ntlm_decode_type2_message(data, type2msg, ntlm);
+ CURLcode result = CURLE_OK;
+ unsigned char *type2 = NULL;
+ size_t type2_len = 0;
+
+ /* Decode the base-64 encoded type-2 message */
+ if(strlen(type2msg) && *type2msg != '=') {
+ result = Curl_base64_decode(type2msg, &type2, &type2_len);
+ if(result)
+ return result;
+ }
+
+ /* Ensure we have a valid type-2 message */
+ if(!type2) {
+ infof(data, "NTLM handshake failure (empty type-2 message)\n");
+
+ return CURLE_BAD_CONTENT_ENCODING;
+ }
+
+ /* Simply store the challenge for use later */
+ ntlm->input_token = type2;
+ ntlm->input_token_len = type2_len;
+
+ return result;
}
/*