CRYPT_GENSALT(3C) Standard C Library Functions CRYPT_GENSALT(3C)
NAME
crypt_gensalt - generate salt string for string encoding
SYNOPSIS
#include <crypt.h>
char *crypt_gensalt(
const char *oldsalt,
const struct passwd *userinfo);
DESCRIPTION
The
crypt_gensalt() function generates the salt string required by
crypt(3C).
If
oldsalt is
NULL,
crypt_gensalt() uses the algorithm defined by
CRYPT_DEFAULT in
/etc/security/policy.conf. See
policy.conf(5).
If
oldsalt is non-null,
crypt_gensalt() determines if the algorithm
specified by
oldsalt is allowable by checking the
CRYPT_ALGORITHMS_ALLOW and
CRYPT_ALGORITHMS_DEPRECATE variables in
/etc/security/policy.conf. If
the algorithm is allowed,
crypt_gensalt() loads the appropriate shared
library and calls
crypt_gensalt_impl(3C). If the algorithm is not allowed
or there is no entry for it in
crypt.conf,
crypt_gensalt() uses the
default algorithm.
The mechanism just described provides a means to migrate users to new
password hashing algorithms when the password is changed.
RETURN VALUES
Upon successful completion,
crypt_gensalt() returns a pointer to the new
salt. Otherwise a null pointer is returned and
errno is set to indicate
the error.
ERRORS
The
crypt_gensalt() function will fail if:
EINVAL The configuration file
crypt.conf contains an invalid entry.
ELIBACC The required shared library was not found.
ENOMEM There is insufficient memory to perform hashing.
USAGE
The value returned by
crypt_gensalt() points to a null-terminated string.
The caller of
crypt_gensalt() is responsible for calling
free(3C).
Applications dealing with user authentication and password changing
should not call
crypt_gensalt() directly but should instead call the
appropriate
pam(3PAM) functions.
ATTRIBUTES
See
attributes(7) for descriptions of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+--------------------+-----------------+
|Interface Stability | Evolving |
+--------------------+-----------------+
|MT-Level | MT-Safe |
+--------------------+-----------------+
SEE ALSO
passwd(1),
crypt(3C),
crypt_genhash_impl(3C),
crypt_gensalt_impl(3C),
getpassphrase(3C),
malloc(3C),
pam(3PAM),
crypt.conf(5),
passwd(5),
policy.conf(5),
attributes(7) June 10, 2002
CRYPT_GENSALT(3C)