From: Philip Prindeville <[email protected]>

---
 .gitlab-ci.yml          |   4 +-
 NEWS                    |   2 +
 configure.ac            |  41 +--
 doc/wget.texi           |   2 +-
 fuzz/Makefile.am        |   7 -
 fuzz/wget_ntlm_fuzzer.c | 102 -------
 msdos/Makefile.DJ       |   2 +-
 src/DESCRIP_DEPS.MMS    |  17 --
 src/DESCRIP_MODS.MMS    |   1 -
 src/Makefile.am         |   4 -
 src/build_info.c.in     |   1 -
 src/http-ntlm.c         | 618 ----------------------------------------
 src/http-ntlm.h         |  53 ----
 src/http.c              |  82 +-----
 vms/DESCRIP.MMS         |   4 +-
 vms/DESCRIP_SRC_CMN.MMS |   4 +-
 vms/config.h_vms        |   3 -
 17 files changed, 22 insertions(+), 925 deletions(-)

diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 
c764e2dbf366f5d9b2f01eca2f8ec5eadaf28344..47d475e1b260533541217418d5b9ab8c8030ccb2
 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -63,7 +63,7 @@ Build-Tarball:
         - mkdir vpath && cd vpath
         - ../configure $CONFIGURE_BASE_FLAGS --cache-file ../cache/config.cache
           --without-ssl --enable-ipv6 --without-zlib --without-libiconv-prefix
-          --disable-iri --disable-ntlm --disable-pcre --without-libpsl 
--without-libuuid
+          --disable-iri --disable-pcre --without-libpsl --without-libuuid
           --without-libintl-prefix
         - make -j$(nproc)
         - make -j$(nproc) syntax-check
@@ -122,7 +122,7 @@ Minimal:
         - cd wget-*/
         - ./configure $CONFIGURE_BASE_FLAGS --cache-file ../cache/config.cache
           --disable-nls --without-ssl --enable-ipv6 --without-zlib 
--without-libiconv-prefix
-          --disable-iri --disable-ntlm --disable-pcre --without-libpsl 
--without-libuuid
+          --disable-iri --disable-pcre --without-libpsl --without-libuuid
           --without-libintl-prefix
         - make -j$(nproc) check-valgrind
     except:
diff --git a/NEWS b/NEWS
index 
28ebc27ff390fc75d629395e84ba0fa124d0a2e8..5d054ee1ec380bf154c39df38b7a9c71fe473c4b
 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,8 @@ GNU Wget NEWS -- history of user-visible changes.
 
 * Noteworthy changes in release ?.? (????-??-??) [?]
 
+* Drop NTLM as it's insecure and deprecated
+
 
 * Noteworthy changes in release 1.25.0 (2024-11-10) [stable]
 
diff --git a/configure.ac b/configure.ac
index 
5f6a7286ca8782d791a821c3c90872a9f8ae8646..99a81770a86971f2dadb26a207fb06b99202d60e
 100644
--- a/configure.ac
+++ b/configure.ac
@@ -186,14 +186,6 @@ AS_IF([test "x$ENABLE_DIGEST" = xyes],
 )
 
 
-dnl NTLM: Support for HTTP NTLM Authentication
-AC_ARG_ENABLE([ntlm],
-  [AS_HELP_STRING([--disable-ntlm], [disable support for NTLM authorization])],
-  [ENABLE_NTLM=$enableval],
-  [ENABLE_NTLM=auto]
-)
-
-
 dnl Debug: Support for printing debugging output
 AC_ARG_ENABLE([debug],
   [AS_HELP_STRING([--disable-debug], [disable support for debugging output])],
@@ -525,7 +517,7 @@ AS_IF([test x"$with_ssl" = xopenssl], [
       ssl_library="openssl"
       LIBS="$OPENSSL_LIBS $LIBS"
       CFLAGS="$OPENSSL_CFLAGS -DHAVE_LIBSSL $CFLAGS"
-      LIBSSL=" " # ntlm check below wants this
+      LIBSSL=""
       AC_CHECK_FUNCS([RAND_egd])
       AC_DEFINE([HAVE_LIBSSL], [1], [Define if using openssl.])
       ssl_found=yes
@@ -625,37 +617,6 @@ AS_IF([test x"$with_ssl" = xopenssl], [
   ]) # endif: --with-ssl != no?
 ]) # endif: --with-ssl == openssl?
 
-dnl Enable NTLM if requested and if SSL is available.
-if test x"$ENABLE_NTLM" != xno
-then
-  if test x"$LIBSSL" != x || test "$ac_cv_lib_ssl32_SSL_connect" = yes
-  then
-    ENABLE_NTLM=yes
-    AC_DEFINE([ENABLE_NTLM], 1, [Define if you want the NTLM authorization 
support compiled in.])
-  else
-    PKG_CHECK_MODULES([NETTLE], nettle, [
-      HAVE_NETTLE=yes
-      LIBS="$NETTLE_LIBS $LIBS"
-      CFLAGS="$NETTLE_CFLAGS $CFLAGS"
-    ], [
-      AC_CHECK_LIB(nettle, nettle_md4_init, [HAVE_NETTLE=yes], 
[HAVE_NETTLE=no; AC_MSG_WARN(*** libnettle was not found. You will not be able 
to use NTLM)])
-      if test x"$HAVE_NETTLE" != xyes; then
-        if  test x"$ENABLE_NTLM" = xyes; then
-          AC_MSG_ERROR([NTLM authorization requested and SSL not enabled; 
aborting])
-        fi
-      else
-        AC_SUBST(NETTLE_LIBS, "-lnettle")
-        LIBS="$NETTLE_LIBS $LIBS"
-      fi
-    ])
-
-    if test x"$HAVE_NETTLE" = xyes; then
-      AC_DEFINE([HAVE_NETTLE], [1], [Use libnettle])
-      ENABLE_NTLM=yes
-      AC_DEFINE([ENABLE_NTLM], 1, [Define if you want the NTLM authorization 
support compiled in.])
-    fi
-  fi
-fi
 
 dnl **********************************************************************
 dnl Checks for IPv6
diff --git a/doc/wget.texi b/doc/wget.texi
index 
0689c177b3ae0598b13b7a871ab764177086d5c5..576ba0d9d65047f98c97c02ac358b393ef44da98
 100644
--- a/doc/wget.texi
+++ b/doc/wget.texi
@@ -1379,7 +1379,7 @@ that are not parsed by Wget.
 Specify the username @var{user} and password @var{password} on an
 @sc{http} server.  According to the type of the challenge, Wget will
 encode them using either the @code{basic} (insecure),
-the @code{digest}, or the Windows @code{NTLM} authentication scheme.
+or the @code{digest} authentication scheme.
 
 Another way to specify username and password is in the @sc{url} itself
 (@pxref{URL Format}).  Either method reveals your password to anyone who
diff --git a/fuzz/Makefile.am b/fuzz/Makefile.am
index 
84abfcc911ab740ea309b4f5fffb34241bd096bb..3796b941c5f0e0043d4673efea96ad20917ab889
 100644
--- a/fuzz/Makefile.am
+++ b/fuzz/Makefile.am
@@ -39,10 +39,6 @@ WGET_TESTS = \
 
 EXTRA_DIST = test-runner.sh
 
-if WITH_NTLM
-  WGET_TESTS += wget_ntlm_fuzzer$(EXEEXT)
-endif
-
 if FUZZING
   bin_PROGRAMS = $(WGET_TESTS)
   LDADD += $(LIB_FUZZING_ENGINE)
@@ -77,9 +73,6 @@ wget_html_fuzzer_LDADD = ../src/libunittest.a $(LDADD)
 wget_netrc_fuzzer_SOURCES = wget_netrc_fuzzer.c $(MAIN)
 wget_netrc_fuzzer_LDADD = ../src/libunittest.a $(LDADD)
 
-wget_ntlm_fuzzer_SOURCES = wget_ntlm_fuzzer.c $(MAIN)
-wget_ntlm_fuzzer_LDADD = ../src/libunittest.a $(LDADD)
-
 wget_options_fuzzer_SOURCES = wget_options_fuzzer.c $(MAIN)
 wget_options_fuzzer_LDADD = ../src/libunittest.a $(LDADD)
 
diff --git a/fuzz/wget_ntlm_fuzzer.c b/fuzz/wget_ntlm_fuzzer.c
deleted file mode 100644
index 
5f38a258545056b6ada3788d176b5a3bd0dbd84f..0000000000000000000000000000000000000000
--- a/fuzz/wget_ntlm_fuzzer.c
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (c) 2017-2019, 2021-2024, 2026 Free Software Foundation,
- * Inc.
- *
- * This file is part of GNU Wget.
- *
- * GNU Wget is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
- *
- * GNU Wget is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Wget.  If not, see <https://www.gnu.org/licenses/>.
- */
-
-#include <config.h>
-
-#include <sys/types.h>
-#include <dirent.h> // opendir, readdir
-#include <stdint.h> // uint8_t
-#include <stdio.h>  // fmemopen
-#include <string.h>  // strncmp
-#include <stdlib.h>  // free
-#include <fcntl.h>  // open flags
-#include <unistd.h>  // close
-#include <setjmp.h> // longjmp, setjmp
-#include <assert.h> // assert
-
-#include "wget.h"
-
-#undef fopen_wgetrc
-
-#ifdef __cplusplus
-  extern "C" {
-#endif
-  #include "http-ntlm.h"
-
-  // declarations for wget internal functions
-  int main_wget(int argc, const char **argv);
-  void cleanup(void);
-  FILE *fopen_wget(const char *pathname, const char *mode);
-  FILE *fopen_wgetrc(const char *pathname, const char *mode);
-  void exit_wget(int status);
-#ifdef __cplusplus
-  }
-#endif
-
-#include "fuzzer.h"
-
-FILE *fopen_wget(const char *pathname, const char *mode)
-{
-       (void) pathname;
-       return fopen("/dev/null", mode);
-}
-
-FILE *fopen_wgetrc(const char *pathname, const char *mode)
-{
-       (void) pathname;
-       (void) mode;
-       return NULL;
-}
-
-#ifdef FUZZING
-void exit_wget(int status)
-{
-       (void) status;
-}
-#endif
-
-
-int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
-{
-       if (size > 128) // same as max_len = ... in .options file
-               return 0;
-
-       //      CLOSE_STDERR
-
-       struct ntlmdata *ntlm = (struct ntlmdata *) calloc(1, sizeof(struct 
ntlmdata));
-       char *data0 = (char *) malloc(size + 4 + 1);
-       bool ready;
-
-       assert(ntlm && data0);
-
-       memcpy(data0, "NTLM", 4);
-       memcpy(data0 + 4, data, size);
-       data0[size + 4] = 0;
-
-       if (ntlm_input(ntlm, data0))
-               free(ntlm_output(ntlm, data0 + 4, data0 + 4, &ready));
-
-       free(data0);
-       free(ntlm);
-
-//     RESTORE_STDERR
-
-       return 0;
-}
diff --git a/msdos/Makefile.DJ b/msdos/Makefile.DJ
index 
5ae5fecbf6bfdeeee4b33df1835eedcefe209a4d..77924722f8b37f8a19d1fba01cbafc3e7354184e
 100644
--- a/msdos/Makefile.DJ
+++ b/msdos/Makefile.DJ
@@ -34,7 +34,7 @@ ifeq ($(USE_OPENSSL),1)
   CFLAGS  += -DHAVE_OPENSSL -DHAVE_SSL -DOPENSSL_NO_KRB5 -I$(OPENSSL_ROOT)
   EX_LIBS += $(OPENSSL_ROOT)/lib/libssl.a $(OPENSSL_ROOT)/lib/libcrypt.a \
              $(ZLIB_ROOT)/libz.a
-  SOURCES += openssl.c http-ntlm.c
+  SOURCES += openssl.c
 endif
 
 ifeq ($(USE_IPV6),1)
diff --git a/src/DESCRIP_DEPS.MMS b/src/DESCRIP_DEPS.MMS
index 
30732b5c185a1dccd5085d3dd70ae890c8d86e8b..ebd4604cd6bd93bf2b466a786992ca9cb0fa1088
 100644
--- a/src/DESCRIP_DEPS.MMS
+++ b/src/DESCRIP_DEPS.MMS
@@ -312,22 +312,6 @@ $$$$ THIS DESCRIPTION FILE IS NOT INTENDED TO BE USED THIS 
WAY.
 [.$(DEST)]HTML-URL.OBJ : [-.SRC]RECUR.H
 [.$(DEST)]HTML-URL.OBJ : [-.SRC]HTML-URL.H
 [.$(DEST)]HTML-URL.OBJ : [-.SRC]CSS-URL.H
-[.$(DEST)]HTTP-NTLM.OBJ : [-.SRC]HTTP-NTLM.C
-[.$(DEST)]HTTP-NTLM.OBJ : [-.SRC]WGET.H
-[.$(DEST)]HTTP-NTLM.OBJ : [-.SRC.$(DEST)]CONFIG.H
-[.$(DEST)]HTTP-NTLM.OBJ : [-.SRC]SYSDEP.H
-[.$(DEST)]HTTP-NTLM.OBJ : [-.VMS]STDINT.H
-[.$(DEST)]HTTP-NTLM.OBJ : [-.SRC]GETTEXT.H
-[.$(DEST)]HTTP-NTLM.OBJ : [-.LIB]C-CTYPE.H
-[.$(DEST)]HTTP-NTLM.OBJ : [-.SRC]OPTIONS.H
-[.$(DEST)]HTTP-NTLM.OBJ : [-.VMS]ALLOCA.H
-[.$(DEST)]HTTP-NTLM.OBJ : [-.LIB]XALLOC.H
-[.$(DEST)]HTTP-NTLM.OBJ : [-.SRC]LOG.H
-[.$(DEST)]HTTP-NTLM.OBJ : [-.LIB]QUOTE.H
-[.$(DEST)]HTTP-NTLM.OBJ : [-.LIB]QUOTEARG.H
-[.$(DEST)]HTTP-NTLM.OBJ : [-.SRC]IRI.H
-[.$(DEST)]HTTP-NTLM.OBJ : [-.SRC]UTILS.H
-[.$(DEST)]HTTP-NTLM.OBJ : [-.SRC]HTTP-NTLM.H
 [.$(DEST)]HTTP.OBJ : [-.SRC]HTTP.C
 [.$(DEST)]HTTP.OBJ : [-.SRC]WGET.H
 [.$(DEST)]HTTP.OBJ : [-.SRC.$(DEST)]CONFIG.H
@@ -352,7 +336,6 @@ $$$$ THIS DESCRIPTION FILE IS NOT INTENDED TO BE USED THIS 
WAY.
 [.$(DEST)]HTTP.OBJ : [-.SRC]CONNECT.H
 [.$(DEST)]HTTP.OBJ : [-.SRC]NETRC.H
 [.$(DEST)]HTTP.OBJ : [-.SRC]SSL.H
-[.$(DEST)]HTTP.OBJ : [-.SRC]HTTP-NTLM.H
 [.$(DEST)]HTTP.OBJ : [-.SRC]COOKIES.H
 [.$(DEST)]HTTP.OBJ : [-.SRC]GEN-MD5.H
 [.$(DEST)]HTTP.OBJ : [-.SRC]CONVERT.H
diff --git a/src/DESCRIP_MODS.MMS b/src/DESCRIP_MODS.MMS
index 
93a145c279ee3ccfeec1cc0149b08dec31b83de8..de1600947c0c46ce52cd295b0fa754655023becb
 100644
--- a/src/DESCRIP_MODS.MMS
+++ b/src/DESCRIP_MODS.MMS
@@ -31,7 +31,6 @@ MODS_OBJS_LIB_SRC_NOSSL = \
  HOST=[.$(DEST)]HOST.OBJ \
  HTML-PARSE=[.$(DEST)]HTML-PARSE.OBJ \
  HTML-URL=[.$(DEST)]HTML-URL.OBJ \
- HTTP-NTLM=[.$(DEST)]HTTP-NTLM.OBJ \
  HTTP=[.$(DEST)]HTTP.OBJ \
  INIT=[.$(DEST)]INIT.OBJ \
  LOG=[.$(DEST)]LOG.OBJ \
diff --git a/src/Makefile.am b/src/Makefile.am
index 
9fd7d9a00f77d2c79946ec29544bba66b2e424d8..9ee473619fb9d08e4c2950ce99d749b9f0290779
 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -70,10 +70,6 @@ if OS_MSWINDOWS
 wget_SOURCES += mswindows.c mswindows.h
 endif
 
-if WITH_NTLM
-wget_SOURCES += http-ntlm.c http-ntlm.h
-endif
-
 if WITH_OPENSSL
 wget_SOURCES += openssl.c
 endif
diff --git a/src/build_info.c.in b/src/build_info.c.in
index 
c7493e9cb22977ac7593ec9fde7ab31da3d804b7..d957be84ae6beb9cd4ba367e3feb7462fe657920
 100644
--- a/src/build_info.c.in
+++ b/src/build_info.c.in
@@ -5,7 +5,6 @@ iri             defined ENABLE_IRI
 large-file      SIZEOF_OFF_T >= 8 || defined WINDOWS
 
 nls             defined ENABLE_NLS
-ntlm            defined ENABLE_NTLM
 opie            defined ENABLE_OPIE
 psl             defined HAVE_LIBPSL
 cares            defined HAVE_LIBCARES
diff --git a/src/http-ntlm.c b/src/http-ntlm.c
deleted file mode 100644
index 
df9603b0da76c4a5e24c6f75031d7ade920fab45..0000000000000000000000000000000000000000
--- a/src/http-ntlm.c
+++ /dev/null
@@ -1,618 +0,0 @@
-/* NTLM code.
-   Copyright (C) 2005-2011, 2015, 2018-2024, 2026 Free Software
-   Foundation, Inc.
-   Contributed by Daniel Stenberg.
-
-This file is part of GNU Wget.
-
-GNU Wget is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
-GNU Wget is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with Wget.  If not, see <http://www.gnu.org/licenses/>.
-
-Additional permission under GNU GPL version 3 section 7
-
-If you modify this program, or any covered work, by linking or
-combining it with the OpenSSL project's OpenSSL library (or a
-modified version of that library), containing parts covered by the
-terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
-grants you additional permission to convey the resulting work.
-Corresponding Source for a non-source form of such a combination
-shall include the source code for the parts of OpenSSL used as well
-as that of the covered work.  */
-
-#include "wget.h"
-
-/* NTLM details:
-
-   http://davenport.sourceforge.net/ntlm.html
-   http://www.innovation.ch/java/ntlm.html
-
-*/
-
-#include <stdio.h>
-#include <string.h>
-#include <stdlib.h>
-
-#include "utils.h"
-#include "http-ntlm.h"
-
-#ifdef HAVE_NETTLE
-# include <nettle/md4.h>
-# include <nettle/des.h>
-#else
-# include <openssl/des.h>
-# include <openssl/md4.h>
-# include <openssl/opensslv.h>
-
-# 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
-
-#endif
-
-/* Define this to make the type-3 message include the NT response message */
-#define USE_NTRESPONSES 1
-
-
-/* Flag bits definitions available at on
-   http://davenport.sourceforge.net/ntlm.html */
-
-#define NTLMFLAG_NEGOTIATE_OEM                   (1<<1)
-#define NTLMFLAG_NEGOTIATE_NTLM_KEY              (1<<9)
-
-/*
-  (*) = A "security buffer" is a triplet consisting of two shorts and one
-  long:
-
-  1. a 'short' containing the length of the buffer in bytes
-  2. a 'short' containing the allocated space for the buffer in bytes
-  3. a 'long' containing the offset to the start of the buffer from the
-     beginning of the NTLM message, in bytes.
-*/
-
-/* return true on success, false otherwise */
-bool
-ntlm_input (struct ntlmdata *ntlm, const char *header)
-{
-  if (0 != strncmp (header, "NTLM", 4))
-    return false;
-
-  header += 4;
-  while (*header && c_isspace(*header))
-    header++;
-
-  if (*header)
-    {
-      /* We got a type-2 message here:
-
-         Index   Description         Content
-         0       NTLMSSP Signature   Null-terminated ASCII "NTLMSSP"
-                                     (0x4e544c4d53535000)
-         8       NTLM Message Type   long (0x02000000)
-         12      Target Name         security buffer(*)
-         20      Flags               long
-         24      Challenge           8 bytes
-         (32)    Context (optional)  8 bytes (two consecutive longs)
-         (40)    Target Information  (optional) security buffer(*)
-         32 (48) start of data block
-      */
-      ssize_t size;
-      char buffer[48]; // decode 48 bytes needs ((48 + 2) / 3) * 4 + 1 bytes
-
-      DEBUGP (("Received a type-2 NTLM message.\n"));
-
-      size = wget_base64_decode (header, buffer, sizeof (buffer));
-      if (size < 0)
-        return false;           /* malformed base64 from server */
-
-      ntlm->state = NTLMSTATE_TYPE2; /* we got a type-2 */
-
-      if ((size_t) size >= sizeof (buffer))
-        /* the nonce of interest is index [24 .. 31], 8 bytes */
-        memcpy (ntlm->nonce, &buffer[24], 8);
-
-      /* at index decimal 20, there's a 32bit NTLM flag field */
-    }
-  else
-    {
-      if (ntlm->state == NTLMSTATE_LAST)
-        {
-          DEBUGP (("NTLM auth restarted.\n"));
-          /* no return, continue */
-        }
-      else if (ntlm->state == NTLMSTATE_TYPE3)
-        {
-          DEBUGP (("NTLM handshake rejected.\n"));
-          ntlm->state = NTLMSTATE_NONE;
-          return false;
-        }
-      else if (ntlm->state >= NTLMSTATE_TYPE1)
-        {
-          DEBUGP (("Unexpected empty NTLM message.\n"));
-          return false; /* this is an error */
-        }
-
-      DEBUGP (("Empty NTLM message, (re)starting transaction.\n"));
-      ntlm->state = NTLMSTATE_TYPE1; /* we should sent away a type-1 */
-    }
-
-  return true;
-}
-
-/*
- * Turns a 56 bit key into the 64 bit, odd parity key and sets the key.  The
- * key schedule ks is also set.
- */
-#ifdef HAVE_NETTLE
-static void
-setup_des_key(unsigned char *key_56,
-              struct des_ctx *des)
-{
-  unsigned char key[8];
-
-  key[0] = key_56[0];
-  key[1] = ((key_56[0] << 7) & 0xFF) | (key_56[1] >> 1);
-  key[2] = ((key_56[1] << 6) & 0xFF) | (key_56[2] >> 2);
-  key[3] = ((key_56[2] << 5) & 0xFF) | (key_56[3] >> 3);
-  key[4] = ((key_56[3] << 4) & 0xFF) | (key_56[4] >> 4);
-  key[5] = ((key_56[4] << 3) & 0xFF) | (key_56[5] >> 5);
-  key[6] = ((key_56[5] << 2) & 0xFF) | (key_56[6] >> 6);
-  key[7] =  (key_56[6] << 1) & 0xFF;
-
-  nettle_des_set_key(des, key);
-}
-#else
-static void
-setup_des_key(unsigned char *key_56,
-              DES_key_schedule DESKEYARG(ks))
-{
-  DES_cblock key;
-
-  key[0] = key_56[0];
-  key[1] = ((key_56[0] << 7) & 0xFF) | (key_56[1] >> 1);
-  key[2] = ((key_56[1] << 6) & 0xFF) | (key_56[2] >> 2);
-  key[3] = ((key_56[2] << 5) & 0xFF) | (key_56[3] >> 3);
-  key[4] = ((key_56[3] << 4) & 0xFF) | (key_56[4] >> 4);
-  key[5] = ((key_56[4] << 3) & 0xFF) | (key_56[5] >> 5);
-  key[6] = ((key_56[5] << 2) & 0xFF) | (key_56[6] >> 6);
-  key[7] =  (key_56[6] << 1) & 0xFF;
-
-  DES_set_odd_parity(&key);
-  DES_set_key(&key, ks);
-}
-#endif
-
- /*
-  * takes a 21 byte array and treats it as 3 56-bit DES keys. The
-  * 8 byte plaintext is encrypted with each key and the resulting 24
-  * bytes are stored in the results array.
-  */
-static void
-calc_resp(unsigned char *keys, unsigned char *plaintext, unsigned char 
*results)
-{
-#ifdef HAVE_NETTLE
-  struct des_ctx des;
-
-  setup_des_key(keys, &des);
-  nettle_des_encrypt(&des, 8, results, plaintext);
-
-  setup_des_key(keys + 7, &des);
-  nettle_des_encrypt(&des, 8, results + 8, plaintext);
-
-  setup_des_key(keys + 14, &des);
-  nettle_des_encrypt(&des, 8, results + 16, plaintext);
-#else
-  DES_key_schedule ks;
-
-  setup_des_key(keys, DESKEY(ks));
-  DES_ecb_encrypt((DES_cblock*) plaintext, (DES_cblock*) results,
-                  DESKEY(ks), DES_ENCRYPT);
-
-  setup_des_key(keys+7, DESKEY(ks));
-  DES_ecb_encrypt((DES_cblock*) plaintext, (DES_cblock*) (results+8),
-                  DESKEY(ks), DES_ENCRYPT);
-
-  setup_des_key(keys+14, DESKEY(ks));
-  DES_ecb_encrypt((DES_cblock*) plaintext, (DES_cblock*) (results+16),
-                  DESKEY(ks), DES_ENCRYPT);
-#endif
-}
-
-/*
- * Set up lanmanager and nt hashed passwords
- */
-static void
-mkhash(const char *password,
-       unsigned char *nonce,    /* 8 bytes */
-       unsigned char *lmresp    /* must fit 0x18 bytes */
-#ifdef USE_NTRESPONSES
-       , unsigned char *ntresp  /* must fit 0x18 bytes */
-#endif
-  )
-{
-  unsigned char lmbuffer[21];
-#ifdef USE_NTRESPONSES
-  unsigned char ntbuffer[21];
-#endif
-  unsigned char pw[14];
-  static const unsigned char magic[] = {
-    0x4B, 0x47, 0x53, 0x21, 0x40, 0x23, 0x24, 0x25
-  };
-  size_t i, len = strlen(password);
-
-  /* make it fit at least 14 bytes */
-
-  if (len > sizeof (pw))
-    len = sizeof (pw);
-
-  for (i = 0; i < len; i++)
-    pw[i] = (unsigned char) c_toupper (password[i]);
-
-  for (; i < sizeof (pw); i++)
-    pw[i] = 0;
-
-  {
-    /* create LanManager hashed password */
-#ifdef HAVE_NETTLE
-    struct des_ctx des;
-
-    setup_des_key(pw, &des);
-    nettle_des_encrypt(&des, 8, lmbuffer, magic);
-
-    setup_des_key(pw + 7, &des);
-    nettle_des_encrypt(&des, 8, lmbuffer + 8, magic);
-#else
-    DES_key_schedule ks;
-
-    setup_des_key(pw, DESKEY (ks));
-    DES_ecb_encrypt((DES_cblock *) magic, (DES_cblock *) lmbuffer,
-                    DESKEY (ks), DES_ENCRYPT);
-
-    setup_des_key(pw+7, DESKEY (ks));
-    DES_ecb_encrypt((DES_cblock *) magic, (DES_cblock *) (lmbuffer + 8),
-                    DESKEY (ks), DES_ENCRYPT);
-#endif
-
-    memset(lmbuffer + 16, 0, 5);
-  }
-  /* create LM responses */
-  calc_resp(lmbuffer, nonce, lmresp);
-
-#ifdef USE_NTRESPONSES
-  {
-#ifdef HAVE_NETTLE
-    struct md4_ctx MD4;
-#else
-    MD4_CTX MD4;
-#endif
-
-    unsigned char pw4[64];
-
-    len = strlen (password);
-
-    if (len > sizeof (pw4) / 2)
-      len = sizeof (pw4) / 2;
-
-    for (i = 0; i < len; i++) {
-      pw4[2 * i]     = (unsigned char) password[i];
-      pw4[2 * i + 1] = 0;
-    }
-
-#ifdef HAVE_NETTLE
-    nettle_md4_init(&MD4);
-    nettle_md4_update(&MD4, (unsigned) (2 * len), pw4);
-    nettle_md4_digest(&MD4, MD4_DIGEST_SIZE, ntbuffer);
-#else
-    /* create NT hashed password */
-    MD4_Init(&MD4);
-    MD4_Update(&MD4, pw4, 2 * len);
-    MD4_Final(ntbuffer, &MD4);
-#endif
-
-    memset(ntbuffer + 16, 0, 5);
-  }
-
-  calc_resp(ntbuffer, nonce, ntresp);
-#endif
-}
-
-#define SHORTPAIR(x) (char) ((x) & 0xff), (char) ((x) >> 8)
-#define LONGQUARTET(x) ((x) & 0xff), (((x) >> 8)&0xff), \
-  (((x) >>16)&0xff), ((x)>>24)
-
-/* this is for creating ntlm header output */
-char *
-ntlm_output (struct ntlmdata *ntlm, const char *user, const char *passwd,
-             bool *ready)
-{
-  const char *domain = ""; /* empty */
-  const char *host = ""; /* empty */
-  size_t domlen = strlen(domain);
-  size_t hostlen = strlen(host);
-  size_t hostoff; /* host name offset */
-  size_t domoff;  /* domain name offset */
-  size_t size;
-  char ntlmbuf[256]; /* enough, unless the host/domain is very long */
-
-  /* point to the address of the pointer that holds the string to sent to the
-     server, which is for a plain host or for a HTTP proxy */
-  char *output = NULL;
-
-  *ready = false;
-
-  /* not set means empty */
-  if(!user)
-    user="";
-
-  if(!passwd)
-    passwd="";
-
-  switch(ntlm->state) {
-  case NTLMSTATE_TYPE1:
-  case NTLMSTATE_NONE:
-  case NTLMSTATE_LAST:
-    hostoff = 32;
-    domoff = hostoff + hostlen;
-
-    DEBUGP (("Creating a type-1 NTLM message.\n"));
-
-    /* Create and send a type-1 message:
-
-    Index Description          Content
-    0     NTLMSSP Signature    Null-terminated ASCII "NTLMSSP"
-                               (0x4e544c4d53535000)
-    8     NTLM Message Type    long (0x01000000)
-    12    Flags                long
-    16    Supplied Domain      security buffer(*)
-    24    Supplied Workstation security buffer(*)
-    32    start of data block
-
-    */
-
-    snprintf (ntlmbuf, sizeof(ntlmbuf), "NTLMSSP%c"
-              "\x01%c%c%c" /* 32-bit type = 1 */
-              "%c%c%c%c"   /* 32-bit NTLM flag field */
-              "%c%c"  /* domain length */
-              "%c%c"  /* domain allocated space */
-              "%c%c"  /* domain name offset */
-              "%c%c"  /* 2 zeroes */
-              "%c%c"  /* host length */
-              "%c%c"  /* host allocated space */
-              "%c%c"  /* host name offset */
-              "%c%c"  /* 2 zeroes */
-              "%s"   /* host name */
-              "%s",  /* domain string */
-              0,     /* trailing zero */
-              0,0,0, /* part of type-1 long */
-
-              LONGQUARTET(
-                NTLMFLAG_NEGOTIATE_OEM|      /*   2 */
-                NTLMFLAG_NEGOTIATE_NTLM_KEY  /* 200 */
-                /* equals 0x0202 */
-                ),
-              SHORTPAIR(domlen),
-              SHORTPAIR(domlen),
-              SHORTPAIR(domoff),
-              0,0,
-              SHORTPAIR(hostlen),
-              SHORTPAIR(hostlen),
-              SHORTPAIR(hostoff),
-              0,0,
-              host, domain);
-
-    /* initial packet length */
-    size = 32 + hostlen + domlen;
-
-    output = xmalloc(5 + BASE64_LENGTH (size) + 1);
-    memcpy(output, "NTLM ", 5);
-    wget_base64_encode (ntlmbuf, size, output + 5);
-
-    break;
-
-  case NTLMSTATE_TYPE2:
-    /* We received the type-2 already, create a type-3 message:
-
-    Index   Description            Content
-    0       NTLMSSP Signature      Null-terminated ASCII "NTLMSSP"
-                                   (0x4e544c4d53535000)
-    8       NTLM Message Type      long (0x03000000)
-    12      LM/LMv2 Response       security buffer(*)
-    20      NTLM/NTLMv2 Response   security buffer(*)
-    28      Domain Name            security buffer(*)
-    36      User Name              security buffer(*)
-    44      Workstation Name       security buffer(*)
-    (52)    Session Key (optional) security buffer(*)
-    (60)    Flags (optional)       long
-    52 (64) start of data block
-
-    */
-
-  {
-    size_t lmrespoff;
-    size_t ntrespoff;
-    size_t useroff;
-    unsigned char lmresp[0x18]; /* fixed-size */
-#ifdef USE_NTRESPONSES
-    unsigned char ntresp[0x18]; /* fixed-size */
-#endif
-    const char *usr;
-    size_t userlen;
-
-    DEBUGP (("Creating a type-3 NTLM message.\n"));
-
-    usr = strchr(user, '\\');
-    if(!usr)
-      usr = strchr(user, '/');
-
-    if (usr) {
-      domain = user;
-      domlen = (size_t) (usr - domain);
-      usr++;
-    }
-    else
-      usr = user;
-    userlen = strlen(usr);
-
-    mkhash(passwd, &ntlm->nonce[0], lmresp
-#ifdef USE_NTRESPONSES
-           , ntresp
-#endif
-      );
-
-    domoff = 64; /* always */
-    useroff = domoff + domlen;
-    hostoff = useroff + userlen;
-    lmrespoff = hostoff + hostlen;
-    ntrespoff = lmrespoff + 0x18;
-
-    /* Create the big type-3 message binary blob */
-
-    snprintf (ntlmbuf, sizeof (ntlmbuf),
-              "NTLMSSP%c"
-              "\x03%c%c%c" /* type-3, 32 bits */
-
-              "%c%c%c%c" /* LanManager length + allocated space */
-              "%c%c" /* LanManager offset */
-              "%c%c" /* 2 zeroes */
-
-              "%c%c" /* NT-response length */
-              "%c%c" /* NT-response allocated space */
-              "%c%c" /* NT-response offset */
-              "%c%c" /* 2 zeroes */
-
-              "%c%c" /* domain length */
-              "%c%c" /* domain allocated space */
-              "%c%c" /* domain name offset */
-              "%c%c" /* 2 zeroes */
-
-              "%c%c" /* user length */
-              "%c%c" /* user allocated space */
-              "%c%c" /* user offset */
-              "%c%c" /* 2 zeroes */
-
-              "%c%c" /* host length */
-              "%c%c" /* host allocated space */
-              "%c%c" /* host offset */
-              "%c%c%c%c%c%c" /* 6 zeroes */
-
-              "\xff\xff" /* message length */
-              "%c%c" /* 2 zeroes */
-
-              "\x01\x82" /* flags */
-              "%c%c" /* 2 zeroes */
-
-              /* domain string */
-              /* user string */
-              /* host string */
-              /* LanManager response */
-              /* NT response */
-              ,
-              0, /* zero termination */
-              0, 0, 0, /* type-3 long, the 24 upper bits */
-
-              SHORTPAIR (0x18), /* LanManager response length, twice */
-              SHORTPAIR (0x18),
-              SHORTPAIR (lmrespoff),
-              0x0, 0x0,
-
-#ifdef USE_NTRESPONSES
-              SHORTPAIR (0x18), /* NT-response length, twice */
-              SHORTPAIR (0x18),
-#else
-              0x0, 0x0,
-              0x0, 0x0,
-#endif
-              SHORTPAIR (ntrespoff),
-              0x0, 0x0,
-
-              SHORTPAIR (domlen),
-              SHORTPAIR (domlen),
-              SHORTPAIR (domoff),
-              0x0, 0x0,
-
-              SHORTPAIR (userlen),
-              SHORTPAIR (userlen),
-              SHORTPAIR (useroff),
-              0x0, 0x0,
-
-              SHORTPAIR (hostlen),
-              SHORTPAIR (hostlen),
-              SHORTPAIR (hostoff),
-              0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
-
-              0x0, 0x0,
-
-              0x0, 0x0);
-
-    /* size is now 64 */
-    size=64;
-    ntlmbuf[62]=ntlmbuf[63]=0;
-
-    /* Make sure that the user and domain strings fit in the target buffer
-       before we copy them there. */
-    if((size + userlen + domlen) >= sizeof(ntlmbuf))
-      return NULL;
-
-    memcpy(&ntlmbuf[size], domain, domlen);
-    size += domlen;
-
-    memcpy(&ntlmbuf[size], usr, userlen);
-    size += userlen;
-
-    /* we append the binary hashes to the end of the blob */
-    if(size < (sizeof(ntlmbuf) - 0x18)) {
-      memcpy(&ntlmbuf[size], lmresp, 0x18);
-      size += 0x18;
-    }
-
-#ifdef USE_NTRESPONSES
-    if(size < (sizeof(ntlmbuf) - 0x18)) {
-      memcpy(&ntlmbuf[size], ntresp, 0x18);
-      size += 0x18;
-    }
-#endif
-
-    ntlmbuf[56] = (char) (size & 0xff);
-    ntlmbuf[57] = (char) (size >> 8);
-
-    /* convert the binary blob into base64 */
-    output = xmalloc(5 + BASE64_LENGTH (size) + 1);
-    memcpy(output, "NTLM ", 5);
-    wget_base64_encode (ntlmbuf, size, output + 5);
-
-    ntlm->state = NTLMSTATE_TYPE3; /* we sent a type-3 */
-    *ready = true;
-  }
-  break;
-
-  case NTLMSTATE_TYPE3:
-    /* connection is already authenticated,
-     * don't send a header in future requests */
-    *ready = true;
-    output = NULL;
-    break;
-  }
-
-  return output;
-}
diff --git a/src/http-ntlm.h b/src/http-ntlm.h
deleted file mode 100644
index 
5b47bac0c9f8b185be657729564a0dd3b319dc75..0000000000000000000000000000000000000000
--- a/src/http-ntlm.h
+++ /dev/null
@@ -1,53 +0,0 @@
-#ifndef __HTTP_NTLM_H
-#define __HTTP_NTLM_H
-/* Declarations for http_ntlm.c
-   Copyright (C) 1995-1997, 2000, 2007-2011, 2015, 2018-2024, 2026 Free
-   Software Foundation, Inc.
-   Contributed by Daniel Stenberg.
-
-This file is part of GNU Wget.
-
-GNU Wget is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
-
-GNU Wget is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with Wget.  If not, see <http://www.gnu.org/licenses/>.
-
-Additional permission under GNU GPL version 3 section 7
-
-If you modify this program, or any covered work, by linking or
-combining it with the OpenSSL project's OpenSSL library (or a
-modified version of that library), containing parts covered by the
-terms of the OpenSSL or SSLeay licenses, the Free Software Foundation
-grants you additional permission to convey the resulting work.
-Corresponding Source for a non-source form of such a combination
-shall include the source code for the parts of OpenSSL used as well
-as that of the covered work.  */
-
-typedef enum {
-  NTLMSTATE_NONE,
-  NTLMSTATE_TYPE1,
-  NTLMSTATE_TYPE2,
-  NTLMSTATE_TYPE3,
-  NTLMSTATE_LAST
-} wgetntlm;
-
-/* Struct used for NTLM challenge-response authentication */
-struct ntlmdata {
-  wgetntlm state;
-  unsigned char nonce[8];
-};
-
-/* this is for ntlm header input */
-bool ntlm_input (struct ntlmdata *, const char *);
-
-/* this is for creating ntlm header output */
-char *ntlm_output (struct ntlmdata *, const char *, const char *, bool *);
-#endif
diff --git a/src/http.c b/src/http.c
index 
570b72a7274d1ea1261b087cae433abd576d8df0..7bced7890b958c2adb349c6e6877e106d0679b8e
 100644
--- a/src/http.c
+++ b/src/http.c
@@ -52,9 +52,6 @@ as that of the covered work.  */
 #ifdef HAVE_SSL
 # include "ssl.h"
 #endif
-#ifdef ENABLE_NTLM
-# include "http-ntlm.h"
-#endif
 #include "cookies.h"
 #include "md5.h"
 #include "convert.h"
@@ -1371,17 +1368,6 @@ static struct {
 
   /* Whether a ssl handshake has occurred on this connection.  */
   bool ssl;
-
-  /* Whether the connection was authorized.  This is only done by
-     NTLM, which authorizes *connections* rather than individual
-     requests.  (That practice is peculiar for HTTP, but it is a
-     useful optimization.)  */
-  bool authorized;
-
-#ifdef ENABLE_NTLM
-  /* NTLM data of the current connection.  */
-  struct ntlmdata ntlm;
-#endif
 } pconn;
 
 /* Mark the persistent connection as invalid and free the resources it
@@ -1432,7 +1418,6 @@ register_persistent (const char *host, int port, int fd, 
bool ssl)
   pconn.host = xstrdup (host);
   pconn.port = port;
   pconn.ssl = ssl;
-  pconn.authorized = false;
 
   DEBUGP (("Registered socket %d for persistent reuse.\n", fd));
 }
@@ -2099,11 +2084,6 @@ establish_connection (const struct url *u, const struct 
url **conn_ref,
                         quotearg_style (escape_quoting_style, pconn.host),
                         pconn.port);
           DEBUGP (("Reusing fd %d.\n", sock));
-          if (pconn.authorized)
-            /* If the connection is already authorized, the "Basic"
-               authorization added by code above is unnecessary and
-               only hurts us.  */
-            request_remove_header (req, "Authorization");
         }
       else if (host_lookup_failed)
         {
@@ -2375,13 +2355,12 @@ check_file_output (const struct url *u, struct 
http_stat *hs,
 
 static uerr_t
 check_auth (const struct url *u, char *user, char *passwd, struct response 
*resp,
-            struct request *req, bool *ntlm_seen_ref, bool *retry,
+            struct request *req, bool *retry,
             bool *basic_auth_finished_ref, bool *auth_finished_ref)
 {
   uerr_t auth_err = RETROK;
   bool basic_auth_finished = *basic_auth_finished_ref;
   bool auth_finished = *auth_finished_ref;
-  bool ntlm_seen = *ntlm_seen_ref;
   char buf[256], *tmp = NULL;
 
   *retry = false;
@@ -2394,10 +2373,10 @@ check_auth (const struct url *u, char *user, char 
*passwd, struct response *resp
       int wapos;
       const char *www_authenticate = NULL;
       const char *wabeg, *waend;
-      const char *digest = NULL, *basic = NULL, *ntlm = NULL;
+      const char *digest = NULL, *basic = NULL;
 
-      for (wapos = 0; !ntlm
-             && (wapos = resp_header_locate (resp, "WWW-Authenticate", wapos,
+      for (wapos = 0;
+             (wapos = resp_header_locate (resp, "WWW-Authenticate", wapos,
                                              &wabeg, &waend)) != -1;
            ++wapos)
         {
@@ -2417,7 +2396,7 @@ check_auth (const struct url *u, char *user, char 
*passwd, struct response *resp
 
           www_authenticate = tmp;
 
-          for (;!ntlm;)
+          for (;;)
             {
               /* extract the auth-scheme */
               while (c_isspace (*www_authenticate)) www_authenticate++;
@@ -2431,12 +2410,7 @@ check_auth (const struct url *u, char *user, char 
*passwd, struct response *resp
 
               if (known_authentication_scheme_p (name.b, name.e))
                 {
-                  if (BEGINS_WITH (name.b, "NTLM"))
-                    {
-                      ntlm = name.b;
-                      break; /* this is the most secure challenge, stop here */
-                    }
-                  else if (!digest && BEGINS_WITH (name.b, "Digest"))
+                  if (!digest && BEGINS_WITH (name.b, "Digest"))
                     digest = name.b;
                   else if (!basic && BEGINS_WITH (name.b, "Basic"))
                     basic = name.b;
@@ -2453,7 +2427,7 @@ check_auth (const struct url *u, char *user, char 
*passwd, struct response *resp
             }
         }
 
-      if (!basic && !digest && !ntlm)
+      if (!basic && !digest)
         {
           /* If the authentication header is missing or
              unrecognized, there's no sense in retrying.  */
@@ -2468,9 +2442,7 @@ check_auth (const struct url *u, char *user, char 
*passwd, struct response *resp
           auth_stat = xmalloc (sizeof (uerr_t));
           *auth_stat = RETROK;
 
-          if (ntlm)
-            www_authenticate = ntlm;
-          else if (digest)
+          if (digest)
             www_authenticate = digest;
           else
             www_authenticate = basic;
@@ -2491,9 +2463,7 @@ check_auth (const struct url *u, char *user, char 
*passwd, struct response *resp
             {
               request_set_header (req, "Authorization", value, rel_value);
 
-              if (BEGINS_WITH (www_authenticate, "NTLM"))
-                ntlm_seen = true;
-              else if (!u->user && BEGINS_WITH (www_authenticate, "Basic"))
+              if (!u->user && BEGINS_WITH (www_authenticate, "Basic"))
                 {
                   /* Need to register this host as using basic auth,
                    * so we automatically send creds next time. */
@@ -2519,7 +2489,6 @@ check_auth (const struct url *u, char *user, char 
*passwd, struct response *resp
  cleanup:
    if (tmp != buf)
      xfree (tmp);
-  *ntlm_seen_ref = ntlm_seen;
   *basic_auth_finished_ref = basic_auth_finished;
   *auth_finished_ref = auth_finished;
   return auth_err;
@@ -3195,9 +3164,6 @@ gethttp (const struct url *u, struct url *original_url, 
struct http_stat *hs,
    * mechanisms. */
   bool basic_auth_finished = false;
 
-  /* Whether NTLM authentication is used for this request. */
-  bool ntlm_seen = false;
-
   /* Whether our connection to the remote host is through SSL.  */
   bool using_ssl = false;
 
@@ -3620,11 +3586,9 @@ gethttp (const struct url *u, struct url *original_url, 
struct http_stat *hs,
             CLOSE_INVALIDATE (sock);
         }
 
-      pconn.authorized = false;
-
       {
         auth_err = check_auth (u, user, passwd, resp, req,
-                               &ntlm_seen, &retry,
+                               &retry,
                                &basic_auth_finished,
                                &auth_finished);
         if (auth_err == RETROK && retry)
@@ -3641,12 +3605,6 @@ gethttp (const struct url *u, struct url *original_url, 
struct http_stat *hs,
         retval = auth_err;
       goto cleanup;
     }
-  else /* statcode != HTTP_STATUS_UNAUTHORIZED */
-    {
-      /* Kludge: if NTLM is used, mark the TCP connection as authorized. */
-      if (ntlm_seen)
-        pconn.authorized = true;
-    }
 
   {
     uerr_t ret = check_file_output (u, hs, resp, hdrval, sizeof hdrval);
@@ -4995,13 +4953,7 @@ http_atotm (const char *time_string)
 
    * `Digest' scheme, added by Junio Hamano <[email protected]>,
    consisting of answering to the server's challenge with the proper
-   MD5 digests.
-
-   * `NTLM' ("NT Lan Manager") scheme, based on code written by Daniel
-   Stenberg for libcurl.  Like digest, NTLM is based on a
-   challenge-response mechanism, but unlike digest, it is non-standard
-   (authenticates TCP connections rather than requests), undocumented
-   and Microsoft-specific.  */
+   MD5 digests.  */
 
 /* Create the authentication header contents for the `Basic' scheme.
    This is done by encoding the string "USER:PASS" to base64 and
@@ -5272,9 +5224,6 @@ known_authentication_scheme_p (const char *hdrbeg, const 
char *hdrend)
   return STARTS ("Basic", hdrbeg, hdrend)
 #ifdef ENABLE_DIGEST
     || STARTS ("Digest", hdrbeg, hdrend)
-#endif
-#ifdef ENABLE_NTLM
-    || STARTS ("NTLM", hdrbeg, hdrend)
 #endif
     ;
 }
@@ -5302,15 +5251,6 @@ create_authorization_line (const char *au, const char 
*user,
     case 'D':                   /* Digest */
       *finished = true;
       return digest_authentication_encode (au, user, passwd, method, path, 
auth_err);
-#endif
-#ifdef ENABLE_NTLM
-    case 'N':                   /* NTLM */
-      if (!ntlm_input (&pconn.ntlm, au))
-        {
-          *finished = true;
-          return NULL;
-        }
-      return ntlm_output (&pconn.ntlm, user, passwd, finished);
 #endif
     default:
       /* We shouldn't get here -- this function should be only called
diff --git a/vms/DESCRIP.MMS b/vms/DESCRIP.MMS
index 
11c9fd8a8bf310929f76e98bba1b0943ef72b7a3..5248593691c3a6cff2b9c09895eeffa7e070123e
 100644
--- a/vms/DESCRIP.MMS
+++ b/vms/DESCRIP.MMS
@@ -20,7 +20,7 @@
 #                   Link with /DEBUG /TRACEBACK.
 #                   (Default is /NOTRACEBACK.)
 #
-#    HPSSL=1        Enable HTTPS (and NTLM) support using HP SSL.
+#    HPSSL=1        Enable HTTPS support using HP SSL.
 #
 #    LARGE=1        Enable large-file (>2GB) support.  Non-VAX only.
 #
@@ -42,7 +42,7 @@
 #                   source kit was extracted using VMSTAR with the
 #                   /UNDERDOT ("-u") option.
 #
-#    OSSL=1         Enable HTTPS (and NTLM) support using OpenSSL.
+#    OSSL=1         Enable HTTPS support using OpenSSL.
 #
 #
 # The default target, ALL, builds all the product executables.
diff --git a/vms/DESCRIP_SRC_CMN.MMS b/vms/DESCRIP_SRC_CMN.MMS
index 
3f4beaf0230dba297021c8e2f433d679b9f08113..ea2bcf04ccc92b9680ac91fa65844545cdff2f13
 100644
--- a/vms/DESCRIP_SRC_CMN.MMS
+++ b/vms/DESCRIP_SRC_CMN.MMS
@@ -87,14 +87,14 @@ CDEFS_LARGE =
 .ENDIF                          # LARGE [else]
 
 .IFDEF HPSSL                    # HPSSL
-CDEFS_SSL = , "HAVE_SSL", "ENABLE_NTLM"
+CDEFS_SSL = , "HAVE_SSL"
 SSL_LINK_OPT = , [-.VMS]WGET_SSL_HP.OPT /OPTIONS
 .IFDEF OSSL                         # OSSL
 HPSSL_OSSL = 1
 .ENDIF                              # OSSL
 .ELSE                           # HPSSL
 .IFDEF OSSL                         # OSSL
-CDEFS_SSL = , "HAVE_LIBSSL", "ENABLE_NTLM"
+CDEFS_SSL = , "HAVE_LIBSSL"
 SSL_LINK_OPT = , [-.VMS]WGET_SSL_O.OPT /OPTIONS
 .ELSE                               # OSSL
 CDEFS_SSL =
diff --git a/vms/config.h_vms b/vms/config.h_vms
index 
b78e4e3aed277b42a0603900f3558f7c199b9f7e..5f4421a32bc55fe98a231d1e5868df260fc4af41
 100644
--- a/vms/config.h_vms
+++ b/vms/config.h_vms
@@ -49,9 +49,6 @@
    language is requested. */
 /* #undef ENABLE_NLS */
 
-/* Define if you want the NTLM authorization support compiled in. */
-/* #undef ENABLE_NTLM */
-
 /* Define if you want the Opie support for FTP compiled in. */
 #define ENABLE_OPIE 1
 
-- 
2.43.0



Reply via email to