summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorprovos <provos@openbsd.org>1997-03-27 00:05:41 +0000
committerprovos <provos@openbsd.org>1997-03-27 00:05:41 +0000
commit093550a321c2639b2016c7f9e1c4aa7bf93776c8 (patch)
tree8060df7ea8ed34d68be7f2a129ecb6ac9e9da854
parentadded ipsec subdir (diff)
downloadwireguard-openbsd-093550a321c2639b2016c7f9e1c4aa7bf93776c8.tar.xz
wireguard-openbsd-093550a321c2639b2016c7f9e1c4aa7bf93776c8.zip
support for md5 passwords
-rw-r--r--usr.bin/passwd/pwd_gensalt.c46
1 files 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;
}