support for md5 passwords
authorprovos <provos@openbsd.org>
Thu, 27 Mar 1997 00:05:41 +0000 (00:05 +0000)
committerprovos <provos@openbsd.org>
Thu, 27 Mar 1997 00:05:41 +0000 (00:05 +0000)
usr.bin/passwd/pwd_gensalt.c

index 80dff3b..2c7ce64 100644 (file)
@@ -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;
 }