diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-12-04 12:05:26 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-12-04 12:05:26 +0000 |
commit | e45930e8903cd80de149d6e92f05b8a3f80669cf (patch) | |
tree | 2363a354db9f2bafb4f3119684daf0b81417326b /loginutils/mkpasswd.c | |
parent | 196a953f21b14add828c2cc0e40b4bf8e76b1873 (diff) | |
download | busybox-e45930e8903cd80de149d6e92f05b8a3f80669cf.tar.gz |
Fold mkpasswd applet into cryptpw.
mkpasswd is in Debian, OTOH cryptpw was added to busybox earlier.
Trying to make both camps happy by making those two applets just aliases.
They are command-line compatible. We can decide whether we want to drop one
(and which one) later.
function old new delta
cryptpw_main 183 314 +131
static.methods 21 - -21
packed_usage 25707 25648 -59
mkpasswd_main 307 - -307
------------------------------------------------------------------------------
(add/remove: 0/2 grow/shrink: 1/1 up/down: 131/-387) Total: -256 bytes
Diffstat (limited to 'loginutils/mkpasswd.c')
-rw-r--r-- | loginutils/mkpasswd.c | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/loginutils/mkpasswd.c b/loginutils/mkpasswd.c deleted file mode 100644 index 442738e03..000000000 --- a/loginutils/mkpasswd.c +++ /dev/null @@ -1,71 +0,0 @@ -/* vi: set sw=4 ts=4 sts=4: */ -/* - * mkpasswd - Overfeatured front end to crypt(3) - * Copyright (c) 2008 Bernhard Reutner-Fischer - * - * Licensed under GPLv2 or later, see file LICENSE in this tarball for details. - */ - -#include "libbb.h" - -int mkpasswd_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE; -int mkpasswd_main(int argc UNUSED_PARAM, char **argv) -{ - char *chp = NULL, *method = NULL, *salt = NULL; - char *encrypted; - int fd = STDIN_FILENO; - enum { - OPT_P = (1 << 0), - OPT_s = (1 << 1), - OPT_m = (1 << 2), - OPT_S = (1 << 3) - }; - static const char methods[] ALIGN1 = - /*"des\0"*/"md5\0""sha-256\0""sha-512\0"; - enum { TYPE_des, TYPE_md5, TYPE_sha256, TYPE_sha512 }; - unsigned algo = TYPE_des, algobits = 1; -#if ENABLE_GETOPT_LONG - static const char mkpasswd_longopts[] ALIGN1 = - "password-fd\0" Required_argument "P" - "stdin\0" No_argument "s" - "method\0" Required_argument "m" - "salt\0" Required_argument "S" - ; - applet_long_options = mkpasswd_longopts; -#endif - opt_complementary = "?1"; /* at most one non-option argument */ - getopt32(argv, "P:sm:S:", &chp, &method, &salt); - argv += optind; - if (option_mask32 & OPT_P) - fd = xatoi_u(chp); - if (option_mask32 & OPT_m) - algo = index_in_strings(methods, method) + 1; - if (*argv) /* we have a cleartext passwd */ - chp = *argv; - else - chp = bb_ask(fd, 0, "Password: "); - if (!salt) - salt = xmalloc(128); - - if (algo) { - char foo[2]; - foo[0] = foo[2] = '$'; - algobits = 4; - /* MD5 == "$1$", SHA-256 == "$5$", SHA-512 == "$6$" */ - if (algo > 1) { - algo += 3; - algobits = 8; - } - foo[1] = '0' + (algo); - strcpy(salt, foo); - } - /* The opt_complementary adds a bit of additional noise, which is good - but not strictly needed. */ - crypt_make_salt(salt + ((!!algo) * 3), algobits, (int)&opt_complementary); - encrypted = pw_encrypt(chp, salt, 1); - puts(encrypted); - if (ENABLE_FEATURE_CLEAN_UP) { - free(encrypted); - } - return EXIT_SUCCESS; -} |