From a035e9f1a9028ad7fb4e9082cc7e383c3e4615cf Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Tue, 8 May 2007 23:23:35 +0000 Subject: cryptpw: forgot svn add... how typical of me :( --- loginutils/cryptpw.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 loginutils/cryptpw.c (limited to 'loginutils/cryptpw.c') diff --git a/loginutils/cryptpw.c b/loginutils/cryptpw.c new file mode 100644 index 000000000..d4bcad3e0 --- /dev/null +++ b/loginutils/cryptpw.c @@ -0,0 +1,37 @@ +/* vi: set sw=4 ts=4: */ +/* + * cryptpw.c + * + * Cooked from passwd.c by Thomas Lundquist + * + */ + +#include "busybox.h" + +int cryptpw_main(int argc, char **argv); +int cryptpw_main(int argc, char **argv) +{ + char *clear; + char salt[sizeof("$N$XXXXXXXX")]; /* "$N$XXXXXXXX" or "XX" */ + const char *opt_a = "md5"; + + getopt32(argc, argv, "a:", &opt_a); + /* move past the commandline options */ + /*argc -= optind; - unused */ + argv += optind; + + crypt_make_salt(salt, 1); /* des */ + if (strcasecmp(opt_a, "md5") == 0) { + strcpy(salt, "$1$"); + crypt_make_salt(salt + 3, 4); + } else if (strcasecmp(opt_a, "des") != 0) { + bb_show_usage(); + } + + clear = argv[0]; + if (!clear) + clear = xmalloc_getline(stdin); + + puts(pw_encrypt(clear, salt)); + return 0; +} -- cgit v1.2.3