From 05ef245170fd71f2907b89e2d1361b2e70113199 Mon Sep 17 00:00:00 2001 From: Yang Tse Date: Sun, 28 Aug 2011 07:15:46 +0200 Subject: NTLM: header inclusion cleanup --- lib/curl_ntlm.c | 32 +++--------- lib/curl_ntlm.h | 2 + lib/curl_ntlm_core.c | 139 ++++++++++++++++++++------------------------------- lib/curl_ntlm_core.h | 31 ++++++++++-- lib/curl_ntlm_msgs.c | 129 ++++++++++++++++++----------------------------- lib/curl_ntlm_msgs.h | 2 + lib/curl_ntlm_wb.c | 7 +++ lib/curl_ntlm_wb.h | 4 +- 8 files changed, 150 insertions(+), 196 deletions(-) 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 -#define DEBUG_ME 0 - -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_SYS_WAIT_H -#include -#endif -#ifdef HAVE_SIGNAL_H -#include -#endif +/* + * NTLM details: + * + * http://davenport.sourceforge.net/ntlm.html + * http://www.innovation.ch/java/ntlm.html + */ -#if (defined(NETWARE) && !defined(__NOVELL_LIBC__)) -#include -#endif +#define DEBUG_ME 0 #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 -*/ - -#ifdef USE_NTLM - -#include "non-ascii.h" -#include "rawstr.h" -#include "curl_memory.h" - -#define _MPRINTF_REPLACE /* use our functions only */ -#include +/* + * NTLM details: + * + * http://davenport.sourceforge.net/ntlm.html + * http://www.innovation.ch/java/ntlm.html + */ #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 +# 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 "gtls.h" -#include - -#define MD5_DIGEST_LENGTH 16 -#define MD4_DIGEST_LENGTH 16 +# 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" +# 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 - -#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 +# 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 + /* 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,106 +22,73 @@ #include "setup.h" -/* NTLM details: - - http://davenport.sourceforge.net/ntlm.html - http://www.innovation.ch/java/ntlm.html -*/ - #ifdef USE_NTLM -#define DEBUG_ME 0 - -#ifdef HAVE_UNISTD_H -#include -#endif - -#if (defined(NETWARE) && !defined(__NOVELL_LIBC__)) -#include -#endif - -#define BUILDING_CURL_NTLM_MSGS_C - -#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_gethostname.h" -#include "curl_memory.h" +/* + * NTLM details: + * + * http://davenport.sourceforge.net/ntlm.html + * http://www.innovation.ch/java/ntlm.html + */ -#define _MPRINTF_REPLACE /* use our functions only */ -#include +#define DEBUG_ME 0 #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 +# 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" #elif defined(USE_GNUTLS) -#include "gtls.h" -#include - -#define MD5_DIGEST_LENGTH 16 -#define MD4_DIGEST_LENGTH 16 +# include +# include "gtls.h" +# 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 +# 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" - +# include "curl_sspi.h" #else -# error "Can't compile NTLM support without a crypto library." +# 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 +#include "urldata.h" +#include "non-ascii.h" +#include "sendf.h" +#include "curl_base64.h" +#include "curl_ntlm_core.h" +#include "curl_gethostname.h" +#include "curl_memory.h" -/* Define this to make the type-3 message include the NTLM2Session response - message, requires USE_NTRESPONSES. */ -#define USE_NTLM2SESSION 1 -#endif +#define BUILDING_CURL_NTLM_MSGS_C +#include "curl_ntlm_msgs.h" -#include "curl_ntlm_core.h" +#define _MPRINTF_REPLACE /* use our functions only */ +#include /* 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 */ -- cgit v1.2.3