From 7e84e539de530b2060f0e570fc8f063ed0aaad2f Mon Sep 17 00:00:00 2001 From: Denis Vlasenko Date: Tue, 8 May 2007 17:52:17 +0000 Subject: cryptpw: new applet (a bit less than 3k added) (by Thomas Lundquist ) --- loginutils/Config.in | 6 ++++++ loginutils/Kbuild | 1 + loginutils/passwd.c | 50 -------------------------------------------------- 3 files changed, 7 insertions(+), 50 deletions(-) (limited to 'loginutils') diff --git a/loginutils/Config.in b/loginutils/Config.in index e8ab9ec3c..919091ec6 100644 --- a/loginutils/Config.in +++ b/loginutils/Config.in @@ -166,6 +166,12 @@ config FEATURE_PASSWD_WEAK_CHECK help With this option passwd will refuse new passwords which are "weak". +config CRYPTPW + bool "cryptpw" + default n + help + Applet for crypting a string. + config SU bool "su" default n diff --git a/loginutils/Kbuild b/loginutils/Kbuild index 6c9d193e1..1b1165a6e 100644 --- a/loginutils/Kbuild +++ b/loginutils/Kbuild @@ -7,6 +7,7 @@ lib-y:= lib-$(CONFIG_ADDGROUP) += addgroup.o lib-$(CONFIG_ADDUSER) += adduser.o +lib-$(CONFIG_CRYPTPW) += cryptpw.o lib-$(CONFIG_GETTY) += getty.o lib-$(CONFIG_LOGIN) += login.o lib-$(CONFIG_PASSWD) += passwd.o diff --git a/loginutils/passwd.c b/loginutils/passwd.c index b937ce45e..a323c0a40 100644 --- a/loginutils/passwd.c +++ b/loginutils/passwd.c @@ -12,44 +12,6 @@ static void nuke_str(char *str) if (str) memset(str, 0, strlen(str)); } - -static int i64c(int i) -{ - i &= 0x3f; - if (i == 0) - return '.'; - if (i == 1) - return '/'; - if (i < 12) - return ('0' - 2 + i); - if (i < 38) - return ('A' - 12 + i); - return ('a' - 38 + i); -} - - -static void crypt_make_salt(char *p, int cnt) -{ - unsigned x = x; /* it's pointless to initialize it anyway :) */ - - x += getpid() + time(NULL) + clock(); - do { - /* x = (x*1664525 + 1013904223) % 2^32 generator is lame - * (low-order bit is not "random", etc...), - * but for our purposes it is good enough */ - x = x*1664525 + 1013904223; - /* BTW, Park and Miller's "minimal standard generator" is - * x = x*16807 % ((2^31)-1) - * It has no problem with visibly alternating lowest bit - * but is also weak in cryptographic sense + needs div, - * which needs more code (and slower) on many CPUs */ - *p++ = i64c(x >> 16); - *p++ = i64c(x >> 22); - } while (--cnt); - *p = '\0'; -} - - static char* new_password(const struct passwd *pw, uid_t myuid, int algo) { char salt[sizeof("$N$XXXXXXXX")]; /* "$N$XXXXXXXX" or "XX" */ @@ -109,18 +71,6 @@ static char* new_password(const struct passwd *pw, uid_t myuid, int algo) } -#if 0 -static int get_algo(char *a) -{ - /* standard: MD5 */ - int x = 1; - if (strcasecmp(a, "des") == 0) - x = 0; - return x; -} -#endif - - static int update_passwd(const char *filename, const char *username, const char *new_pw) { -- cgit v1.2.3