From 093550a321c2639b2016c7f9e1c4aa7bf93776c8 Mon Sep 17 00:00:00 2001 From: provos Date: Thu, 27 Mar 1997 00:05:41 +0000 Subject: [PATCH] support for md5 passwords --- usr.bin/passwd/pwd_gensalt.c | 46 ++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/usr.bin/passwd/pwd_gensalt.c b/usr.bin/passwd/pwd_gensalt.c index 80dff3ba1ab..2c7ce64c2c0 100644 --- a/usr.bin/passwd/pwd_gensalt.c +++ b/usr.bin/passwd/pwd_gensalt.c @@ -67,26 +67,32 @@ pwd_gensalt(salt, max, pwd, type) (void) srandom((int) time((time_t *) NULL)); to64(&salt[0], random(), 2); salt[2] = '\0'; - } else - if (!strcmp(now, "newsalt")) { - if( max < 10 ) - return 0; - (void) srandom((int) time((time_t *) NULL)); - salt[0] = _PASSWORD_EFMT1; - to64(&salt[1], (long) (29 * 25), 4); - to64(&salt[5], random(), 4); - salt[9] = '\0'; - } else - if (!strcmp(now, "blowfish")) { - int rounds = atoi(next); - if (rounds < 4) - rounds = 4; - strncpy(salt, bcrypt_gensalt(rounds), max - 1); - salt[max - 1] = 0; - } else { - strcpy(salt, ":"); - warnx("Unkown option %s.", now); - } + } else if (!strcmp(now, "newsalt")) { + if( max < 10 ) + return 0; + (void) srandom((int) time((time_t *) NULL)); + salt[0] = _PASSWORD_EFMT1; + to64(&salt[1], (long) (29 * 25), 4); + to64(&salt[5], random(), 4); + salt[9] = '\0'; + } else if (!strcmp(now, "md5")) { + if( max < 13 ) /* $1$8salt$\0 */ + return 0; + strcpy(salt, "$1$"); + (void) srandom((int) time((time_t *) NULL)); + to64(&salt[3], random(), 4); + to64(&salt[7], random(), 4); + strcpy(&salt[11], "$"); + } else if (!strcmp(now, "blowfish")) { + int rounds = atoi(next); + if (rounds < 4) + rounds = 4; + strncpy(salt, bcrypt_gensalt(rounds), max - 1); + salt[max - 1] = 0; + } else { + strcpy(salt, ":"); + warnx("Unkown option %s.", now); + } return 1; } -- 2.20.1