|
Message-ID: <20180704233248.GF29590@altlinux.org> Date: Thu, 5 Jul 2018 02:32:48 +0300 From: "Dmitry V. Levin" <ldv@...linux.org> To: owl-dev@...ts.openwall.com Subject: [PATCH 5/5] pam_tcb: request automatic prefix and entropy if libcrypt implements it Specify null pointers as PREFIX and RBYTES arguments of crypt_gensalt* functions if libcrypt supports this. --- pam_tcb/pam_tcb.8 | 3 ++- pam_tcb/support.c | 12 +++++++++++- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/pam_tcb/pam_tcb.8 b/pam_tcb/pam_tcb.8 index 0c6ed3c..8447352 100644 --- a/pam_tcb/pam_tcb.8 +++ b/pam_tcb/pam_tcb.8 @@ -211,7 +211,8 @@ obsolete FreeBSD-derived MD5-based algorithm. When updating a user's password, generate the salt with the specified .I prefix (which determines the hashing method to use). -The default is "$2y$", which requests +Unless the underlying libcrypt library implements a default hashing method, +the default is "$2y$", which requests .BR bcrypt , a Blowfish-based hashing method, which supports variable iteration counts. .TP diff --git a/pam_tcb/support.c b/pam_tcb/support.c index 5a60a5d..5b72426 100644 --- a/pam_tcb/support.c +++ b/pam_tcb/support.c @@ -676,6 +676,11 @@ char *do_crypt(pam_handle_t *pamh, const char *pass) { char *retval; char *salt; + +#ifdef CRYPT_GENSALT_IMPLEMENTS_AUTO_ENTROPY + salt = crypt_gensalt_ra(pam_unix_param.crypt_prefix, + pam_unix_param.count, NULL, 0); +#else char entropy[16]; int fd; @@ -695,6 +700,7 @@ char *do_crypt(pam_handle_t *pamh, const char *pass) pam_unix_param.count, entropy, sizeof(entropy)); memset(entropy, 0, sizeof(entropy)); +#endif if (!salt) { pam_syslog(pamh, LOG_CRIT, "crypt_gensalt_ra: %m"); @@ -833,7 +839,11 @@ int _set_ctrl(pam_handle_t *pamh, int flags, int argc, const char **argv) if (!parse_opt(pamh, *argv, the_cmdline_opts)) return 0; param = get_optval("prefix=", the_cmdline_opts); - pam_unix_param.crypt_prefix = param ?: "$2y$"; + pam_unix_param.crypt_prefix = param; +#ifndef CRYPT_GENSALT_IMPLEMENTS_DEFAULT_PREFIX + if (!pam_unix_param.crypt_prefix) + pam_unix_param.crypt_prefix = "$2y$"; +#endif param = get_optval("helper=", the_cmdline_opts); pam_unix_param.helper = param ?: CHKPWD_HELPER; -- ldv
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.