diff --git a/lib/curl_ntlm.c b/lib/curl_ntlm.c index 50659b0cc..bdf74053c 100644 --- a/lib/curl_ntlm.c +++ b/lib/curl_ntlm.c @@ -22,42 +22,24 @@ #include "setup.h" -/* NTLM details: - - http://davenport.sourceforge.net/ntlm.html - http://www.innovation.ch/java/ntlm.html -*/ - #ifdef USE_NTLM +/* + * NTLM details: + * + * http://davenport.sourceforge.net/ntlm.html + * http://www.innovation.ch/java/ntlm.html + */ + #define DEBUG_ME 0 -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_SYS_WAIT_H -#include -#endif -#ifdef HAVE_SIGNAL_H -#include -#endif - -#if (defined(NETWARE) && !defined(__NOVELL_LIBC__)) -#include -#endif - #include "urldata.h" -#include "non-ascii.h" /* for Curl_convert_... prototypes */ #include "sendf.h" -#include "select.h" #include "rawstr.h" -#include "curl_base64.h" #include "curl_ntlm.h" #include "curl_ntlm_msgs.h" #include "curl_ntlm_wb.h" #include "url.h" -#include "strerror.h" -#include "curl_gethostname.h" #include "curl_memory.h" #define _MPRINTF_REPLACE /* use our functions only */ diff --git a/lib/curl_ntlm.h b/lib/curl_ntlm.h index 008eb31e8..e84ba3f6b 100644 --- a/lib/curl_ntlm.h +++ b/lib/curl_ntlm.h @@ -22,6 +22,8 @@ * ***************************************************************************/ +#include "setup.h" + #ifdef USE_NTLM /* this is for ntlm header input */ diff --git a/lib/curl_ntlm_core.c b/lib/curl_ntlm_core.c index b8cc4c691..0be16b474 100644 --- a/lib/curl_ntlm_core.c +++ b/lib/curl_ntlm_core.c @@ -22,108 +22,77 @@ #include "setup.h" -/* NTLM details: +#if defined(USE_NTLM) && !defined(USE_WINDOWS_SSPI) - http://davenport.sourceforge.net/ntlm.html - http://www.innovation.ch/java/ntlm.html -*/ +/* + * NTLM details: + * + * http://davenport.sourceforge.net/ntlm.html + * http://www.innovation.ch/java/ntlm.html + */ -#ifdef USE_NTLM +#ifdef USE_SSLEAY +# ifdef USE_OPENSSL +# include +# ifndef OPENSSL_NO_MD4 +# include +# endif +# include +# include +# include +# else +# include +# ifndef OPENSSL_NO_MD4 +# include +# endif +# include +# include +# include +# endif +# if (OPENSSL_VERSION_NUMBER < 0x00907001L) +# define DES_key_schedule des_key_schedule +# define DES_cblock des_cblock +# define DES_set_odd_parity des_set_odd_parity +# define DES_set_key des_set_key +# define DES_ecb_encrypt des_ecb_encrypt +# define DESKEY(x) x +# define DESKEYARG(x) x +# else +# define DESKEYARG(x) *x +# define DESKEY(x) &x +# endif + +#elif defined(USE_GNUTLS) + +# include +# define MD5_DIGEST_LENGTH 16 +# define MD4_DIGEST_LENGTH 16 + +#elif defined(USE_NSS) + +# include +# include +# include +# include "curl_md4.h" +# define MD5_DIGEST_LENGTH MD5_LENGTH + +#else +# error "Can't compile NTLM support without a crypto library." +#endif + +#include "urldata.h" #include "non-ascii.h" #include "rawstr.h" #include "curl_memory.h" +#include "curl_ntlm_core.h" #define _MPRINTF_REPLACE /* use our functions only */ #include -#ifdef USE_SSLEAY -#include "ssluse.h" -# ifdef USE_OPENSSL -# include -# ifndef OPENSSL_NO_MD4 -# include -# endif -# include -# include -# include -# else -# include -# ifndef OPENSSL_NO_MD4 -# include -# endif -# include -# include -# include -# endif - -#ifndef OPENSSL_VERSION_NUMBER -#error "OPENSSL_VERSION_NUMBER not defined" -#endif - -#if OPENSSL_VERSION_NUMBER < 0x00907001L -#define DES_key_schedule des_key_schedule -#define DES_cblock des_cblock -#define DES_set_odd_parity des_set_odd_parity -#define DES_set_key des_set_key -#define DES_ecb_encrypt des_ecb_encrypt - -/* This is how things were done in the old days */ -#define DESKEY(x) x -#define DESKEYARG(x) x -#else -/* Modern version */ -#define DESKEYARG(x) *x -#define DESKEY(x) &x -#endif - -#ifdef OPENSSL_NO_MD4 -/* This requires MD4, but OpenSSL was compiled without it */ -#define USE_NTRESPONSES 0 -#define USE_NTLM2SESSION 0 -#endif - -#elif defined(USE_GNUTLS) - -#include "gtls.h" -#include - -#define MD5_DIGEST_LENGTH 16 -#define MD4_DIGEST_LENGTH 16 - -#elif defined(USE_NSS) - -#include "curl_md4.h" -#include "nssg.h" -#include -#include -#include -#define MD5_DIGEST_LENGTH MD5_LENGTH - -#elif defined(USE_WINDOWS_SSPI) - -#include "curl_sspi.h" - -#else -# error "Can't compile NTLM support without a crypto library." -#endif - -#ifndef USE_NTRESPONSES -/* Define this to make the type-3 message include the NT response message */ -#define USE_NTRESPONSES 1 - -/* Define this to make the type-3 message include the NTLM2Session response - message, requires USE_NTRESPONSES. */ -#define USE_NTLM2SESSION 1 -#endif - -#include "curl_ntlm_core.h" - /* The last #include file should be: */ #include "memdebug.h" -#ifndef USE_WINDOWS_SSPI - #ifdef USE_SSLEAY /* * Turns a 56 bit key into the 64 bit, odd parity key and sets the key. The @@ -407,6 +376,4 @@ CURLcode Curl_ntlm_core_mk_nt_hash(struct SessionHandle *data, } #endif /* USE_NTRESPONSES */ -#endif /* !USE_WINDOWS_SSPI */ - -#endif /* USE_NTLM */ +#endif /* USE_NTLM && !USE_WINDOWS_SSPI */ diff --git a/lib/curl_ntlm_core.h b/lib/curl_ntlm_core.h index ea855905f..5615b3504 100644 --- a/lib/curl_ntlm_core.h +++ b/lib/curl_ntlm_core.h @@ -22,7 +22,32 @@ * ***************************************************************************/ -#ifdef USE_NTLM +#include "setup.h" + +#if defined(USE_NTLM) && !defined(USE_WINDOWS_SSPI) + +#ifdef USE_SSLEAY +# if !defined(OPENSSL_VERSION_NUMBER) && \ + !defined(HEADER_SSL_H) && !defined(HEADER_MD5_H) +# error "curl_ntlm_core.h shall not be included before OpenSSL headers." +# endif +# ifdef OPENSSL_NO_MD4 +# define USE_NTRESPONSES 0 +# define USE_NTLM2SESSION 0 +# endif +#endif + +/* + * Define USE_NTRESPONSES to 1 in order to make the type-3 message include + * the NT response message. Define USE_NTLM2SESSION to 1 in order to make + * the type-3 message include the NTLM2Session response message, requires + * USE_NTRESPONSES defined to 1. + */ + +#ifndef USE_NTRESPONSES +# define USE_NTRESPONSES 1 +# define USE_NTLM2SESSION 1 +#endif void Curl_ntlm_core_lm_resp(const unsigned char *keys, const unsigned char *plaintext, @@ -32,12 +57,12 @@ void Curl_ntlm_core_mk_lm_hash(struct SessionHandle *data, const char *password, unsigned char *lmbuffer /* 21 bytes */); -#if !defined(USE_WINDOWS_SSPI) && (USE_NTRESPONSES != 0) +#if USE_NTRESPONSES CURLcode Curl_ntlm_core_mk_nt_hash(struct SessionHandle *data, const char *password, unsigned char *ntbuffer /* 21 bytes */); #endif -#endif /* USE_NTLM */ +#endif /* USE_NTLM && !USE_WINDOWS_SSPI */ #endif /* HEADER_CURL_NTLM_CORE_H */ diff --git a/lib/curl_ntlm_msgs.c b/lib/curl_ntlm_msgs.c index 732974b33..e27e947dd 100644 --- a/lib/curl_ntlm_msgs.c +++ b/lib/curl_ntlm_msgs.c @@ -22,107 +22,74 @@ #include "setup.h" -/* NTLM details: - - http://davenport.sourceforge.net/ntlm.html - http://www.innovation.ch/java/ntlm.html -*/ - #ifdef USE_NTLM +/* + * NTLM details: + * + * http://davenport.sourceforge.net/ntlm.html + * http://www.innovation.ch/java/ntlm.html + */ + #define DEBUG_ME 0 -#ifdef HAVE_UNISTD_H -#include -#endif +#ifdef USE_SSLEAY -#if (defined(NETWARE) && !defined(__NOVELL_LIBC__)) -#include -#endif +# ifdef USE_OPENSSL +# include +# ifndef OPENSSL_NO_MD4 +# include +# endif +# include +# include +# include +# else +# include +# ifndef OPENSSL_NO_MD4 +# include +# endif +# include +# include +# include +# endif +# include "ssluse.h" -#define BUILDING_CURL_NTLM_MSGS_C +#elif defined(USE_GNUTLS) + +# include +# include "gtls.h" +# define MD5_DIGEST_LENGTH 16 +# define MD4_DIGEST_LENGTH 16 + +#elif defined(USE_NSS) + +# include +# include +# include +# include "nssg.h" +# include "curl_md4.h" +# define MD5_DIGEST_LENGTH MD5_LENGTH + +#elif defined(USE_WINDOWS_SSPI) +# include "curl_sspi.h" +#else +# error "Can't compile NTLM support without a crypto library." +#endif #include "urldata.h" #include "non-ascii.h" #include "sendf.h" -#include "select.h" -#include "rawstr.h" #include "curl_base64.h" -#include "curl_ntlm_msgs.h" -#include "url.h" -#include "strerror.h" +#include "curl_ntlm_core.h" #include "curl_gethostname.h" #include "curl_memory.h" +#define BUILDING_CURL_NTLM_MSGS_C +#include "curl_ntlm_msgs.h" + #define _MPRINTF_REPLACE /* use our functions only */ #include -#ifdef USE_SSLEAY -#include "ssluse.h" -# ifdef USE_OPENSSL -# include -# ifndef OPENSSL_NO_MD4 -# include -# endif -# include -# include -# include -# else -# include -# ifndef OPENSSL_NO_MD4 -# include -# endif -# include -# include -# include -# endif - -#ifndef OPENSSL_VERSION_NUMBER -#error "OPENSSL_VERSION_NUMBER not defined" -#endif - -#ifdef OPENSSL_NO_MD4 -/* This requires MD4, but OpenSSL was compiled without it */ -#define USE_NTRESPONSES 0 -#define USE_NTLM2SESSION 0 -#endif - -#elif defined(USE_GNUTLS) - -#include "gtls.h" -#include - -#define MD5_DIGEST_LENGTH 16 -#define MD4_DIGEST_LENGTH 16 - -#elif defined(USE_NSS) - -#include "curl_md4.h" -#include "nssg.h" -#include -#include -#include -#define MD5_DIGEST_LENGTH MD5_LENGTH - -#elif defined(USE_WINDOWS_SSPI) - -#include "curl_sspi.h" - -#else -# error "Can't compile NTLM support without a crypto library." -#endif - -#ifndef USE_NTRESPONSES -/* Define this to make the type-3 message include the NT response message */ -#define USE_NTRESPONSES 1 - -/* Define this to make the type-3 message include the NTLM2Session response - message, requires USE_NTRESPONSES. */ -#define USE_NTLM2SESSION 1 -#endif - -#include "curl_ntlm_core.h" - /* The last #include file should be: */ #include "memdebug.h" diff --git a/lib/curl_ntlm_msgs.h b/lib/curl_ntlm_msgs.h index 3e037b1f1..1d4549558 100644 --- a/lib/curl_ntlm_msgs.h +++ b/lib/curl_ntlm_msgs.h @@ -22,6 +22,8 @@ * ***************************************************************************/ +#include "setup.h" + #ifdef USE_NTLM /* This is to generate a base64 encoded NTLM type-1 message */ diff --git a/lib/curl_ntlm_wb.c b/lib/curl_ntlm_wb.c index 2b400e8a6..b9cc314ef 100644 --- a/lib/curl_ntlm_wb.c +++ b/lib/curl_ntlm_wb.c @@ -24,6 +24,13 @@ #if defined(USE_NTLM) && defined(NTLM_WB_ENABLED) +/* + * NTLM details: + * + * http://davenport.sourceforge.net/ntlm.html + * http://www.innovation.ch/java/ntlm.html + */ + #define DEBUG_ME 0 #ifdef HAVE_UNISTD_H diff --git a/lib/curl_ntlm_wb.h b/lib/curl_ntlm_wb.h index b7448a736..e3eaffe17 100644 --- a/lib/curl_ntlm_wb.h +++ b/lib/curl_ntlm_wb.h @@ -22,6 +22,8 @@ * ***************************************************************************/ +#include "setup.h" + #if defined(USE_NTLM) && defined(NTLM_WB_ENABLED) /* this is for creating ntlm header output by delegating challenge/response @@ -30,6 +32,6 @@ CURLcode Curl_output_ntlm_wb(struct connectdata *conn, bool proxy); void Curl_ntlm_wb_cleanup(struct connectdata *conn); -#endif +#endif /* USE_NTLM && NTLM_WB_ENABLED */ #endif /* HEADER_CURL_NTLM_WB_H */