Background information:

https://sourceware.org/ml/libc-alpha/2017-08/msg01257.html
https://fedoraproject.org/wiki/Changes/Replace_glibc_libcrypt_with_libxcrypt

Upstream-Status: Submitted [libc-alpha@sourceware.org]
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>

From: Zack Weinberg <zackw@panix.com>
Subject: [PATCH] Deprecate libcrypt and don't build it by default

Back in June, Björn Esser proposed to add OpenBSD-compatible bcrypt
support to our implementation of crypt(3), and Zack Weinberg replied
that it might actually make more sense to _remove_ libcrypt from
glibc, freeing up libcrypt.so.1 and crypt.h to be provided by a
separate project that could move faster.  (For instance, libxcrypt:
https://github.com/besser82/libxcrypt)

This patch disables build and installation of libcrypt by default.  It
can be re-enabled with --enable-obsolete-crypt to configure.  Unlike
libnsl, we do *not* install a runtime shared library; that's left to
the replacement.  (Unlike the SunRPC situation, I think we can
probably drop this code altogether in a release or two.)

The function prototypes for crypt and encrypt are removed from
unistd.h, and the function prototype for setkey is removed from
stdlib.h; they do *not* come back with --enable-obsolete-crypt.  This
means glibc no longer provides the POSIX CRYPT option, and the macro
_XOPEN_CRYPT is also removed from unistd.h to indicate that.
(_SC_XOPEN_CRYPT is still defined, but sysconf(_SC_XOPEN_CRYPT) will
return -1 at runtime.)  These functions are also unconditionally
removed from conform/data/{stdlib,unistd}.h-data.

	* posix/unistd.h (_XOPEN_CRYPT, crypt, encrypt): Don't declare.
	* stdlib/stdlib.h (setkey): Don't declare.

	* configure.ac (--enable-obsolete-crypt): New configure option.
	* configure: Regenerate.
	* config.make.in (build-obsolete-crypt): New makefile variable.
	* crypt/Banner: Delete file.
	* crypt/Makefile: Don't build anything unless
	$(build-obsolete-crypt) is 'yes'.
	* sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile: Only add things
	to libcrypt-sysdep_routines when $(build-obsolete-crypt) is 'yes'.
	* sysdeps/sparc/sparc64/multiarch/Makefile: Likewise.
	* sysdeps/unix/sysv/linux/arm/Makefile: Likewise.

	* conform/Makefile: Only include libcrypt.a in linknamespace tests
	when $(build-obsolete-crypt) is 'yes'.
	* conform/data/stdlib.h-data (setkey): Don't expect.
	* conform/data/unistd.h-data (crypt, encrypt): Don't expect.
	* elf/Makefile: Only perform various tests of libcrypt.so/libcrypt.a
	when $(build-obsolete-crypt) is 'yes'.
	* elf/tst-linkall-static.c: Don't include crypt.h when USE_CRYPT
	is false.
---
 NEWS                                             | 18 ++++++++++++++++++
 config.make.in                                   |  1 +
 configure                                        | 13 +++++++++++++
 configure.ac                                     |  8 ++++++++
 conform/Makefile                                 | 14 ++++++++++----
 conform/data/stdlib.h-data                       |  3 ---
 conform/data/unistd.h-data                       |  6 ------
 crypt/Makefile                                   |  5 +++++
 elf/Makefile                                     | 16 ++++++++++++----
 elf/tst-linkall-static.c                         |  2 ++
 posix/unistd.h                                   | 16 ----------------
 stdlib/stdlib.h                                  |  6 ------
 sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile |  2 ++
 sysdeps/sparc/sparc64/multiarch/Makefile         |  2 ++
 sysdeps/unix/sysv/linux/arm/Makefile             |  2 ++
 15 files changed, 75 insertions(+), 39 deletions(-)

diff --git a/config.make.in b/config.make.in
index 9e5e24b2c6..8fe610d04d 100644
--- a/config.make.in
+++ b/config.make.in
@@ -82,6 +82,7 @@ mach-interface-list = @mach_interface_list@
 
 experimental-malloc = @experimental_malloc@
 
+build-obsolete-crypt = @build_obsolete_crypt@
 nss-crypt = @libc_cv_nss_crypt@
 static-nss-crypt = @libc_cv_static_nss_crypt@
 
diff --git a/configure b/configure
index 7a8bd3f817..46f6bd7f86 100755
--- a/configure
+++ b/configure
@@ -672,6 +672,7 @@ base_machine
 have_tunables
 build_pt_chown
 build_nscd
+build_obsolete_crypt
 build_obsolete_nsl
 link_obsolete_rpc
 libc_cv_static_nss_crypt
@@ -782,6 +783,7 @@ enable_experimental_malloc
 enable_nss_crypt
 enable_obsolete_rpc
 enable_obsolete_nsl
+enable_obsolete_crypt
 enable_systemtap
 enable_build_nscd
 enable_nscd
@@ -1453,6 +1455,7 @@ Optional Features:
                           link-time usage
   --enable-obsolete-nsl   build and install the obsolete libnsl library and
                           depending NSS modules
+  --enable-obsolete-crypt build and install the obsolete libcrypt library
   --enable-systemtap      enable systemtap static probe points [default=no]
   --disable-build-nscd    disable building and installing the nscd daemon
   --disable-nscd          library functions will not contact the nscd daemon
@@ -3632,6 +3635,16 @@ if test "$build_obsolete_nsl" = yes; then
 
 fi
 
+# Check whether --enable-obsolete-crypt was given.
+if test "${enable_obsolete_crypt+set}" = set; then :
+  enableval=$enable_obsolete_crypt; build_obsolete_crypt=$enableval
+else
+  build_obsolete_crypt=no
+fi
+
+
+
+
 # Check whether --enable-systemtap was given.
 if test "${enable_systemtap+set}" = set; then :
   enableval=$enable_systemtap; systemtap=$enableval
diff --git a/configure.ac b/configure.ac
index ca1282a6b3..0142353740 100644
--- a/configure.ac
+++ b/configure.ac
@@ -378,6 +378,14 @@ if test "$build_obsolete_nsl" = yes; then
   AC_DEFINE(LINK_OBSOLETE_NSL)
 fi
 
+AC_ARG_ENABLE([obsolete-crypt],
+              AC_HELP_STRING([--enable-obsolete-crypt],
+                             [build and install the obsolete libcrypt library]),
+              [build_obsolete_crypt=$enableval],
+              [build_obsolete_crypt=no])
+AC_SUBST(build_obsolete_crypt)
+
+
 AC_ARG_ENABLE([systemtap],
               [AS_HELP_STRING([--enable-systemtap],
 	       [enable systemtap static probe points @<:@default=no@:>@])],
diff --git a/conform/Makefile b/conform/Makefile
index 864fdeca21..5ef474fb24 100644
--- a/conform/Makefile
+++ b/conform/Makefile
@@ -193,22 +193,28 @@ linknamespace-libs-thr = $(linknamespace-libs-isoc) \
 			 $(common-objpfx)rt/librt.a $(static-thread-library)
 linknamespace-libs-posix = $(linknamespace-libs-thr) \
 			   $(common-objpfx)dlfcn/libdl.a
-linknamespace-libs-xsi = $(linknamespace-libs-posix) \
-			 $(common-objpfx)crypt/libcrypt.a
+linknamespace-libs-xsi = $(linknamespace-libs-posix)
 linknamespace-libs-ISO = $(linknamespace-libs-isoc)
 linknamespace-libs-ISO99 = $(linknamespace-libs-isoc)
 linknamespace-libs-ISO11 = $(linknamespace-libs-isoc)
-linknamespace-libs-XPG4 = $(linknamespace-libs-isoc) \
-			  $(common-objpfx)crypt/libcrypt.a
+linknamespace-libs-XPG4 = $(linknamespace-libs-isoc)
 linknamespace-libs-XPG42 = $(linknamespace-libs-XPG4)
 linknamespace-libs-POSIX = $(linknamespace-libs-thr)
 linknamespace-libs-UNIX98 = $(linknamespace-libs-xsi)
 linknamespace-libs-XOPEN2K = $(linknamespace-libs-xsi)
 linknamespace-libs-POSIX2008 = $(linknamespace-libs-posix)
 linknamespace-libs-XOPEN2K8 = $(linknamespace-libs-xsi)
+
+ifeq ($(build-obsolete-crypt),yes)
+linknamespace-libs-xsi += $(common-objpfx)crypt/libcrypt.a
+linknamespace-libs-XPG4 += $(common-objpfx)crypt/libcrypt.a
+endif
+
 linknamespace-libs = $(foreach std,$(conformtest-standards),\
 				   $(linknamespace-libs-$(std)))
 
+
+
 $(linknamespace-symlist-stdlibs-tests): $(objpfx)symlist-stdlibs-%: \
 					$(linknamespace-libs)
 	LC_ALL=C $(READELF) -W -s $(linknamespace-libs-$*) > $@; \
diff --git a/conform/data/stdlib.h-data b/conform/data/stdlib.h-data
index d8fcccc2fb..6913828196 100644
--- a/conform/data/stdlib.h-data
+++ b/conform/data/stdlib.h-data
@@ -149,9 +149,6 @@ function {unsigned short int*} seed48 (unsigned short int[3])
 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined XPG4 && !defined XPG42 && !defined UNIX98
 function int setenv (const char*, const char*, int)
 #endif
-#if !defined ISO && !defined ISO99 && !defined ISO11 && !defined POSIX && !defined POSIX2008
-function void setkey (const char*)
-#endif
 #if !defined ISO && !defined ISO99 && !defined ISO11 && !defined XPG4 && !defined POSIX && !defined POSIX2008
 function {char*} setstate (char*)
 #endif
diff --git a/conform/data/unistd.h-data b/conform/data/unistd.h-data
index ddf4f25132..aa070528e8 100644
--- a/conform/data/unistd.h-data
+++ b/conform/data/unistd.h-data
@@ -437,9 +437,6 @@ function int chroot (const char*)
 function int chown (const char*, uid_t, gid_t)
 function int close (int)
 function size_t confstr (int, char*, size_t)
-#if !defined POSIX && !defined POSIX2008
-function {char*} crypt (const char*, const char*)
-#endif
 #if defined XPG4 || defined XPG42 || defined UNIX98
 function {char*} ctermid (char*)
 function {char*} cuserid (char*)
@@ -449,9 +446,6 @@ allow cuserid
 #endif
 function int dup (int)
 function int dup2 (int, int)
-#if !defined POSIX && !defined POSIX2008
-function void encrypt (char[64], int)
-#endif
 function int execl (const char*, const char*, ...)
 function int execle (const char*, const char*, ...)
 function int execlp (const char*, const char*, ...)
diff --git a/crypt/Makefile b/crypt/Makefile
index 303800df73..024ec2c6ab 100644
--- a/crypt/Makefile
+++ b/crypt/Makefile
@@ -22,6 +22,8 @@ subdir	:= crypt
 
 include ../Makeconfig
 
+ifeq ($(build-obsolete-crypt),yes)
+
 headers := crypt.h
 
 extra-libs := libcrypt
@@ -52,9 +54,11 @@ tests += md5test sha256test sha512test
 # machine over a minute.
 xtests = md5test-giant
 endif
+endif
 
 include ../Rules
 
+ifeq ($(build-obsolete-crypt),yes)
 ifneq ($(nss-crypt),yes)
 md5-routines := md5 $(filter md5%,$(libcrypt-sysdep_routines))
 sha256-routines := sha256 $(filter sha256%,$(libcrypt-sysdep_routines))
@@ -71,3 +75,4 @@ $(addprefix $(objpfx),$(tests)): $(objpfx)libcrypt.so
 else
 $(addprefix $(objpfx),$(tests)): $(objpfx)libcrypt.a
 endif
+endif
diff --git a/elf/Makefile b/elf/Makefile
index 2a432d8bee..366f7b80ec 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -385,15 +385,19 @@ $(objpfx)tst-_dl_addr_inside_object: $(objpfx)dl-addr-obj.os
 CFLAGS-tst-_dl_addr_inside_object.c += $(PIE-ccflag)
 endif
 
-# By default tst-linkall-static should try to use crypt routines to test
-# static libcrypt use.
-CFLAGS-tst-linkall-static.c += -DUSE_CRYPT=1
+ifeq ($(build-obsolete-crypt),yes)
+# If the libcrypt library is being built, tst-linkall-static should
+# try to use crypt routines to test static libcrypt use.
+CFLAGS-tst-linkall-static.c = -DUSE_CRYPT=1
 # However, if we are using NSS crypto and we don't have a static
 # library, then we exclude the use of crypt functions in the test.
 # We similarly exclude libcrypt.a from the static link (see below).
 ifeq (yesno,$(nss-crypt)$(static-nss-crypt))
 CFLAGS-tst-linkall-static.c += -UUSE_CRYPT -DUSE_CRYPT=0
 endif
+else
+CFLAGS-tst-linkall-static.c = -DUSE_CRYPT=0
+endif
 
 include ../Rules
 
@@ -1113,8 +1117,10 @@ localplt-built-dso := $(addprefix $(common-objpfx),\
 				  rt/librt.so \
 				  dlfcn/libdl.so \
 				  resolv/libresolv.so \
-				  crypt/libcrypt.so \
 		       )
+ifeq ($(build-obsolete-crypt),yes)
+localplt-built-dso += $(addprefix $(common-objpfx), crypt/libcrypt.so)
+endif
 ifeq ($(build-mathvec),yes)
 localplt-built-dso += $(addprefix $(common-objpfx), mathvec/libmvec.so)
 endif
@@ -1395,6 +1401,7 @@ $(objpfx)tst-linkall-static: \
   $(common-objpfx)resolv/libanl.a \
   $(static-thread-library)
 
+ifeq ($(build-obsolete-crypt),yes)
 # If we are using NSS crypto and we have the ability to link statically
 # then we include libcrypt.a, otherwise we leave out libcrypt.a and
 # link as much as we can into the tst-linkall-static test.  This assumes
@@ -1410,6 +1417,7 @@ ifeq (no,$(nss-crypt))
 $(objpfx)tst-linkall-static: \
   $(common-objpfx)crypt/libcrypt.a
 endif
+endif
 
 # The application depends on the DSO, and the DSO loads the plugin.
 # The plugin also depends on the DSO. This creates the circular
diff --git a/elf/tst-linkall-static.c b/elf/tst-linkall-static.c
index e8df38f74e..0ffae7c723 100644
--- a/elf/tst-linkall-static.c
+++ b/elf/tst-linkall-static.c
@@ -18,7 +18,9 @@
 
 #include <math.h>
 #include <pthread.h>
+#if USE_CRYPT
 #include <crypt.h>
+#endif
 #include <resolv.h>
 #include <dlfcn.h>
 #include <utmp.h>
diff --git a/posix/unistd.h b/posix/unistd.h
index 4d149f9945..e75ce4d4ec 100644
--- a/posix/unistd.h
+++ b/posix/unistd.h
@@ -107,9 +107,6 @@ __BEGIN_DECLS
 /* The X/Open Unix extensions are available.  */
 #define _XOPEN_UNIX	1
 
-/* Encryption is present.  */
-#define	_XOPEN_CRYPT	1
-
 /* The enhanced internationalization capabilities according to XPG4.2
    are present.  */
 #define	_XOPEN_ENH_I18N	1
@@ -1118,20 +1115,7 @@ ssize_t copy_file_range (int __infd, __off64_t *__pinoff,
 extern int fdatasync (int __fildes);
 #endif /* Use POSIX199309 */
 
-
-/* XPG4.2 specifies that prototypes for the encryption functions must
-   be defined here.  */
 #ifdef	__USE_XOPEN
-/* Encrypt at most 8 characters from KEY using salt to perturb DES.  */
-extern char *crypt (const char *__key, const char *__salt)
-     __THROW __nonnull ((1, 2));
-
-/* Encrypt data in BLOCK in place if EDFLAG is zero; otherwise decrypt
-   block in place.  */
-extern void encrypt (char *__glibc_block, int __edflag)
-     __THROW __nonnull ((1));
-
-
 /* Swab pairs bytes in the first N bytes of the area pointed to by
    FROM and copy the result to TO.  The value of TO must not be in the
    range [FROM - N + 1, FROM - 1].  If N is odd the first byte in FROM
diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h
index 6b1ead31e0..8e23e93557 100644
--- a/stdlib/stdlib.h
+++ b/stdlib/stdlib.h
@@ -958,12 +958,6 @@ extern int getsubopt (char **__restrict __optionp,
 #endif
 
 
-#ifdef __USE_XOPEN
-/* Setup DES tables according KEY.  */
-extern void setkey (const char *__key) __THROW __nonnull ((1));
-#endif
-
-
 /* X/Open pseudo terminal handling.  */
 
 #ifdef __USE_XOPEN2KXSI
diff --git a/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile b/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile
index a6d08f3a00..d8b8297fb0 100644
--- a/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile
+++ b/sysdeps/sparc/sparc32/sparcv9/multiarch/Makefile
@@ -1,6 +1,8 @@
 ifeq ($(subdir),crypt)
+ifeq ($(build-obsolete-crypt),yes)
 libcrypt-sysdep_routines += md5-crop sha256-crop sha512-crop
 endif
+endif
 
 ifeq ($(subdir),locale)
 localedef-aux += md5-crop
diff --git a/sysdeps/sparc/sparc64/multiarch/Makefile b/sysdeps/sparc/sparc64/multiarch/Makefile
index eaf758e7aa..0198f9886f 100644
--- a/sysdeps/sparc/sparc64/multiarch/Makefile
+++ b/sysdeps/sparc/sparc64/multiarch/Makefile
@@ -1,6 +1,8 @@
 ifeq ($(subdir),crypt)
+ifeq ($(build-obsolete-crypt),yes)
 libcrypt-sysdep_routines += md5-crop sha256-crop sha512-crop
 endif
+endif
 
 ifeq ($(subdir),locale)
 localedef-aux += md5-crop
diff --git a/sysdeps/unix/sysv/linux/arm/Makefile b/sysdeps/unix/sysv/linux/arm/Makefile
index 4adc35de04..6cab4f3a31 100644
--- a/sysdeps/unix/sysv/linux/arm/Makefile
+++ b/sysdeps/unix/sysv/linux/arm/Makefile
@@ -19,8 +19,10 @@ endif
 # Add a syscall function to each library that needs one.
 
 ifeq ($(subdir),crypt)
+ifeq ($(build-obsolete-crypt),yes)
 libcrypt-sysdep_routines += libc-do-syscall
 endif
+endif
 
 ifeq ($(subdir),rt)
 librt-sysdep_routines += libc-do-syscall
-- 
2.16.0

