diff options
| -rw-r--r-- | lib/curl_ntlm.c | 32 | ||||
| -rw-r--r-- | lib/curl_ntlm.h | 2 | ||||
| -rw-r--r-- | lib/curl_ntlm_core.c | 139 | ||||
| -rw-r--r-- | lib/curl_ntlm_core.h | 31 | ||||
| -rw-r--r-- | lib/curl_ntlm_msgs.c | 129 | ||||
| -rw-r--r-- | lib/curl_ntlm_msgs.h | 2 | ||||
| -rw-r--r-- | lib/curl_ntlm_wb.c | 7 | ||||
| -rw-r--r-- | 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 <unistd.h> -#endif -#ifdef HAVE_SYS_WAIT_H -#include <sys/wait.h> -#endif -#ifdef HAVE_SIGNAL_H -#include <signal.h> -#endif +/* + * NTLM details: + * + * http://davenport.sourceforge.net/ntlm.html + * http://www.innovation.ch/java/ntlm.html + */ -#if (defined(NETWARE) && !defined(__NOVELL_LIBC__)) -#include <netdb.h> -#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 <curl/mprintf.h> +/* + * 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 <openssl/des.h> -#      ifndef OPENSSL_NO_MD4 -#        include <openssl/md4.h> -#      endif -#      include <openssl/md5.h> -#      include <openssl/ssl.h> -#      include <openssl/rand.h> -#    else -#      include <des.h> -#      ifndef OPENSSL_NO_MD4 -#        include <md4.h> -#      endif -#      include <md5.h> -#      include <ssl.h> -#      include <rand.h> -#    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 <openssl/des.h> +#    ifndef OPENSSL_NO_MD4 +#      include <openssl/md4.h> +#    endif +#    include <openssl/md5.h> +#    include <openssl/ssl.h> +#    include <openssl/rand.h> +#  else +#    include <des.h> +#    ifndef OPENSSL_NO_MD4 +#      include <md4.h> +#    endif +#    include <md5.h> +#    include <ssl.h> +#    include <rand.h> +#  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 <gcrypt.h> - -#define MD5_DIGEST_LENGTH 16 -#define MD4_DIGEST_LENGTH 16 +#  include <gcrypt.h> +#  define MD5_DIGEST_LENGTH 16 +#  define MD4_DIGEST_LENGTH 16  #elif defined(USE_NSS) -#include "curl_md4.h" -#include "nssg.h" -#include <nss.h> -#include <pk11pub.h> -#include <hasht.h> -#define MD5_DIGEST_LENGTH MD5_LENGTH - -#elif defined(USE_WINDOWS_SSPI) - -#include "curl_sspi.h" +#  include <nss.h> +#  include <pk11pub.h> +#  include <hasht.h> +#  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 <curl/mprintf.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,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 <unistd.h> -#endif - -#if (defined(NETWARE) && !defined(__NOVELL_LIBC__)) -#include <netdb.h> -#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 <curl/mprintf.h> +#define DEBUG_ME 0  #ifdef USE_SSLEAY -#include "ssluse.h" -#    ifdef USE_OPENSSL -#      include <openssl/des.h> -#      ifndef OPENSSL_NO_MD4 -#        include <openssl/md4.h> -#      endif -#      include <openssl/md5.h> -#      include <openssl/ssl.h> -#      include <openssl/rand.h> -#    else -#      include <des.h> -#      ifndef OPENSSL_NO_MD4 -#        include <md4.h> -#      endif -#      include <md5.h> -#      include <ssl.h> -#      include <rand.h> -#    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 <openssl/des.h> +#    ifndef OPENSSL_NO_MD4 +#      include <openssl/md4.h> +#    endif +#    include <openssl/md5.h> +#    include <openssl/ssl.h> +#    include <openssl/rand.h> +#  else +#    include <des.h> +#    ifndef OPENSSL_NO_MD4 +#      include <md4.h> +#    endif +#    include <md5.h> +#    include <ssl.h> +#    include <rand.h> +#  endif +#  include "ssluse.h"  #elif defined(USE_GNUTLS) -#include "gtls.h" -#include <gcrypt.h> - -#define MD5_DIGEST_LENGTH 16 -#define MD4_DIGEST_LENGTH 16 +#  include <gcrypt.h> +#  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 <nss.h> -#include <pk11pub.h> -#include <hasht.h> -#define MD5_DIGEST_LENGTH MD5_LENGTH +#  include <nss.h> +#  include <pk11pub.h> +#  include <hasht.h> +#  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 <curl/mprintf.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 */ | 
