Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 11 Mar 1996 19:47:37 +0200
From:      Dmitry Kohmanyuk <dk@snark.ukma.kiev.ua>
To:        sia@jriver.com, sia@nest.org
Cc:        bag@ua.net, freebsd-hackers@freebsd.org, stesin@elvisti.kiev.ua
Subject:   libcrypt patch to allow mixed DES/MD5 passwords
Message-ID:  <199603111747.TAA17678@snark.ukma.kiev.ua>

next in thread | raw e-mail | index | archive | help

Hi hackers,

Following are 2 patches for descrypt which make it fallback to 
md5 crypt if the salt begins with a '$'.

the patches are against 2.1-RELEASE lib and secure distributions;
they are relative to $src/lib/libcrypt and $src/secure/lib/libcrypt
sorry for broken $Id$s; you can always fix the patch by hand.

you need to remove old /usr/lib/libcrypt* symlinks and do a `make install' 
in secure/lib/libcrypt

you need to rebuild init (in secure) afterwards or otherwise you wouldn't be able
to login to secure console in single-user if you change the password 
to DES-encrypted.

I have noticed that xdm stopped working;  I hope to fix that soon.

I am running these patches since February 24th on our 7-machine LAN
(FreeBSD as NIS server, Solaris and Linux as NIS clients, diskless
FreeBSD 4Mb boxes as X terminals) with no problems apart from xdm
I've mentioned.

You can't use MD5 passwords on other systems until you patch theirs 
libc, obvious.  And even after that you can't fix all the static buffers.

All new passwords would be DES-encrypted unless you change passwd(1)
or yppasswd(1) (same on FreeBSD, other program on other systems)
to make '$1$text' to be your salt.

It was just very helpful to merge 2 password databases without causing
half of users to change their passwords.

please feedback to me directly since I don't read -hackers after 
my home disk crash.

cheers,
Dmitry.

lib-libcrypt.diff
secure-libcrypt.diff

diff -ru lib/libcrypt/crypt.c ./crypt.c
--- lib/libcrypt/crypt.c	Tue May 30 08:42:22 1995
+++ ./crypt.c	Mon Mar 11 18:04:50 1996
@@ -40,7 +40,11 @@
  */
 
 char *
+#ifdef	SCRYPT
+scrypt(pw, salt)
+#else
 crypt(pw, salt)
+#endif
 	register const char *pw;
 	register const char *salt;
 {


diff -ru secure/lib/libcrypt/Makefile ./Makefile
--- secure/lib/libcrypt/Makefile	Sat Aug 27 02:31:11 1994
+++ ./Makefile	Mon Mar 11 18:25:39 1996
@@ -1,5 +1,5 @@
 #
-# $Id: Makefile,v 1.7 1994/08/26 23:31:11 wollman Exp $
+# $Id: Makefile,v 1.1 1996/02/24 15:54:31 dk Exp dk $
 #
 
 LCRYPTBASE=     libcrypt
@@ -9,8 +9,10 @@
 LDCRYPTBASE=    libdescrypt
 LDCRYPTSO=      $(LDCRYPTBASE).so.$(SHLIB_MAJOR).$(SHLIB_MINOR)
 
+.PATH:	${.CURDIR}/../../../lib/libmd
 LIB=	descrypt
-SRCS=	crypt.c
+SRCS=	crypt.c scrypt.c md5c.c
+CFLAGS+=	-I${.CURDIR}/../../../libmd -DSCRYPT
 PRECIOUSLIB=	yes
 
 #MAN3=   crypt.3
@@ -22,6 +24,9 @@
 
 test:
 	cd test ; make test ; make clean
+
+scrypt.c:
+	ln -s ${.CURDIR}/../../../lib/libcrypt/crypt.c scrypt.c
 
 
 .include <bsd.lib.mk>
diff -ru secure/lib/libcrypt/crypt.c ./crypt.c
--- secure/lib/libcrypt/crypt.c	Tue May 30 09:11:46 1995
+++ ./crypt.c	Sat Feb 24 18:11:53 1996
@@ -32,7 +32,7 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *	$Id: crypt.c,v 1.6 1995/05/30 06:11:46 rgrimes Exp $
+ *	$Id: crypt.c,v 1.1 1996/02/24 16:06:00 dk Exp dk $
  *
  * This is an original implementation of the DES and the crypt(3) interfaces
  * by David Burren <davidb@werj.com.au>.
@@ -63,6 +63,10 @@
 # include <stdio.h>
 #endif
 
+#ifdef SCRYPT
+extern char *scrypt(char *, char *);
+#endif
+
 /* We can't always assume gcc */
 #ifdef __GNUC__
 #define INLINE inline
@@ -588,6 +592,11 @@
 	u_long		count, salt, l, r0, r1, keybuf[2];
 	u_char		*p, *q;
 	static u_char	output[21];
+
+#ifdef	SCRYPT
+	if (setting[0] == '$')
+		return(scrypt(key, setting));
+#endif
 
 	if (!des_initialised)
 		des_init();




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199603111747.TAA17678>