diff options
author | Lennart Poettering <lennart@poettering.net> | 2019-11-13 23:13:42 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2020-01-15 15:26:27 +0100 |
commit | 42f3b2f97510ab364717154c01a03f5ddd9541a1 (patch) | |
tree | 06849d5179287878f3e53890573fbec197cedd0b /src/basic/user-util.c | |
parent | nss-util: add macros for generating getpwent()/getgrent() prototypes (diff) | |
download | systemd-42f3b2f97510ab364717154c01a03f5ddd9541a1.tar.xz systemd-42f3b2f97510ab364717154c01a03f5ddd9541a1.zip |
shared: split out crypt() specific helpers into its own .c/.h in src/shared/
This way we can use libxcrypt specific functionality such as
crypt_gensalt() and thus take benefit of the newer algorithms libxcrypt
implements. (Also adds support for a new env var $SYSTEMD_CRYPT_PREFIX
which may be used to select the hash algorithm to use for libxcrypt.)
Also, let's move the weird crypt.h inclusion into libcrypt.h so that
there's a single place for it.
Diffstat (limited to 'src/basic/user-util.c')
-rw-r--r-- | src/basic/user-util.c | 37 |
1 files changed, 0 insertions, 37 deletions
diff --git a/src/basic/user-util.c b/src/basic/user-util.c index 571578c4e4..68c6dd0da7 100644 --- a/src/basic/user-util.c +++ b/src/basic/user-util.c @@ -945,40 +945,3 @@ int fgetsgent_sane(FILE *stream, struct sgrp **sg) { return !!s; } #endif - -int make_salt(char **ret) { - static const char table[] = - "abcdefghijklmnopqrstuvwxyz" - "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - "0123456789" - "./"; - - uint8_t raw[16]; - char *salt, *j; - size_t i; - int r; - - /* This is a bit like crypt_gensalt_ra(), but doesn't require libcrypt, and doesn't do anything but - * SHA512, i.e. is legacy-free and minimizes our deps. */ - - assert_cc(sizeof(table) == 64U + 1U); - - /* Insist on the best randomness by setting RANDOM_BLOCK, this is about keeping passwords secret after all. */ - r = genuine_random_bytes(raw, sizeof(raw), RANDOM_BLOCK); - if (r < 0) - return r; - - salt = new(char, 3+sizeof(raw)+1+1); - if (!salt) - return -ENOMEM; - - /* We only bother with SHA512 hashed passwords, the rest is legacy, and we don't do legacy. */ - j = stpcpy(salt, "$6$"); - for (i = 0; i < sizeof(raw); i++) - j[i] = table[raw[i] & 63]; - j[i++] = '$'; - j[i] = 0; - - *ret = salt; - return 0; -} |