changeset 6603:9eefb38f0005

Internal md5 and sha1 implementations are now always used. This reduces the number of moving parts in ABI compatibility checks. Additionally, it also allows to use OpenSSL in FIPS mode while still using md5 for non-security tasks.
author Maxim Dounin <mdounin@mdounin.ru>
date Thu, 30 Jun 2016 18:57:39 +0300
parents bcd442b585f0
children 0e0adbbc8752
files auto/cc/acc auto/cc/clang auto/cc/gcc auto/cc/icc auto/cc/sunc auto/lib/conf auto/lib/make auto/lib/md5/conf auto/lib/md5/make auto/lib/md5/makefile.bcc auto/lib/md5/makefile.msvc auto/lib/md5/makefile.owc auto/lib/sha1/conf auto/lib/sha1/make auto/lib/sha1/makefile.bcc auto/lib/sha1/makefile.msvc auto/lib/sha1/makefile.owc auto/module auto/modules auto/options auto/summary src/core/ngx_md5.c src/core/ngx_md5.h src/core/ngx_module.h src/core/ngx_sha1.c src/core/ngx_sha1.h
diffstat 26 files changed, 39 insertions(+), 664 deletions(-) [+]
line wrap: on
line diff
--- a/auto/cc/acc	Wed Jun 29 14:30:00 2016 +0300
+++ b/auto/cc/acc	Thu Jun 30 18:57:39 2016 +0300
@@ -12,4 +12,3 @@
 
 PCRE_OPT="$PCRE_OPT -Ae"
 ZLIB_OPT="$ZLIB_OPT -Ae"
-MD5_OPT="$MD5_OPT -Ae"
--- a/auto/cc/clang	Wed Jun 29 14:30:00 2016 +0300
+++ b/auto/cc/clang	Thu Jun 30 18:57:39 2016 +0300
@@ -66,12 +66,6 @@
     PCRE_OPT="$PCRE_OPT -pipe"
 fi
 
-if [ ".$MD5_OPT" = "." ]; then
-    MD5_OPT="-O2 -pipe $CPU_OPT"
-else
-    MD5_OPT="$MD5_OPT -pipe"
-fi
-
 if [ ".$ZLIB_OPT" = "." ]; then
     ZLIB_OPT="-O2 -pipe $CPU_OPT"
 else
--- a/auto/cc/gcc	Wed Jun 29 14:30:00 2016 +0300
+++ b/auto/cc/gcc	Thu Jun 30 18:57:39 2016 +0300
@@ -128,12 +128,6 @@
     PCRE_OPT="$PCRE_OPT $PIPE"
 fi
 
-if [ ".$MD5_OPT" = "." ]; then
-    MD5_OPT="-O2 -fomit-frame-pointer $PIPE $CPU_OPT"
-else
-    MD5_OPT="$MD5_OPT $PIPE"
-fi
-
 if [ ".$ZLIB_OPT" = "." ]; then
     ZLIB_OPT="-O2 -fomit-frame-pointer $PIPE $CPU_OPT"
 else
--- a/auto/cc/icc	Wed Jun 29 14:30:00 2016 +0300
+++ b/auto/cc/icc	Thu Jun 30 18:57:39 2016 +0300
@@ -43,10 +43,6 @@
     PCRE_OPT="-O $CPU_OPT"
 fi
 
-if [ ".$MD5_OPT" = "." ]; then
-    MD5_OPT="-O $CPU_OPT"
-fi
-
 if [ ".$ZLIB_OPT" = "." ]; then
     ZLIB_OPT="-O $CPU_OPT"
 fi
--- a/auto/cc/sunc	Wed Jun 29 14:30:00 2016 +0300
+++ b/auto/cc/sunc	Thu Jun 30 18:57:39 2016 +0300
@@ -145,10 +145,6 @@
     PCRE_OPT="$ngx_fast $IPO $CPU_OPT"
 fi
 
-if [ ".$MD5_OPT" = "." ]; then
-    MD5_OPT="$ngx_fast $IPO $CPU_OPT"
-fi
-
 if [ ".$ZLIB_OPT" = "." ]; then
     ZLIB_OPT="$ngx_fast $IPO $CPU_OPT"
 fi
--- a/auto/lib/conf	Wed Jun 29 14:30:00 2016 +0300
+++ b/auto/lib/conf	Thu Jun 30 18:57:39 2016 +0300
@@ -25,35 +25,6 @@
     . auto/lib/openssl/conf
 fi
 
-if [ $USE_MD5 = YES ]; then
-
-    if [ $USE_OPENSSL = YES ]; then
-        have=NGX_HAVE_OPENSSL_MD5_H . auto/have
-        have=NGX_OPENSSL_MD5 . auto/have
-        have=NGX_HAVE_MD5 . auto/have
-        MD5=YES
-        MD5_LIB=OpenSSL
-
-    else
-        . auto/lib/md5/conf
-    fi
-
-fi
-
-if [ $USE_SHA1 = YES ]; then
-
-    if [ $USE_OPENSSL = YES ]; then
-        have=NGX_HAVE_OPENSSL_SHA1_H . auto/have
-        have=NGX_HAVE_SHA1 . auto/have
-        SHA1=YES
-        SHA1_LIB=OpenSSL
-
-    else
-        . auto/lib/sha1/conf
-    fi
-
-fi
-
 if [ $USE_ZLIB = YES ]; then
     . auto/lib/zlib/conf
 fi
--- a/auto/lib/make	Wed Jun 29 14:30:00 2016 +0300
+++ b/auto/lib/make	Thu Jun 30 18:57:39 2016 +0300
@@ -7,14 +7,6 @@
     . auto/lib/pcre/make
 fi
 
-if [ $MD5 != NONE -a $MD5 != NO -a $MD5 != YES ]; then
-    . auto/lib/md5/make
-fi
-
-if [ $SHA1 != NONE -a $SHA1 != NO -a $SHA1 != YES ]; then
-    . auto/lib/sha1/make
-fi
-
 if [ $OPENSSL != NONE -a $OPENSSL != NO -a $OPENSSL != YES ]; then
     . auto/lib/openssl/make
 fi
--- a/auto/lib/md5/conf	Wed Jun 29 14:30:00 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,103 +0,0 @@
-
-# Copyright (C) Igor Sysoev
-# Copyright (C) Nginx, Inc.
-
-
-if [ $MD5 != NONE ]; then
-
-    if grep MD5_Init $MD5/md5.h 2>&1 >/dev/null; then
-        # OpenSSL md5
-        OPENSSL_MD5=YES
-        have=NGX_HAVE_OPENSSL_MD5 . auto/have
-        have=NGX_OPENSSL_MD5 . auto/have
-    else
-        # rsaref md5
-        OPENSSL_MD5=NO
-    fi
-
-    have=NGX_HAVE_MD5 . auto/have
-    CORE_INCS="$CORE_INCS $MD5"
-
-    case "$NGX_CC_NAME" in
-
-        msvc | owc | bcc)
-            LINK_DEPS="$LINK_DEPS $MD5/md5.lib"
-            CORE_LIBS="$CORE_LIBS $MD5/md5.lib"
-        ;;
-
-        icc)
-            LINK_DEPS="$LINK_DEPS $MD5/libmd5.a"
-
-            # to allow -ipo optimization we link with the *.o but not library
-            CORE_LIBS="$CORE_LIBS $MD5/md5_dgst.o"
-
-            if [ $MD5_ASM = YES ]; then
-                CORE_LIBS="$CORE_LIBS $MD5/asm/mx86-elf.o"
-            fi
-        ;;
-
-        *)
-            LINK_DEPS="$LINK_DEPS $MD5/libmd5.a"
-            CORE_LIBS="$CORE_LIBS $MD5/libmd5.a"
-            #CORE_LIBS="$CORE_LIBS -L $MD5 -lmd5"
-        ;;
-
-    esac
-
-else
-
-    if [ "$NGX_PLATFORM" != win32 ]; then
-
-            MD5=NO
-
-            # FreeBSD, Solaris 10
-
-            ngx_feature="md5 in system md library"
-            ngx_feature_name=NGX_HAVE_MD5
-            ngx_feature_run=no
-            ngx_feature_incs="#include <md5.h>"
-            ngx_feature_path=
-            ngx_feature_libs="-lmd"
-            ngx_feature_test="MD5_CTX md5; MD5Init(&md5)"
-            . auto/feature
-
-            ngx_md5_lib="system md"
-
-        if [ $ngx_found = no ]; then
-
-            # Solaris 8/9
-
-            ngx_feature="md5 in system md5 library"
-            ngx_feature_libs="-lmd5"
-            . auto/feature
-
-            ngx_md5_lib="system md5"
-        fi
-
-        if [ $ngx_found = no ]; then
-
-            # OpenSSL crypto library
-
-            ngx_feature="md5 in system OpenSSL crypto library"
-            ngx_feature_name="NGX_OPENSSL_MD5"
-            ngx_feature_incs="#include <openssl/md5.h>"
-            ngx_feature_libs="-lcrypto"
-            ngx_feature_test="MD5_CTX md5; MD5_Init(&md5)"
-            . auto/feature
-
-            ngx_md5_lib="system crypto"
-
-            if [ $ngx_found = yes ]; then
-                have=NGX_HAVE_OPENSSL_MD5_H . auto/have
-                have=NGX_HAVE_MD5 . auto/have
-            fi
-        fi
-
-        if [ $ngx_found = yes ]; then
-            CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
-            MD5=YES
-            MD5_LIB=$ngx_md5_lib
-        fi
-    fi
-
-fi
--- a/auto/lib/md5/make	Wed Jun 29 14:30:00 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-
-# Copyright (C) Igor Sysoev
-# Copyright (C) Nginx, Inc.
-
-
-case "$NGX_CC_NAME" in
-
-    msvc)
-        ngx_makefile=makefile.msvc
-        ngx_opt="CPU_OPT=\"$CPU_OPT\" LIBC=$LIBC MD5_ASM=$MD5_ASM"
-        ngx_md5="MD5=\"$MD5\""
-    ;;
-
-    owc)
-        ngx_makefile=makefile.owc
-        ngx_opt="CPU_OPT=\"$CPU_OPT\""
-        ngx_md5=`echo MD5=\"$MD5\" | sed -e "s/\//$ngx_regex_dirsep/g"`
-    ;;
-
-    bcc)
-        ngx_makefile=makefile.bcc
-        ngx_opt="-DCPU_OPT=\"$CPU_OPT\" -DMD5_ASM=$MD5_ASM"
-        ngx_md5=`echo \-DMD5=\"$MD5\" | sed -e "s/\//$ngx_regex_dirsep/g"`
-    ;;
-
-esac
-
-
-done=NO
-
-
-case "$NGX_PLATFORM" in
-
-    win32)
-        cat << END                                        >> $NGX_MAKEFILE
-
-`echo "$MD5/md5.lib:	$NGX_MAKEFILE" | sed -e "s/\//$ngx_regex_dirsep/g"`
-	\$(MAKE) -f auto/lib/md5/$ngx_makefile $ngx_opt $ngx_md5
-
-END
-
-        done=YES
-    ;;
-
-    SunOS:*:i86pc)
-        if [ $MD5_ASM = YES ]; then
-
-            cat << END                                        >> $NGX_MAKEFILE
-
-$MD5/libmd5.a:	$NGX_MAKEFILE
-	cd $MD5 \\
-	&& \$(MAKE) CFLAGS="$MD5_OPT -DSOL -DMD5_ASM -DL_ENDIAN" \\
-		CC="\$(CC)" CPP="\$(CPP)" \\
-		MD5_ASM_OBJ=asm/mx86-sol.o clean libmd5.a
-
-END
-
-            done=YES
-        fi
-    ;;
-
-    # FreeBSD: i386
-    # Linux: i686
-
-    *:i386 | *:i686)
-        if [ $MD5_ASM = YES ]; then
-
-            cat << END                                        >> $NGX_MAKEFILE
-
-$MD5/libmd5.a:	$NGX_MAKEFILE
-	cd $MD5 \\
-	&& \$(MAKE) CFLAGS="$MD5_OPT -DELF -DMD5_ASM -DL_ENDIAN" \\
-		CC="\$(CC)" CPP="\$(CPP)" \\
-		MD5_ASM_OBJ=asm/mx86-elf.o clean libmd5.a
-
-END
-
-            done=YES
-        fi
-    ;;
-
-esac
-
-
-if [ $done = NO ]; then
-
-    cat << END                                                >> $NGX_MAKEFILE
-
-$MD5/libmd5.a:	$NGX_MAKEFILE
-	cd $MD5 \\
-	&& \$(MAKE) CFLAGS="$MD5_OPT" \\
-		CC="\$(CC)" MD5_ASM_OBJ= clean libmd5.a
-
-END
-
-fi
--- a/auto/lib/md5/makefile.bcc	Wed Jun 29 14:30:00 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-
-# Copyright (C) Igor Sysoev
-# Copyright (C) Nginx, Inc.
-
-
-CFLAGS = -q -O2 -tWM $(CPU_OPT) -DL_ENDIAN
-
-!if "$(MD5_ASM)" == "YES"
-
-md5.lib:
-	cd $(MD5)
-	bcc32 -c $(CFLAGS) -DMD5_ASM md5_dgst.c
-	tlib md5.lib +md5_dgst.obj +"asm\m-win32.obj"
-
-!else
-
-md5.lib:
-	cd $(MD5)
-	bcc32 -c $(CFLAGS) md5_dgst.c
-	tlib md5.lib +md5_dgst.obj
-
-!endif
--- a/auto/lib/md5/makefile.msvc	Wed Jun 29 14:30:00 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-
-# Copyright (C) Igor Sysoev
-# Copyright (C) Nginx, Inc.
-
-
-CFLAGS = -nologo -O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT) -D L_ENDIAN
-
-!IF "$(MD5_ASM)" == "YES"
-
-md5.lib:
-	cd $(MD5)
-	cl -c $(CFLAGS) -D MD5_ASM md5_dgst.c
-	link -lib -out:md5.lib md5_dgst.obj asm/m-win32.obj
-
-!ELSE
-
-md5.lib:
-	cd $(MD5)
-	cl -c $(CFLAGS) md5_dgst.c
-	link -lib -out:md5.lib md5_dgst.obj
-
-!ENDIF
--- a/auto/lib/md5/makefile.owc	Wed Jun 29 14:30:00 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-
-# Copyright (C) Igor Sysoev
-# Copyright (C) Nginx, Inc.
-
-
-CFLAGS = -zq -bt=nt -bm -ot -op -oi -oe -s $(CPU_OPT)
-
-md5.lib:
-	cd $(MD5)
-	wcl386 -c $(CFLAGS) -dL_ENDIAN md5_dgst.c
-	wlib -n md5.lib md5_dgst.obj
--- a/auto/lib/sha1/conf	Wed Jun 29 14:30:00 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-
-# Copyright (C) Igor Sysoev
-# Copyright (C) Nginx, Inc.
-
-
-if [ $SHA1 != NONE ]; then
-
-    have=NGX_HAVE_SHA1 . auto/have
-    CORE_INCS="$CORE_INCS $SHA1"
-
-    case "$NGX_CC_NAME" in
-
-        msvc | owc | bcc)
-            LINK_DEPS="$LINK_DEPS $SHA1/sha1.lib"
-            CORE_LIBS="$CORE_LIBS $SHA1/sha1.lib"
-        ;;
-
-        icc)
-            LINK_DEPS="$LINK_DEPS $SHA1/libsha.a"
-
-            # to allow -ipo optimization we link with the *.o but not library
-            CORE_LIBS="$CORE_LIBS $SHA1/sha1_dgst.o"
-
-            if [ $SHA1_ASM = YES ]; then
-                CORE_LIBS="$CORE_LIBS $SHA1/asm/sx86-elf.o"
-            fi
-        ;;
-
-        *)
-            LINK_DEPS="$LINK_DEPS $SHA1/libsha.a"
-            CORE_LIBS="$CORE_LIBS $SHA1/libsha.a"
-            #CORE_LIBS="$CORE_LIBS -L $SHA1 -lsha"
-        ;;
-
-    esac
-
-else
-
-    if [ "$NGX_PLATFORM" != win32 ]; then
-
-        SHA1=NO
-
-        # FreeBSD
-
-        ngx_feature="sha1 in system md library"
-        ngx_feature_name=NGX_HAVE_SHA1
-        ngx_feature_run=no
-        ngx_feature_incs="#include <sha.h>"
-        ngx_feature_path=
-        ngx_feature_libs="-lmd"
-        ngx_feature_test="SHA_CTX sha1; SHA1_Init(&sha1)"
-        . auto/feature
-
-        ngx_sha1_lib="system md"
-
-        if [ $ngx_found = no ]; then
-
-            # OpenSSL crypto library
-
-            ngx_feature="sha1 in system OpenSSL crypto library"
-            ngx_feature_incs="#include <openssl/sha.h>"
-            ngx_feature_libs="-lcrypto"
-            . auto/feature
-
-            ngx_sha1_lib="system crypto"
-
-            if [ $ngx_found = yes ]; then
-                have=NGX_HAVE_OPENSSL_SHA1_H . auto/have
-            fi
-        fi
-
-        if [ $ngx_found = yes ]; then
-            CORE_LIBS="$CORE_LIBS $ngx_feature_libs"
-            SHA1=YES
-            SHA1_LIB=$ngx_sha1_lib
-        fi
-    fi
-
-fi
--- a/auto/lib/sha1/make	Wed Jun 29 14:30:00 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,96 +0,0 @@
-
-# Copyright (C) Igor Sysoev
-# Copyright (C) Nginx, Inc.
-
-
-case "$NGX_CC_NAME" in
-
-    msvc)
-        ngx_makefile=makefile.msvc
-        ngx_opt="CPU_OPT=\"$CPU_OPT\" LIBC=$LIBC SHA1_ASM=$SHA1_ASM"
-        ngx_sha1="SHA1=\"$SHA1\""
-    ;;
-
-    owc)
-        ngx_makefile=makefile.owc
-        ngx_opt="CPU_OPT=\"$CPU_OPT\""
-        ngx_sha1=`echo SHA1=\"$SHA1\" | sed -e "s/\//$ngx_regex_dirsep/g"`
-    ;;
-
-    bcc)
-        ngx_makefile=makefile.bcc
-        ngx_opt="-DCPU_OPT=\"$CPU_OPT\" -DSHA1_ASM=$SHA1_ASM"
-        ngx_sha1=`echo \-DSHA1=\"$SHA1\" | sed -e "s/\//$ngx_regex_dirsep/g"`
-    ;;
-
-esac
-
-
-done=NO
-
-
-case "$NGX_PLATFORM" in
-
-    win32)
-        cat << END                                        >> $NGX_MAKEFILE
-
-`echo "$SHA1/sha1.lib:	$NGX_MAKEFILE" | sed -e "s/\//$ngx_regex_dirsep/g"`
-	\$(MAKE) -f auto/lib/sha1/$ngx_makefile $ngx_opt $ngx_sha1
-
-END
-
-        done=YES
-    ;;
-
-    SunOS:*:i86pc)
-        if [ $SHA1_ASM = YES ]; then
-
-            cat << END                                        >> $NGX_MAKEFILE
-
-$SHA1/libsha.a:	$NGX_MAKEFILE
-	cd $SHA1 \\
-	&& \$(MAKE) CFLAGS="$SHA1_OPT -DSOL -DSHA1_ASM -DL_ENDIAN" \\
-		CC="\$(CC)" CPP="\$(CPP)" \\
-		SHA_ASM_OBJ=asm/sx86-sol.o clean libsha.a
-
-END
-
-            done=YES
-        fi
-    ;;
-
-    # FreeBSD: i386
-    # Linux: i686
-
-    *:i386 | *:i686)
-        if [ $SHA1_ASM = YES ]; then
-
-            cat << END                                        >> $NGX_MAKEFILE
-
-$SHA1/libsha.a:	$NGX_MAKEFILE
-	cd $SHA1 \\
-	&& \$(MAKE) CFLAGS="$SHA1_OPT -DELF -DSHA1_ASM -DL_ENDIAN" \\
-		CC="\$(CC)" CPP="\$(CPP)" \\
-		SHA_ASM_OBJ=asm/sx86-elf.o clean libsha.a
-
-END
-
-            done=YES
-        fi
-    ;;
-
-esac
-
-
-if [ $done = NO ]; then
-
-    cat << END                                                >> $NGX_MAKEFILE
-
-$SHA1/libsha.a:	$NGX_MAKEFILE
-	cd $SHA1 \\
-	&& \$(MAKE) CFLAGS="$SHA1_OPT" \\
-		CC="\$(CC)" SHA_ASM_OBJ= clean libsha.a
-
-END
-
-fi
--- a/auto/lib/sha1/makefile.bcc	Wed Jun 29 14:30:00 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-
-# Copyright (C) Igor Sysoev
-# Copyright (C) Nginx, Inc.
-
-
-CFLAGS = -q -O2 -tWM $(CPU_OPT) -DL_ENDIAN
-
-!if "$(SHA1_ASM)" == "YES"
-
-sha1.lib:
-	cd $(SHA1)
-	bcc32 -c $(CFLAGS) -DSHA1_ASM sha1dgst.c
-	tlib sha1.lib +sha1dgst.obj +"asm\s-win32.obj"
-
-!else
-
-sha1.lib:
-	cd $(SHA1)
-	bcc32 -c $(CFLAGS) sha1dgst.c
-	tlib sha1.lib +sha1dgst.obj
-
-!endif
--- a/auto/lib/sha1/makefile.msvc	Wed Jun 29 14:30:00 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,22 +0,0 @@
-
-# Copyright (C) Igor Sysoev
-# Copyright (C) Nginx, Inc.
-
-
-CFLAGS = -nologo -O2 -Ob1 -Oi -Gs $(LIBC) $(CPU_OPT) -D L_ENDIAN
-
-!IF "$(SHA1_ASM)" == "YES"
-
-sha1.lib:
-	cd $(SHA1)
-	cl -c $(CFLAGS) -D SHA1_ASM sha1dgst.c
-	link -lib -out:sha1.lib sha1dgst.obj asm/s-win32.obj
-
-!ELSE
-
-sha1.lib:
-	cd $(SHA1)
-	cl -c $(CFLAGS) sha1dgst.c
-	link -lib -out:sha1.lib sha1dgst.obj
-
-!ENDIF
--- a/auto/lib/sha1/makefile.owc	Wed Jun 29 14:30:00 2016 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,11 +0,0 @@
-
-# Copyright (C) Igor Sysoev
-# Copyright (C) Nginx, Inc.
-
-
-CFLAGS = -zq -bt=nt -bm -ot -op -oi -oe -s $(CPU_OPT)
-
-sha1.lib:
-	cd $(SHA1)
-	wcl386 -c $(CFLAGS) -dL_ENDIAN sha1dgst.c
-	wlib -n sha1.lib sha1dgst.obj
--- a/auto/module	Wed Jun 29 14:30:00 2016 +0300
+++ b/auto/module	Thu Jun 30 18:57:39 2016 +0300
@@ -48,10 +48,14 @@
                 fi
             ;;
 
-            PCRE | OPENSSL | MD5 | SHA1 | ZLIB)
+            PCRE | OPENSSL | ZLIB)
                 eval USE_${lib}=YES
             ;;
 
+            MD5 | SHA1)
+                # obsolete
+            ;;
+
             *)
                 libs="$libs $lib"
             ;;
@@ -79,10 +83,14 @@
     do
         case $lib in
 
-            PCRE | OPENSSL | MD5 | SHA1 | ZLIB | LIBXSLT | LIBGD | PERL | GEOIP)
+            PCRE | OPENSSL | ZLIB | LIBXSLT | LIBGD | PERL | GEOIP)
                 eval USE_${lib}=YES
             ;;
 
+            MD5 | SHA1)
+                # obsolete
+            ;;
+
             *)
                 CORE_LIBS="$CORE_LIBS $lib"
             ;;
@@ -109,10 +117,14 @@
     do
         case $lib in
 
-            PCRE | OPENSSL | MD5 | SHA1 | ZLIB | LIBXSLT | LIBGD | PERL | GEOIP)
+            PCRE | OPENSSL | ZLIB | LIBXSLT | LIBGD | PERL | GEOIP)
                 eval USE_${lib}=YES
             ;;
 
+            MD5 | SHA1)
+                # obsolete
+            ;;
+
             *)
                 CORE_LIBS="$CORE_LIBS $lib"
             ;;
--- a/auto/modules	Wed Jun 29 14:30:00 2016 +0300
+++ b/auto/modules	Thu Jun 30 18:57:39 2016 +0300
@@ -101,7 +101,6 @@
 
 
 if [ $HTTP_CACHE = YES ]; then
-    USE_MD5=YES
     have=NGX_HTTP_CACHE . auto/have
     HTTP_SRCS="$HTTP_SRCS $HTTP_FILE_CACHE_SRCS"
 fi
@@ -522,8 +521,6 @@
 fi
 
 if [ $HTTP_AUTH_BASIC = YES ]; then
-    USE_MD5=YES
-    USE_SHA1=YES
     have=NGX_CRYPT . auto/have
 
     ngx_module_name=ngx_http_auth_basic_module
@@ -682,7 +679,6 @@
 
 if [ $HTTP_PROXY = YES ]; then
     have=NGX_HTTP_X_FORWARDED_FOR . auto/have
-    #USE_MD5=YES
 
     ngx_module_name=ngx_http_proxy_module
     ngx_module_incs=
@@ -772,8 +768,6 @@
 fi
 
 if [ $HTTP_SECURE_LINK = YES ]; then
-    USE_MD5=YES
-
     ngx_module_name=ngx_http_secure_link_module
     ngx_module_incs=
     ngx_module_deps=
--- a/auto/options	Wed Jun 29 14:30:00 2016 +0300
+++ b/auto/options	Thu Jun 30 18:57:39 2016 +0300
@@ -136,16 +136,6 @@
 USE_OPENSSL=NO
 OPENSSL=NONE
 
-USE_MD5=NO
-MD5=NONE
-MD5_OPT=
-MD5_ASM=NO
-
-USE_SHA1=NO
-SHA1=NONE
-SHA1_OPT=
-SHA1_ASM=NO
-
 USE_ZLIB=NO
 ZLIB=NONE
 ZLIB_OPT=
@@ -333,13 +323,31 @@
         --with-openssl=*)                OPENSSL="$value"           ;;
         --with-openssl-opt=*)            OPENSSL_OPT="$value"       ;;
 
-        --with-md5=*)                    MD5="$value"               ;;
-        --with-md5-opt=*)                MD5_OPT="$value"           ;;
-        --with-md5-asm)                  MD5_ASM=YES                ;;
+        --with-md5=*)
+            NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
+$0: warning: the \"--with-md5\" option is deprecated"
+        ;;
+        --with-md5-opt=*)
+            NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
+$0: warning: the \"--with-md5-opt\" option is deprecated"
+        ;;
+        --with-md5-asm)
+            NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
+$0: warning: the \"--with-md5-asm\" option is deprecated"
+        ;;
 
-        --with-sha1=*)                   SHA1="$value"              ;;
-        --with-sha1-opt=*)               SHA1_OPT="$value"          ;;
-        --with-sha1-asm)                 SHA1_ASM=YES               ;;
+        --with-sha1=*)
+            NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
+$0: warning: the \"--with-sha1\" option is deprecated"
+        ;;
+        --with-sha1-opt=*)
+            NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
+$0: warning: the \"--with-sha1-opt\" option is deprecated"
+        ;;
+        --with-sha1-asm)
+            NGX_POST_CONF_MSG="$NGX_POST_CONF_MSG
+$0: warning: the \"--with-sha1-asm\" option is deprecated"
+        ;;
 
         --with-zlib=*)                   ZLIB="$value"              ;;
         --with-zlib-opt=*)               ZLIB_OPT="$value"          ;;
@@ -511,14 +519,6 @@
   --with-pcre-opt=OPTIONS            set additional build options for PCRE
   --with-pcre-jit                    build PCRE with JIT compilation support
 
-  --with-md5=DIR                     set path to md5 library sources
-  --with-md5-opt=OPTIONS             set additional build options for md5
-  --with-md5-asm                     use md5 assembler sources
-
-  --with-sha1=DIR                    set path to sha1 library sources
-  --with-sha1-opt=OPTIONS            set additional build options for sha1
-  --with-sha1-asm                    use sha1 assembler sources
-
   --with-zlib=DIR                    set path to zlib library sources
   --with-zlib-opt=OPTIONS            set additional build options for zlib
   --with-zlib-asm=CPU                use zlib assembler sources optimized
--- a/auto/summary	Wed Jun 29 14:30:00 2016 +0300
+++ b/auto/summary	Thu Jun 30 18:57:39 2016 +0300
@@ -28,20 +28,6 @@
     *)     echo "  + using OpenSSL library: $OPENSSL" ;;
 esac
 
-case $MD5 in
-    YES)   echo "  + md5: using $MD5_LIB library" ;;
-    NONE)  echo "  + md5 library is not used" ;;
-    NO)    echo "  + using builtin md5 code" ;;
-    *)     echo "  + using md5 library: $MD5" ;;
-esac
-
-case $SHA1 in
-    YES)   echo "  + sha1: using $SHA1_LIB library" ;;
-    NONE)  echo "  + sha1 library is not used" ;;
-    NO)    echo "  + sha1 library is not found" ;;
-    *)     echo "  + using sha1 library: $SHA1" ;;
-esac
-
 case $ZLIB in
     YES)   echo "  + using system zlib library" ;;
     NONE)  echo "  + zlib library is not used" ;;
--- a/src/core/ngx_md5.c	Wed Jun 29 14:30:00 2016 +0300
+++ b/src/core/ngx_md5.c	Thu Jun 30 18:57:39 2016 +0300
@@ -3,8 +3,6 @@
  * An internal implementation, based on Alexander Peslyak's
  * public domain implementation:
  * http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5
- * It is not expected to be optimal and is used only
- * if no MD5 implementation was found in system.
  */
 
 
@@ -13,8 +11,6 @@
 #include <ngx_md5.h>
 
 
-#if !(NGX_HAVE_MD5)
-
 static const u_char *ngx_md5_body(ngx_md5_t *ctx, const u_char *data,
     size_t size);
 
@@ -285,5 +281,3 @@
 
     return p;
 }
-
-#endif
--- a/src/core/ngx_md5.h	Wed Jun 29 14:30:00 2016 +0300
+++ b/src/core/ngx_md5.h	Thu Jun 30 18:57:39 2016 +0300
@@ -13,36 +13,6 @@
 #include <ngx_core.h>
 
 
-#if (NGX_HAVE_MD5)
-
-#if (NGX_HAVE_OPENSSL_MD5_H)
-#include <openssl/md5.h>
-#else
-#include <md5.h>
-#endif
-
-
-typedef MD5_CTX  ngx_md5_t;
-
-
-#if (NGX_OPENSSL_MD5)
-
-#define ngx_md5_init    MD5_Init
-#define ngx_md5_update  MD5_Update
-#define ngx_md5_final   MD5_Final
-
-#else
-
-#define ngx_md5_init    MD5Init
-#define ngx_md5_update  MD5Update
-#define ngx_md5_final   MD5Final
-
-#endif
-
-
-#else /* !NGX_HAVE_MD5 */
-
-
 typedef struct {
     uint64_t  bytes;
     uint32_t  a, b, c, d;
@@ -55,6 +25,4 @@
 void ngx_md5_final(u_char result[16], ngx_md5_t *ctx);
 
 
-#endif
-
 #endif /* _NGX_MD5_H_INCLUDED_ */
--- a/src/core/ngx_module.h	Wed Jun 29 14:30:00 2016 +0300
+++ b/src/core/ngx_module.h	Thu Jun 30 18:57:39 2016 +0300
@@ -119,17 +119,8 @@
 #define NGX_MODULE_SIGNATURE_16  "0"
 #endif
 
-#if (NGX_HAVE_MD5)
-#define NGX_MODULE_SIGNATURE_17  "1"
-#else
 #define NGX_MODULE_SIGNATURE_17  "0"
-#endif
-
-#if (NGX_HAVE_SHA1)
-#define NGX_MODULE_SIGNATURE_18  "1"
-#else
 #define NGX_MODULE_SIGNATURE_18  "0"
-#endif
 
 #if (NGX_HAVE_OPENAT)
 #define NGX_MODULE_SIGNATURE_19  "1"
--- a/src/core/ngx_sha1.c	Wed Jun 29 14:30:00 2016 +0300
+++ b/src/core/ngx_sha1.c	Thu Jun 30 18:57:39 2016 +0300
@@ -4,8 +4,6 @@
  * Copyright (C) Nginx, Inc.
  *
  * An internal SHA1 implementation.
- * It is not expected to be optimal and is used only
- * if no SHA1 implementation was found in system.
  */
 
 
@@ -14,8 +12,6 @@
 #include <ngx_sha1.h>
 
 
-#if !(NGX_HAVE_SHA1)
-
 static const u_char *ngx_sha1_body(ngx_sha1_t *ctx, const u_char *data,
     size_t size);
 
@@ -296,5 +292,3 @@
 
     return p;
 }
-
-#endif
--- a/src/core/ngx_sha1.h	Wed Jun 29 14:30:00 2016 +0300
+++ b/src/core/ngx_sha1.h	Thu Jun 30 18:57:39 2016 +0300
@@ -13,26 +13,6 @@
 #include <ngx_core.h>
 
 
-#if (NGX_HAVE_SHA1)
-
-#if (NGX_HAVE_OPENSSL_SHA1_H)
-#include <openssl/sha.h>
-#else
-#include <sha.h>
-#endif
-
-
-typedef SHA_CTX  ngx_sha1_t;
-
-
-#define ngx_sha1_init    SHA1_Init
-#define ngx_sha1_update  SHA1_Update
-#define ngx_sha1_final   SHA1_Final
-
-
-#else /* !NGX_HAVE_SHA1 */
-
-
 typedef struct {
     uint64_t  bytes;
     uint32_t  a, b, c, d, e, f;
@@ -45,6 +25,4 @@
 void ngx_sha1_final(u_char result[20], ngx_sha1_t *ctx);
 
 
-#endif
-
 #endif /* _NGX_SHA1_H_INCLUDED_ */