Commit Graph

8 Commits

Author SHA1 Message Date
sjg
3a0c68edfd Add support for SHA1 hashed passwords.
The algorithm used is essentially PBKDF1 from RFC 2898 but using
hmac_sha1 rather than SHA1 directly (suggested by smb@research.att.com).

 * The format of the encrypted password is:
 * $<tag>$<iterations>$<salt>$<digest>
 *
 * where:
 *      <tag>           is "sha1"
 *      <iterations>    is an unsigned int identifying how many rounds
 *                      have been applied to <digest>.  The number
 *                      should vary slightly for each password to make
 *                      it harder to generate a dictionary of
 *                      pre-computed hashes.  See crypt_sha1_iterations.
 *      <salt>          up to 64 bytes of random data, 8 bytes is
 *                      currently considered more than enough.
 *      <digest>        the hashed password.

hmac.c implementes HMAC as defined in RFC 2104 and includes a unit
test for both hmac_sha1 and hmac_sha1 using a selection of the Known
Answer Tests from RFC 2202.

It is worth noting that to be FIPS compliant the hmac key (password)
should be 10-20 chars.
2004-07-02 00:05:23 +00:00
jdolecek
9caa6d5440 make itoa64[] const 2003-08-06 08:37:19 +00:00
itojun
fcfc71fca0 use strlcat 2003-07-14 12:37:13 +00:00
thorpej
d1bb0be3e8 If libcrypto is defined, use the MD5 routines from libcrypto, rather
than from libc.
2003-04-17 00:29:43 +00:00
ad
e5afda7b98 Ensure that the salt is always terminated properly with '$'. Makes Cyrus'
pwcheck (which either modifies the buffer or was passing bad password
strings) happy. Noted by Cillian Sharkey <cns@redbrick.dcu.ie>.
2001-09-10 12:33:25 +00:00
ad
c9305d1df0 Fix comment. 2000-12-03 13:01:37 +00:00
ad
684eb80714 Cosmetic nits. 2000-08-03 08:32:36 +00:00
ad
49de2aa1ce Add __md5crypt(), for internal use by libcrypt. This behaves for the most
part like crypt() but uses a proprietry encryption scheme that utilises MD5.
From FreeBSD via OpenBSD.
2000-07-06 11:12:42 +00:00