From 5be433bdbc930377f480e51c67406a3841179339 Mon Sep 17 00:00:00 2001 From: tedu <> Date: Tue, 30 Dec 2014 10:27:24 +0000 Subject: copy bcrypt autotune from encrypt(1) and expose via crypt_newhash ok deraadt miod --- src/lib/libc/crypt/cryptutil.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/lib/libc/crypt/cryptutil.c') diff --git a/src/lib/libc/crypt/cryptutil.c b/src/lib/libc/crypt/cryptutil.c index f101240524..7e93dad3c8 100644 --- a/src/lib/libc/crypt/cryptutil.c +++ b/src/lib/libc/crypt/cryptutil.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cryptutil.c,v 1.6 2014/12/24 22:10:34 tedu Exp $ */ +/* $OpenBSD: cryptutil.c,v 1.7 2014/12/30 10:27:24 tedu Exp $ */ /* * Copyright (c) 2014 Ted Unangst * @@ -21,6 +21,8 @@ #include #include +int bcrypt_autorounds(void); + int crypt_checkpass(const char *pass, const char *goodhash) { @@ -64,9 +66,13 @@ crypt_newhash(const char *pass, const char *pref, char *hash, size_t hashlen) errno = EINVAL; goto err; } - rounds = strtonum(pref + 9, 4, 31, &errstr); - if (errstr) - goto err; + if (strcmp(pref + 9, "a") == 0) { + rounds = bcrypt_autorounds(); + } else { + rounds = strtonum(pref + 9, 4, 31, &errstr); + if (errstr) + goto err; + } rv = bcrypt_newhash(pass, rounds, hash, hashlen); err: -- cgit v1.2.3-55-g6feb