Commit 662c1d87 authored by Yang Tse's avatar Yang Tse
Browse files

NTLM: END of refactoring/splitting/moving

First:

File curl_ntlm.h renamed curl_ntlm_msgs.h
File curl_ntlm.c renamed curl_ntlm_msgs.c

Afterwards:

File http_ntlm.c renamed curl_ntlm.c
File http_ntlm.h renamed curl_ntlm.h
parent 135f6940
Loading
Loading
Loading
Loading
+4 −4
Original line number Original line Diff line number Diff line
@@ -14,7 +14,7 @@ CSOURCES = file.c timeval.c base64.c hostip.c progress.c formdata.c \
  curl_fnmatch.c fileinfo.c ftplistparser.c wildcard.c krb5.c		\
  curl_fnmatch.c fileinfo.c ftplistparser.c wildcard.c krb5.c		\
  memdebug.c http_chunks.c strtok.c connect.c llist.c hash.c multi.c	\
  memdebug.c http_chunks.c strtok.c connect.c llist.c hash.c multi.c	\
  content_encoding.c share.c http_digest.c md4.c md5.c curl_rand.c	\
  content_encoding.c share.c http_digest.c md4.c md5.c curl_rand.c	\
  http_negotiate.c http_ntlm.c inet_pton.c strtoofft.c strerror.c	\
  http_negotiate.c inet_pton.c strtoofft.c strerror.c			\
  hostasyn.c hostip4.c hostip6.c hostsyn.c inet_ntop.c parsedate.c	\
  hostasyn.c hostip4.c hostip6.c hostsyn.c inet_ntop.c parsedate.c	\
  select.c gtls.c sslgen.c tftp.c splay.c strdup.c socks.c ssh.c nss.c	\
  select.c gtls.c sslgen.c tftp.c splay.c strdup.c socks.c ssh.c nss.c	\
  qssl.c rawstr.c curl_addrinfo.c socks_gssapi.c socks_sspi.c		\
  qssl.c rawstr.c curl_addrinfo.c socks_gssapi.c socks_sspi.c		\
@@ -23,7 +23,7 @@ CSOURCES = file.c timeval.c base64.c hostip.c progress.c formdata.c \
  curl_rtmp.c openldap.c curl_gethostname.c gopher.c axtls.c		\
  curl_rtmp.c openldap.c curl_gethostname.c gopher.c axtls.c		\
  idn_win32.c http_negotiate_sspi.c cyassl.c http_proxy.c non-ascii.c	\
  idn_win32.c http_negotiate_sspi.c cyassl.c http_proxy.c non-ascii.c	\
  asyn-ares.c asyn-thread.c curl_gssapi.c curl_ntlm.c curl_ntlm_wb.c	\
  asyn-ares.c asyn-thread.c curl_gssapi.c curl_ntlm.c curl_ntlm_wb.c	\
  curl_ntlm_core.c
  curl_ntlm_core.c curl_ntlm_msgs.c


HHEADERS = arpa_telnet.h netrc.h file.h timeval.h qssl.h hostip.h	\
HHEADERS = arpa_telnet.h netrc.h file.h timeval.h qssl.h hostip.h	\
  progress.h formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h	\
  progress.h formdata.h cookie.h http.h sendf.h ftp.h url.h dict.h	\
@@ -31,7 +31,7 @@ HHEADERS = arpa_telnet.h netrc.h file.h timeval.h qssl.h hostip.h \
  getinfo.h strequal.h krb4.h memdebug.h http_chunks.h curl_rand.h	\
  getinfo.h strequal.h krb4.h memdebug.h http_chunks.h curl_rand.h	\
  curl_fnmatch.h wildcard.h fileinfo.h ftplistparser.h strtok.h		\
  curl_fnmatch.h wildcard.h fileinfo.h ftplistparser.h strtok.h		\
  connect.h llist.h hash.h content_encoding.h share.h curl_md4.h	\
  connect.h llist.h hash.h content_encoding.h share.h curl_md4.h	\
  curl_md5.h http_digest.h http_negotiate.h http_ntlm.h inet_pton.h	\
  curl_md5.h http_digest.h http_negotiate.h inet_pton.h			\
  strtoofft.h strerror.h inet_ntop.h curlx.h curl_memory.h setup.h	\
  strtoofft.h strerror.h inet_ntop.h curlx.h curl_memory.h setup.h	\
  transfer.h select.h easyif.h multiif.h parsedate.h sslgen.h gtls.h	\
  transfer.h select.h easyif.h multiif.h parsedate.h sslgen.h gtls.h	\
  tftp.h sockaddr.h splay.h strdup.h setup_once.h socks.h ssh.h nssg.h	\
  tftp.h sockaddr.h splay.h strdup.h setup_once.h socks.h ssh.h nssg.h	\
@@ -39,4 +39,4 @@ HHEADERS = arpa_telnet.h netrc.h file.h timeval.h qssl.h hostip.h \
  curl_memrchr.h imap.h pop3.h smtp.h pingpong.h rtsp.h curl_threads.h	\
  curl_memrchr.h imap.h pop3.h smtp.h pingpong.h rtsp.h curl_threads.h	\
  warnless.h curl_hmac.h polarssl.h curl_rtmp.h curl_gethostname.h	\
  warnless.h curl_hmac.h polarssl.h curl_rtmp.h curl_gethostname.h	\
  gopher.h axtls.h cyassl.h http_proxy.h non-ascii.h asyn.h curl_ntlm.h \
  gopher.h axtls.h cyassl.h http_proxy.h non-ascii.h asyn.h curl_ntlm.h \
  curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h
  curl_gssapi.h curl_ntlm_wb.h curl_ntlm_core.h curl_ntlm_msgs.h
+1 −1
Original line number Original line Diff line number Diff line
@@ -508,6 +508,7 @@ X_OBJS= \
	$(DIROBJ)\curl_memrchr.obj \
	$(DIROBJ)\curl_memrchr.obj \
	$(DIROBJ)\curl_ntlm.obj \
	$(DIROBJ)\curl_ntlm.obj \
	$(DIROBJ)\curl_ntlm_core.obj \
	$(DIROBJ)\curl_ntlm_core.obj \
	$(DIROBJ)\curl_ntlm_msgs.obj \
	$(DIROBJ)\curl_ntlm_wb.obj \
	$(DIROBJ)\curl_ntlm_wb.obj \
	$(DIROBJ)\curl_rand.obj \
	$(DIROBJ)\curl_rand.obj \
	$(DIROBJ)\curl_rtmp.obj \
	$(DIROBJ)\curl_rtmp.obj \
@@ -536,7 +537,6 @@ X_OBJS= \
	$(DIROBJ)\http_digest.obj \
	$(DIROBJ)\http_digest.obj \
	$(DIROBJ)\http_negotiate.obj \
	$(DIROBJ)\http_negotiate.obj \
        $(DIROBJ)\http_negotiate_sspi.obj \
        $(DIROBJ)\http_negotiate_sspi.obj \
	$(DIROBJ)\http_ntlm.obj \
	$(DIROBJ)\http.obj \
	$(DIROBJ)\http.obj \
	$(DIROBJ)\http_proxy.obj \
	$(DIROBJ)\http_proxy.obj \
	$(DIROBJ)\if2ip.obj \
	$(DIROBJ)\if2ip.obj \
+145 −889

File changed.

Preview size limit exceeded, changes collapsed.

+9 −131
Original line number Original line Diff line number Diff line
@@ -24,141 +24,19 @@


#ifdef USE_NTLM
#ifdef USE_NTLM


/* This is to generate a base64 encoded NTLM type-1 message */
/* this is for ntlm header input */
CURLcode Curl_ntlm_create_type1_message(const char *userp,
CURLcode Curl_input_ntlm(struct connectdata *conn, bool proxy,
                                        const char *passwdp,
                         const char *header);
                                        struct ntlmdata *ntlm,
                                        char **outptr);


/* This is to generate a base64 encoded NTLM type-3 message */
/* this is for creating ntlm header output */
CURLcode Curl_ntlm_create_type3_message(struct SessionHandle *data,
CURLcode Curl_output_ntlm(struct connectdata *conn, bool proxy);
                                        const char *userp,
                                        const char *passwdp,
                                        struct ntlmdata *ntlm,
                                        char **outptr);


/* This is to decode a NTLM type-2 message */
void Curl_http_ntlm_cleanup(struct connectdata *conn);
CURLcode Curl_ntlm_decode_type2_message(struct SessionHandle *data,
                                        const char* header,
                                        struct ntlmdata* ntlm);


/* This is to clean up the ntlm data structure */
#else
#ifdef USE_WINDOWS_SSPI
void Curl_ntlm_sspi_cleanup(struct ntlmdata *ntlm);
#endif

/* NTLM buffer fixed size, large enough for long user + host + domain */
#define NTLM_BUFSIZE 1024

/* Stuff only required for curl_ntlm.c */
#ifdef BUILDING_CURL_NTLM_C

/* Flag bits definitions based on http://davenport.sourceforge.net/ntlm.html */

#define NTLMFLAG_NEGOTIATE_UNICODE               (1<<0)
/* Indicates that Unicode strings are supported for use in security buffer
   data. */

#define NTLMFLAG_NEGOTIATE_OEM                   (1<<1)
/* Indicates that OEM strings are supported for use in security buffer data. */

#define NTLMFLAG_REQUEST_TARGET                  (1<<2)
/* Requests that the server's authentication realm be included in the Type 2
   message. */

/* unknown (1<<3) */
#define NTLMFLAG_NEGOTIATE_SIGN                  (1<<4)
/* Specifies that authenticated communication between the client and server
   should carry a digital signature (message integrity). */

#define NTLMFLAG_NEGOTIATE_SEAL                  (1<<5)
/* Specifies that authenticated communication between the client and server
   should be encrypted (message confidentiality). */

#define NTLMFLAG_NEGOTIATE_DATAGRAM_STYLE        (1<<6)
/* Indicates that datagram authentication is being used. */

#define NTLMFLAG_NEGOTIATE_LM_KEY                (1<<7)
/* Indicates that the LAN Manager session key should be used for signing and
   sealing authenticated communications. */

#define NTLMFLAG_NEGOTIATE_NETWARE               (1<<8)
/* unknown purpose */

#define NTLMFLAG_NEGOTIATE_NTLM_KEY              (1<<9)
/* Indicates that NTLM authentication is being used. */

/* unknown (1<<10) */

#define NTLMFLAG_NEGOTIATE_ANONYMOUS             (1<<11)
/* Sent by the client in the Type 3 message to indicate that an anonymous
   context has been established. This also affects the response fields. */

#define NTLMFLAG_NEGOTIATE_DOMAIN_SUPPLIED       (1<<12)
/* Sent by the client in the Type 1 message to indicate that a desired
   authentication realm is included in the message. */


#define NTLMFLAG_NEGOTIATE_WORKSTATION_SUPPLIED  (1<<13)
#define Curl_http_ntlm_cleanup(a)
/* Sent by the client in the Type 1 message to indicate that the client
   workstation's name is included in the message. */


#define NTLMFLAG_NEGOTIATE_LOCAL_CALL            (1<<14)
#endif
/* Sent by the server to indicate that the server and client are on the same
   machine. Implies that the client may use a pre-established local security
   context rather than responding to the challenge. */

#define NTLMFLAG_NEGOTIATE_ALWAYS_SIGN           (1<<15)
/* Indicates that authenticated communication between the client and server
   should be signed with a "dummy" signature. */

#define NTLMFLAG_TARGET_TYPE_DOMAIN              (1<<16)
/* Sent by the server in the Type 2 message to indicate that the target
   authentication realm is a domain. */

#define NTLMFLAG_TARGET_TYPE_SERVER              (1<<17)
/* Sent by the server in the Type 2 message to indicate that the target
   authentication realm is a server. */

#define NTLMFLAG_TARGET_TYPE_SHARE               (1<<18)
/* Sent by the server in the Type 2 message to indicate that the target
   authentication realm is a share. Presumably, this is for share-level
   authentication. Usage is unclear. */

#define NTLMFLAG_NEGOTIATE_NTLM2_KEY             (1<<19)
/* Indicates that the NTLM2 signing and sealing scheme should be used for
   protecting authenticated communications. */

#define NTLMFLAG_REQUEST_INIT_RESPONSE           (1<<20)
/* unknown purpose */

#define NTLMFLAG_REQUEST_ACCEPT_RESPONSE         (1<<21)
/* unknown purpose */

#define NTLMFLAG_REQUEST_NONNT_SESSION_KEY       (1<<22)
/* unknown purpose */

#define NTLMFLAG_NEGOTIATE_TARGET_INFO           (1<<23)
/* Sent by the server in the Type 2 message to indicate that it is including a
   Target Information block in the message. */

/* unknown (1<24) */
/* unknown (1<25) */
/* unknown (1<26) */
/* unknown (1<27) */
/* unknown (1<28) */

#define NTLMFLAG_NEGOTIATE_128                   (1<<29)
/* Indicates that 128-bit encryption is supported. */

#define NTLMFLAG_NEGOTIATE_KEY_EXCHANGE          (1<<30)
/* Indicates that the client will provide an encrypted master key in
   the "Session Key" field of the Type 3 message. */

#define NTLMFLAG_NEGOTIATE_56                    (1<<31)
/* Indicates that 56-bit encryption is supported. */

#endif /* BUILDING_CURL_NTLM_C */

#endif /* USE_NTLM */


#endif /* HEADER_CURL_NTLM_H */
#endif /* HEADER_CURL_NTLM_H */

lib/curl_ntlm_msgs.c

0 → 100644
+997 −0

File added.

Preview size limit exceeded, changes collapsed.

Loading