Browse Source

Wrap <pwd.h> so that calls go direct and the symbols are all weak.

Hide bcrypt_autorounds(), prefixing with an underbar for static builds.
OPENBSD_5_9
guenther 8 years ago
parent
commit
08d5782520
2 changed files with 8 additions and 7 deletions
  1. +5
    -2
      src/lib/libc/crypt/bcrypt.c
  2. +3
    -5
      src/lib/libc/crypt/cryptutil.c

+ 5
- 2
src/lib/libc/crypt/bcrypt.c View File

@ -1,4 +1,4 @@
/* $OpenBSD: bcrypt.c,v 1.54 2015/09/13 12:42:39 millert Exp $ */
/* $OpenBSD: bcrypt.c,v 1.55 2015/09/13 15:33:48 guenther Exp $ */
/*
* Copyright (c) 2014 Ted Unangst <tedu@openbsd.org>
@ -215,6 +215,7 @@ bcrypt_newhash(const char *pass, int log_rounds, char *hash, size_t hashlen)
explicit_bzero(salt, sizeof(salt));
return 0;
}
DEF_WEAK(bcrypt_newhash);
int
bcrypt_checkpass(const char *pass, const char *goodhash)
@ -232,13 +233,14 @@ bcrypt_checkpass(const char *pass, const char *goodhash)
explicit_bzero(hash, sizeof(hash));
return 0;
}
DEF_WEAK(bcrypt_checkpass);
/*
* Measure this system's performance by measuring the time for 8 rounds.
* We are aiming for something that takes around 0.1s, but not too much over.
*/
int
bcrypt_autorounds(void)
_bcrypt_autorounds(void)
{
struct timespec before, after;
int r = 8;
@ -391,3 +393,4 @@ bcrypt(const char *pass, const char *salt)
return gencrypted;
}
DEF_WEAK(bcrypt);

+ 3
- 5
src/lib/libc/crypt/cryptutil.c View File

@ -1,4 +1,4 @@
/* $OpenBSD: cryptutil.c,v 1.11 2015/09/12 14:56:50 guenther Exp $ */
/* $OpenBSD: cryptutil.c,v 1.12 2015/09/13 15:33:48 guenther Exp $ */
/*
* Copyright (c) 2014 Ted Unangst <tedu@openbsd.org>
*
@ -21,8 +21,6 @@
#include <login_cap.h>
#include <errno.h>
int bcrypt_autorounds(void);
int
crypt_checkpass(const char *pass, const char *goodhash)
{
@ -70,12 +68,12 @@ crypt_newhash(const char *pass, const char *pref, char *hash, size_t hashlen)
const char *choice = choices[i];
size_t len = strlen(choice);
if (strcmp(pref, choice) == 0) {
rounds = bcrypt_autorounds();
rounds = _bcrypt_autorounds();
break;
} else if (strncmp(pref, choice, len) == 0 &&
pref[len] == ',') {
if (strcmp(pref + len + 1, "a") == 0) {
rounds = bcrypt_autorounds();
rounds = _bcrypt_autorounds();
} else {
rounds = strtonum(pref + len + 1, 4, 31, &errstr);
if (errstr) {


Loading…
Cancel
Save