630 lines
27 KiB
Text
630 lines
27 KiB
Text
libxcrypt NEWS -- history of user-visible changes.
|
||
|
||
Please send bug reports, questions and suggestions to
|
||
<https://github.com/besser82/libxcrypt/issues>.
|
||
|
||
Version 4.5.2
|
||
* Use a more portable implementation for our fallback implementation
|
||
of explicit_bzero(); also get rid of the need for VLA in the new
|
||
implementation (issue #212).
|
||
* Fix compilation of alg-sha1 with optimization level 3 for GCC v11
|
||
and newer (issue #179).
|
||
|
||
Version 4.5.1
|
||
* Do not include undefined symbols in version-script (issue #181, #213).
|
||
* Fix build with clang-20+ on macOS (issue #216).
|
||
|
||
Version 4.5.0
|
||
* Implement the sm3crypt ($sm3$) hashing algorithm (issue #188).
|
||
* Implement the sm3-yescrypt ($sm3y$) hashing algorithm (issue #206).
|
||
* Fix the implementation of the crypt(3) functions and the crypt_gensalt(3)
|
||
functions to not overwrite the output buffer too early. (issue #209).
|
||
* Fix the strcpy_or_abort() function to call abort() in -DNDEBUG builds.
|
||
* Add some more testcases.
|
||
* Several fixes for issues found by Coverity.
|
||
|
||
Version 4.4.38
|
||
* Fix several "-Wunterminated-string-initialization", which are seen by
|
||
upcoming GCC 15.x (issue #194).
|
||
* Fix "-Wmaybe-uninitialized" in crypt.c, which is seen by GCC 13.3.0.
|
||
* Skip test/explicit-bzero if compiling with ASAN.
|
||
* Drop hard requirement for the pkg-config binary (issue #198).
|
||
|
||
Version 4.4.37
|
||
* Several fixes to the manpages (issue #185).
|
||
* Add binary compatibility for x86_64 GNU/Hurd (issue #189).
|
||
* Only test the needed makecontext signature during configure (issue #178).
|
||
* Fix -Werror=strict-overflow in lib/crypt-bcrypt.c, which is seen
|
||
by GCC 4.8.5 (issue #197).
|
||
|
||
Version 4.4.36
|
||
* Fix left over bits failing with Perl v5.38.0 (issue #173).
|
||
|
||
Version 4.4.35
|
||
* Fix build with Perl v5.38.0 (issue #170).
|
||
* Fix build with MinGW-w(32|64).
|
||
|
||
Version 4.4.34
|
||
* Update build-aux/m4/ax_valgrind_check.m4 to v23.
|
||
* Optimize some cast operation for performance in
|
||
lib/alg-yescrypt-platform.c.
|
||
* Add SHA-2 Maj() optimization proposed by Wei Dai in lib/alg-sha512.c.
|
||
* Explicitly clean the stack and context state after computation in
|
||
lib/alg-gost3411-2012-hmac.c, lib/alg-hmac-sha1.c, and lib/alg-sha256.c
|
||
(issue #168).
|
||
|
||
Version 4.4.33
|
||
* Fix -Werror=sign-conversion in lib/alg-yescrypt-platform.c.
|
||
With commit 894aee75433b4dc8d9724b126da6e79fa5f6814b we introduced some
|
||
changes to huge page handling, that show this error when building with
|
||
GCC v12.2.1, and thus need a small fix.
|
||
|
||
Version 4.4.32
|
||
* Improvements to huge page handling in lib/alg-yescrypt-platform.c.
|
||
When explicitly using huge pages, request the 2 MiB page size.
|
||
This should fix the issue where on a system configured to use 1 GiB
|
||
huge pages we'd fail on munmap() as we're only rounding the size up
|
||
to a multiple of 2 MiB. With the fix, we wouldn't use huge pages on
|
||
such a system. Unfortunately, now we also wouldn't use huge pages on
|
||
Linux kernels too old to have MAP_HUGE_2MB (issue #152).
|
||
|
||
Version 4.4.31
|
||
* Fix -Werror=conversion in lib/alg-yescrypt-opt.c
|
||
(issues #161 and #162).
|
||
* Add some SHA-2 Maj() optimization in lib/alg-sha256.c.
|
||
* Fix issues found by Covscan in test/getrandom-fallback.c.
|
||
* Fix -Werror=strict-overflow in lib/crypt-des.c, which is seen
|
||
by GCC 12.x (issues #155 and #163).
|
||
|
||
Version 4.4.30
|
||
* configure: Restore ucontext api functionality check.
|
||
In c3f01c72b303cbbb0cc8983120677edee2f3fa4b the use of the ucontext api
|
||
in the main program was removed, and with it the configure check for it.
|
||
However, the ucontext api is still used in the "explicit_bzero" test and
|
||
thus this test still needs to be in place.
|
||
See also: https://bugs.gentoo.org/838172
|
||
* configure: Restore the functionality of the '--disable-symvers' switch.
|
||
Without this fix the build was simply broken, if symbol versioning was
|
||
disabled for any reason, e.g. whether the compiler nor the linker
|
||
supporting it, or if disabled on purpose by the user (issue #142).
|
||
* Fix variable name in crypt(3) for a datamember of 'struct crypt_data'
|
||
(issue #153).
|
||
|
||
Version 4.4.29
|
||
* Add glibc-on-loongarch-lp64 (Loongson LA464 / LA664) entry to
|
||
libcrypt.minver. This was added in GNU libc 2.36.
|
||
|
||
Version 4.4.28
|
||
* Add glibc-on-or1k (OpenRISC 1000) entry to libcrypt.minver.
|
||
This was added in GNU libc 2.35.
|
||
|
||
Version 4.4.27
|
||
* Limit the maximum amount of rbytes to 64 bytes (512 bits) for
|
||
yescrypt, gost-yescrypt, and scrypt. Also reflect this limit
|
||
in the documentation (issue #145).
|
||
|
||
Version 4.4.26
|
||
* Fix compilation on systems with GCC >= 10, that do not support
|
||
declarations with __attribute__((symver)).
|
||
|
||
Version 4.4.25
|
||
* Add support for Python 3.11 in the configure script.
|
||
* Stricter checking of invalid salt characters (issue #135).
|
||
Hashed passphrases are always entirely printable ASCII, and do
|
||
not contain any whitespace or the characters ':', ';', '*', '!',
|
||
or '\'. (These characters are used as delimiters and special
|
||
markers in the passwd(5) and shadow(5) files.)
|
||
|
||
Version 4.4.24
|
||
* Add hash group for Debian in lib/hashes.conf.
|
||
Debian has switched to use the yescrypt hashing algorithm as
|
||
the default for new user passwords, so we should add a group
|
||
for this distribution.
|
||
* Overhaul the badsalt test.
|
||
Test patterns are now mostly generated rather than manually coded
|
||
into a big table. Not reading past the end of the “setting” part
|
||
of the string is tested more thoroughly (this would have caught the
|
||
sunmd5 $$ bug if it had been available at the time).
|
||
Test logs are tidier.
|
||
* Add ‘test-programs’ utility target to Makefile.
|
||
It is sometimes useful to compile all the test programs but not run
|
||
them. Add a Makefile target that does this.
|
||
* Fix incorrect bcrypt-related ifdeffage in test/badsalt.c.
|
||
The four variants of bcrypt are independently configurable, but the
|
||
badsalt tests for them were all being toggled by INCLUDE_bcrypt,
|
||
which is only the macro for the $2b$ variant.
|
||
* Fix bigcrypt-related test cases in test/badsalt.c.
|
||
The test spec was only correct when both or neither of bigcrypt and
|
||
descrypt were enabled.
|
||
* Detect ASan in configure and disable incompatible tests.
|
||
ASan’s “interceptors” for crypt and crypt_r have a semantic conflict
|
||
with libxcrypt, requiring a few tests to be disabled for builds with
|
||
-fsanitize-address. See commentary in test/crypt-badargs.c for an
|
||
explanation of the conflict, and the commentary in
|
||
build-aux/m4/zw_detect_asan.m4 for why a configure test is required.
|
||
* Fix several issues found by Covscan in the testsuite. These include:
|
||
- CWE-170: String not null terminated (STRING_NULL)
|
||
- CWE-188: Reliance on integer endianness (INCOMPATIBLE_CAST)
|
||
- CWE-190: Unintentional integer overflow (OVERFLOW_BEFORE_WIDEN)
|
||
- CWE-569: Wrong sizeof argument (SIZEOF_MISMATCH)
|
||
- CWE-573: Missing varargs init or cleanup (VARARGS)
|
||
- CWE-687: Argument cannot be negative (NEGATIVE_RETURNS)
|
||
|
||
Version 4.4.23
|
||
* Fix output calculation for gensalt_yescrypt_rn().
|
||
* Fix -Werror=conversion in lib/crypt-des-obsolete.c,
|
||
test/des-obsolete.c, and test/des-obsolete_r.c.
|
||
|
||
Version 4.4.22
|
||
* The crypt_checksalt() function has been fixed to correctly return
|
||
with 'CRYPT_SALT_INVALID', in case the setting, that is passed
|
||
to be checked, represents an empty passphrase or an uncomputed
|
||
setting for descrypt without any salt characters.
|
||
|
||
Version 4.4.21
|
||
* The crypt_checksalt() function will now return the value
|
||
'CRYPT_SALT_METHOD_LEGACY' in case the setting, that is passed
|
||
to be checked, uses a hashing method, which is considered to be
|
||
too weak for use with new passphrases.
|
||
|
||
Version 4.4.20
|
||
* Fix build when the CFLAGS variable, that is passed into the
|
||
configure script, has a leading whitespace character in it
|
||
(issue #123).
|
||
|
||
Version 4.4.19
|
||
* Improve fallback implementation of explicit_bzero.
|
||
* Add glibc-on-CSKY, ARC, and RISCV-32 entries to libcrypt.minver.
|
||
These were added in GNU libc 2.29, 2.32, and 2.33 respectively
|
||
(issue #122).
|
||
* Do not build xcrypt.h if we’re not going to install it.
|
||
* Do not apply --enable-obsolete-api-enosys mode to fcrypt.
|
||
* Compilation fix for NetBSD. NetBSD’s <unistd.h> declares encrypt
|
||
and setkey to return int, contrary to POSIX (which says they return
|
||
void). Rename those declarations out of the way with macros.
|
||
* Compilation fixes for building with GCC 11.
|
||
Basically fixes for explicit type-casting.
|
||
* Force update of existing symlinks during installation (issue #120).
|
||
|
||
Version 4.4.18
|
||
* Fix compilation errors on (Free)BSD (issue #110).
|
||
* Fix conversion error in lib/alg-gost3411-core.c, which is seen by
|
||
some sensitive compilers.
|
||
* Convert build scripts to Perl.
|
||
The minimum version of Perl required is 5.14.
|
||
|
||
Version 4.4.17
|
||
* Fix compilation error in 'alignas (type)' with older versions
|
||
of glibc and/or gcc (issue #107).
|
||
* Salt string compatibility with generic implementations (issue #105).
|
||
All other existing implementations of the md5crypt, sha256crypt,
|
||
and sha512crypt hashing methods allow any ASCII character to be
|
||
present in the salt string.
|
||
We changed our implementation of these hash methods to be compliant
|
||
with the general behaviour, except for the colon ':' character,
|
||
which serves a special purpose in the Unix shadow file, and the
|
||
newline '\n' character, since all parameters of the user data must
|
||
be on the same line within the Unix shadow file.
|
||
* Fix for GCC 10.2 on s390x.
|
||
|
||
Version 4.4.16
|
||
* Add support for the e2k architecture.
|
||
|
||
Version 4.4.15
|
||
* The compatibility symbols crypt_gensalt_r, xcrypt, xcrypt_r,
|
||
xcrypt_gensalt, and xcrypt_gensalt_r are deprecated further.
|
||
(These are alternative names for crypt_gensalt_rn, crypt, crypt_r,
|
||
crypt_gensalt, and crypt_gensalt_rn, respectively; there is no
|
||
difference in behavior.)
|
||
|
||
In an --enable-xcrypt-compat-files configuration, newly compiled
|
||
programs can still use functions with these names if they include
|
||
xcrypt.h, but a program that attempts to use one of these functions
|
||
*without* including xcrypt.h will fail to link. In particular, this
|
||
means AC_CHECK_FUNCS([xcrypt]) will not detect xcrypt, because the
|
||
test program generated by AC_CHECK_FUNCS does not include xcrypt.h.
|
||
|
||
In a --disable-xcrypt-compat-files --enable-obsolete-api
|
||
configuration, xcrypt.h is not installed and newly compiled programs
|
||
cannot use functions with these names, but existing binaries that
|
||
expect to find these symbols in a shared libcrypt.so.1 will still
|
||
work.
|
||
|
||
In a --disable-obsolete-api configuration, these symbols are not
|
||
defined at all; moreover, --disable-obsolete-api now implies
|
||
--disable-xcrypt-compat-files (which means xcrypt.h isn't installed).
|
||
|
||
Version 4.4.14
|
||
* Renamed bootstrap script: 'bootstrap' -> 'autogen.sh'.
|
||
If building from a Git checkout instead of a tarball release,
|
||
use './autogen.sh' to create the configure script.
|
||
|
||
Version 4.4.13
|
||
* libxcrypt now builds (including working tests) on Mac OSX.
|
||
* Speed up ka-sunmd5 by skipping most of the test phrases.
|
||
ka-sunmd5 is slower than the entire rest of the testsuite put
|
||
together, because the sunmd5 hash is Just That Slow and we have to do
|
||
extra tests for it to ensure bug-compatibility. No easy optimizations
|
||
are possible and the difficult optimizations are not worth the
|
||
engineering effort for this obsolete hash. Instead, skip most of the
|
||
test phrases. See comments in test/ka-table-gen.py!h_sunmd5 for
|
||
further explanation.
|
||
|
||
Version 4.4.12
|
||
* Another fix for GCC v10.x, which occurs on s390 architectures only.
|
||
|
||
Version 4.4.11
|
||
* Fixes for GCC v10.x (issue #95).
|
||
* Change how the known-answer tests are parallelized.
|
||
|
||
Version 4.4.10
|
||
* Fix ordering of hash methods in crypt-hashes.h when generated
|
||
using gawk < 4.1.0.
|
||
|
||
Version 4.4.9
|
||
* Fix false positive finding from CovScan.
|
||
|
||
Version 4.4.8
|
||
* Add binary compatibility for GNU/Hurd and GNU/kFreeBSD.
|
||
|
||
Version 4.4.7
|
||
* LICENSING: Add missing files and update license information.
|
||
* Fix -Wformat in test/crypt-kat.c.
|
||
|
||
Version 4.4.6
|
||
* Make unalignment test really unaligned.
|
||
|
||
Version 4.4.5
|
||
* Fix alignment problem for GOST 34.11 (Streebog) in gost-yestcrypt.
|
||
Some architectures in some circumstances do not allow unaligned
|
||
memory access (such as ARM, MIPS, SPARC) triggering SIGBUS. This
|
||
patch very crudely fixes this issue.
|
||
Being unfixed this would trigger SIGBUS when password buffer is
|
||
unaligned. Crash and fix are tested on UltraSparc T5 on GCC Compile
|
||
farm.
|
||
|
||
Version 4.4.4
|
||
* The crypt_* functions will now all fail and set errno to ERANGE if
|
||
their 'phrase' argument is longer than CRYPT_MAX_PASSPHRASE_SIZE
|
||
characters (this is currently 512). Formerly, longer passphrases
|
||
would either be silently accepted, silently truncated, or the
|
||
library would crash, depending on the hashing method.
|
||
* The NT hashing method no longer truncates passphrases at 128
|
||
characters; Windows does not do this. (The Windows login dialog
|
||
_limits_ interactively entered passphrases to 127 characters.
|
||
Passphrases set via the low-level API can be longer.)
|
||
|
||
Version 4.4.3
|
||
* Fix the value of SUNMD5_MAX_ROUNDS.
|
||
* Add generated C++-guards to <xcrypt.h>.
|
||
* Add --enable-obsolete-api-enosys configure option.
|
||
If enabled, this option replaces the obsolete APIs (fcrypt,
|
||
encrypt{,_r}, and setkey{,_r}) with stubs that set errno to
|
||
ENOSYS and return without performing any real operations.
|
||
This allows one to disable DEScrypt support while preserving
|
||
POSIX compliance.
|
||
For security reasons, the encrypt{,r} functions will also
|
||
overwrite their data-block argument with random bits.
|
||
The fcrypt function will always produce a failure token
|
||
(*0 or *1), unless the library was also configured with
|
||
--disable-failure-tokens, in which case it will always
|
||
return NULL.
|
||
|
||
Version 4.4.2
|
||
* Add test-alg-yescrypt for improved coverage.
|
||
* Add x32 specific inline asm.
|
||
|
||
Version 4.4.1
|
||
* Change the output of the gensalt function for the NT hashing method
|
||
($3$) to output just its prefix ($3$) instead of a fake salt.
|
||
The output buffer for the returned string must be at least 4 bytes
|
||
long.
|
||
* Decrase the minimum required amount of random bytes for the NT
|
||
hashing method to 1 byte, which is actually not used.
|
||
* The default linker flags now generate binaries with full read-only
|
||
relocations (including full read-only re-mapping of the GOT), if
|
||
supported by the linker and the system's native binary format.
|
||
|
||
Version 4.4.0
|
||
* Implement the crypt_preferred_method function.
|
||
This function can be used as a convenience function to get the prefix
|
||
of the preferred hash method.
|
||
|
||
Version 4.3.4
|
||
* --enable-hashes now supports 'fedora' as a group of hashing methods.
|
||
* Add aliases for xcrypt{,_r} and xcrypt_gensalt{,_r}.
|
||
They were added for code compatibility with libxcrypt v3.1.1
|
||
and earlier.
|
||
* Install the <xcrypt.h> header file, declaring the previously named
|
||
aliases, and a symlink from libxcrypt.so to libcrypt.so, if a shared
|
||
library is build. For static libraries a corresponding symlink for
|
||
the archive file will be installed.
|
||
The installation of the compatibility files can be disabled by
|
||
passing the '--disable-xcrypt-compat-files' flag to the configure
|
||
script.
|
||
* Replace the prototype for the crypt_gensalt_r function with a
|
||
declaration through a macro, so new compiled applications link
|
||
against the identical crypt_gensalt_rn function directly.
|
||
|
||
Version 4.3.3
|
||
* Add an alias for crypt_gensalt_r.
|
||
The function was available in older versions (v3.1.1 and earlier)
|
||
of libxcrypt. It has the same semantics and the same prototype as
|
||
the crypt_gensalt_rn function.
|
||
|
||
Version 4.3.2
|
||
* Fix the gensalt function for the NT hashing method ($3$) to
|
||
properly terminate its output string. The output buffer for the
|
||
returned string must be at least 30 bytes long.
|
||
* Remove the gensalt function for the bcrypt x variant ($2x$).
|
||
This prefix was never intended for use when hashing new passphrases.
|
||
The only use case originally intended was to manually edit '$2a$' to
|
||
'$2x$' in passphrase hashes to knowingly take the risk yet enable
|
||
users to continue to log in when upgrading systems with buggy bcrypt
|
||
implementations to fixed versions.
|
||
|
||
Version 4.3.1
|
||
* Reduce the number of methods that can be the default for new hashes.
|
||
We don’t want to accidentally encourage use of gost-yescrypt,
|
||
scrypt, or the bug-compatibility bcrypt variants by people who do
|
||
not have a specific need for them.
|
||
* sha256crypt ($5$) is not considered to be strong anymore. Thus
|
||
it was dropped from the STRONG and DEFAULT sets.
|
||
* The four variants of bcrypt ($2b$, $2a$, $2y$, $2x$) are now
|
||
independently selectable at configure time. The $2x$ variant has
|
||
been dropped from the STRONG set, because it has a severe bug
|
||
causing it to be easy to find collisions for some passwords. The
|
||
$2x$ and $2y$ variants have been dropped from the FreeBSD, NetBSD,
|
||
OpenBSD, and Solaris compatibility sets, because those operating
|
||
systems never supported those variants.
|
||
|
||
Version 4.3.0
|
||
* Implement the gost-yescrypt ($gy$) hashing algorithm.
|
||
* Remove all of the nonnull annotations, which are a questionable
|
||
optimization that have caused problems in the past and may cause
|
||
future problems on some systems.
|
||
* Rename all hash methods to match naming in John the Ripper.
|
||
* Make the configure switches --enable-obsolete-api and
|
||
--enable-hashes process their arguments case-insensitively; for
|
||
instance, "--enable-hashes=OpenBSD" and "--enable-hashes=openbsd"
|
||
are now understood as synonymous.
|
||
* Fix gensalt for bigcrypt if descrypt hash method is not selected
|
||
at compile time.
|
||
* Fix the bigcrypt hash method to reject too short settings and/or
|
||
descrypt hashes with a truncated phrase. Hashes with a setting
|
||
shorter than 13 characters and phrases shorter than 8 characters
|
||
are valid bigcrypt hashes, although they are identical with the
|
||
output generated by descrypt under the same conditions.
|
||
This only applies when the descrypt hash method is not selected
|
||
at compile time.
|
||
* Implement crypt_checksalt, which can be used by portable users of
|
||
libxcrypt to check whether the desired hash method is supported.
|
||
* Make a default prefix available whenever at least one strong hash
|
||
is enabled.
|
||
* Fix the definition of 'CRYPT_GENSALT_IMPLEMENTS_DEFAULT_PREFIX'
|
||
to reflect whether the default prefix is available or not.
|
||
|
||
Version 4.2.3
|
||
* Add bootstrap script. If building from a Git checkout instead of a
|
||
tarball release, use './bootstrap' to create the configure script.
|
||
* Use sha512 implementation from Colin Percival. Thus we now have a
|
||
sha512 implementation under the BSD license.
|
||
* Use md5 implementation from Alexander Peslyak. Thus we now have a
|
||
md5 implementation in the public domain.
|
||
* 'make dist' now generates bzip2 and xz compressed tarballs along
|
||
with the default gzip compressed tarball.
|
||
* The group 'altlinux' has been renamed to 'alt' in --enable-hashes,
|
||
as the ALTLINUX distribution has been rebranded to ALT some time ago.
|
||
* New tagged versions are automatically submitted for Coverity Scan:
|
||
https://scan.coverity.com/projects/besser82-libxcrypt
|
||
|
||
Version 4.2.2
|
||
* Convert existing manpages to BSD mdoc format.
|
||
|
||
Version 4.2.1
|
||
* Fix tests for yescrypt and scrypt, when failure-tokens have been
|
||
disabled.
|
||
|
||
Version 4.2.0
|
||
* Implement yescrypt ($y$) and scrypt ($7$) hashing algorithms.
|
||
* For scrypt the implemented gensalt function ensures every new hash
|
||
is computed using at least 32 MiBytes of RAM.
|
||
* yescrypt is the new default method used for new hashes.
|
||
* --enable-hashes now supports additional groups of hashing methods:
|
||
'altlinux', 'owl', and 'suse', which select the methods historically
|
||
supported on those operating systems.
|
||
* Added 'XCRYPT_VERSION_*' macros.
|
||
|
||
Version 4.1.2
|
||
* Add optional 'check-valgrind' target to the Makefile.
|
||
* Replace crypt-sha{256,512}.c with an implementation in the Public
|
||
Domain.
|
||
* Add alias man-pages for other crypt functions.
|
||
* Add configure option --disable-failure-tokens, which causes crypt
|
||
and crypt_r to return NULL on failure, as crypt_rn and crypt_ra do,
|
||
instead of a special "failure token". Using this option improves
|
||
compatibility with programs written on the assumption that, like
|
||
most C library functions, crypt and crypt_r will return NULL on
|
||
failure; but it breaks compatibility with programs that assume these
|
||
functions never return NULL. We're not sure which type of program
|
||
is more common. Please let us know if you encounter either.
|
||
* Improved handling of out-of-range cost parameters in gensalt.
|
||
The behavior is now:
|
||
- for hashes with a fixed cost parameter (DES/trad, DES/big, NTHASH,
|
||
MD5/bsd), crypt_gensalt only accepts 0 as the rounds argument.
|
||
- for hashes with a linear cost parameter (DES/bsdi, MD5/sun, SHA1,
|
||
SHA256, SHA512), crypt_gensalt accepts 0 or any value in the range
|
||
[1, ULONG_MAX] and clips it to the actual valid range for the hash
|
||
function, if necessary. In the case of DES/bsdi, even numbers
|
||
become odd, as well.
|
||
- for hashes with an exponential cost parameter (bcrypt),
|
||
crypt_gensalt only accepts 0 or a value in the actual valid range.
|
||
- the documented valid range for SHA1 is now [4, 4294967295] instead
|
||
of [1, 4294967295].
|
||
- all of this is tested.
|
||
|
||
Version 4.1.1
|
||
* --enable-hashes now supports additional groups of hashing methods:
|
||
'freebsd', 'netbsd', 'openbsd', 'osx', and 'solaris', which select
|
||
the hashes historically supported on those operating systems.
|
||
* Predictable behavior when arguments to crypt() are NULL or invalid
|
||
(issue #15).
|
||
* Hash formats $5, $6, and $md5 once again allow an explicit rounds
|
||
parameter specifying the default number of rounds (issue #16).
|
||
* The library no longer uses swapcontext(), for ease of debugging and
|
||
better compatibility with hardening mechanisms like Intel CET
|
||
(issue #18).
|
||
* Can now be built with versions of GNU ld older than 2.26.2.
|
||
* crypt_gensalt_ra no longer leaks memory on failure.
|
||
|
||
Version 4.1.0
|
||
* Fix spelling of SUSE.
|
||
* Lower the minimum required automake version to 1.14.
|
||
* Fix build with USE_SWAPCONTEXT turned off.
|
||
* Extend --enable-weak-hashes configure option to accept optional
|
||
"glibc" parameter. When specified, it enables only those of
|
||
weak hashes that are supported by historic versions of the
|
||
GNU libc.
|
||
* Fix the leak of obtained random bytes.
|
||
* Check expected output strings for deterministic methods.
|
||
* Fix memory leak in crypt_sha1crypt_rn.
|
||
* Fix read of random bytes out of bounds in gensalt_sha1crypt_rn.
|
||
* Make it possible to disable individual hashes at configure time.
|
||
The default is --enable-hashes=all. --enable-hashes=strong is the
|
||
equivalent of the old --disable-weak-hashes. You could even do
|
||
--enable-hashes=bcrypt,des to get a binary-compatible libcrypt.so.1
|
||
that still supports almost nothing other than bcrypt.
|
||
* Make salt validation pickier.
|
||
* Replace crypt-sunmd5.c with BSD-licensed cleanroom reimplementation.
|
||
* Make crypt_gensalt for $sha1 deterministic.
|
||
* Fix incorrect output-size computation in crypt_sha1crypt_rn.
|
||
* Add docs for SHA1, MD5/Sun, NTHASH.
|
||
* Introduce CRYPT_GENSALT_IMPLEMENTS_* feature test macros.
|
||
* Install libcrypt.pc symlink along with libxcrypt.pc.
|
||
* Extend --enable-obsolete-api configure option.
|
||
Make vendor specific parts of compatibility ABI that are enabled by
|
||
--enable-obsolete-api option configurable.
|
||
This allows vendors to enable only those parts of compatibility ABI
|
||
that are relevant to them.
|
||
* Extend overall test coverage.
|
||
|
||
Version 4.0.1
|
||
* Fixes for GCC v8.x
|
||
* Add symbol version for riscv64
|
||
* Fixed an uninitialized value in test-crypt-badsalt
|
||
|
||
Version 4.0.0
|
||
* Full binary backward compatibility with glibc libcrypt; all programs
|
||
compiled with glibc libcrypt, including vendor-patched versions that
|
||
include the Openwall extensions, should work with this libcrypt
|
||
(however, programs compiled against this libcrypt will NOT work with
|
||
glibc libcrypt).
|
||
* struct crypt_data is now only 32kB (from 128kB), and divided into a
|
||
public-API section and a properly opaque internal section.
|
||
* New feature: supplying a null pointer as the "prefix" argument to
|
||
any of the crypt_gencrypt functions will cause it to select the best
|
||
available hash function (in this release, bcrypt in mode 'a').
|
||
CAUTION: it must be a null pointer, not an empty string. If you
|
||
supply an empty string, that selects DES, which is the *worst*
|
||
available hash function.
|
||
* New feature: supplying a null pointer as the "rbytes" argument to
|
||
any of the crypt_gencrypt functions will cause it to acquire random
|
||
bytes from the operating system.
|
||
* The legacy functions bigcrypt, fcrypt, encrypt, encrypt_r,
|
||
setkey, and setkey_r are no longer available for use by new programs.
|
||
All of these (except fcrypt, which was just another name for crypt)
|
||
force the use of DES, which is no longer safe for any application.
|
||
* New configure option --disable-obsolete-api removes the above
|
||
functions from the library. Since this breaks compatibility with
|
||
glibc's libcrypt, when this option is used the shared library will
|
||
be libcrypt.so.2 instead of libcrypt.so.1, and all of the
|
||
compatibility symbol versions for the crypt* functions will be
|
||
omitted. This option is the default on all operating systems where
|
||
there is no GNU C Library to be compatible with.
|
||
* New configure option --disable-weak-hashes removes all support for
|
||
DES and MD5 hashes from the library. This option implies
|
||
--disable-obsolete-api, and will prevent DES and MD5 password hashes
|
||
from being *verified* -- accounts with such hashes are effectively
|
||
locked. It is intended for use in high-security new installations.
|
||
* Sensitive intermediate data is now thoroughly scrubbed from the
|
||
stack and CPU registers before the crypt functions return to their
|
||
callers.
|
||
* UFC-crypt has been replaced with FreeSec; this enables the reduction in
|
||
size of crypt_data, and adds full support for BSD extended DES hashes.
|
||
* Extensive code cleanup and portability work. The static library
|
||
should now be buildable with any C99 compiler, although some
|
||
features may not be available (notably acquiring random bytes from
|
||
the operating system and scrubbing the stack). The shared library
|
||
does still require some GNU extensions for symbol versioning.
|
||
* The configure options --enable-Wno-cast-align and --enable-bootstrap
|
||
are no longer necessary and have been removed.
|
||
* If building from a Git checkout instead of a tarball release, use
|
||
'autoreconf -i' to create the configure script; autogen.sh has been
|
||
removed.
|
||
* More thoroughly tested.
|
||
|
||
Version 3.1.1
|
||
* Add '--enable-Wno-cast-align' to silence 'cast increases required alignment'
|
||
* Whitespace clean-up
|
||
|
||
Version 3.1.0
|
||
* Update upstream-contact
|
||
* Add './configure --enable-bootstrap' to skip some tests on initial build
|
||
* Add bootstrap-script for Autotools
|
||
* Add LICENSE for bcrypt
|
||
* Update crypt_blowfish to v1.3
|
||
* Add '-Wextra' to CFLAGS
|
||
* Fix warnings generated by gcc 5.1.1
|
||
* Update Autotools
|
||
|
||
Version 3.0.4
|
||
* Fix warnings generated by gcc 4.6
|
||
|
||
Version 3.0.3
|
||
* Fix memory leak
|
||
* Fix compiler warnings
|
||
|
||
Version 3.0.2
|
||
* Fix generating salts for MD5
|
||
|
||
Version 3.0.1
|
||
* Fix build failures
|
||
|
||
Version 3.0
|
||
* Add sha256 and sha512 hashes
|
||
* Move all hashes into plugins
|
||
|
||
Version 2.4
|
||
* Sync with crypt_blowfish 1.0
|
||
|
||
Version 2.3
|
||
* Fix problems with gcc > 4.0
|
||
|
||
Version 2.2
|
||
* Fix realloc call in md5-crypt
|
||
|
||
Version 2.1
|
||
* Enable x86.S for i386 again
|
||
|
||
Version 2.0
|
||
* Rename all crypt* functions to xcrypt* to avoid clash with normal
|
||
libcrypt from glibc
|
||
|
||
Version 1.4
|
||
* Fix compiling with glibc > 2.3.1
|
||
* Sync with crypt_blowfish 0.4.5
|
||
|
||
Version 1.3
|
||
* Sync with current glibc CVS (fix for not correct initialication of
|
||
internal data structs)
|
||
|
||
Version 1.2
|
||
* Fix building with glibc 2.3.x
|
||
* Add support for HPPA
|
||
|
||
Version 1.1
|
||
* merge md5.h with xcrypt.h
|
||
* Add SHA1 functions and crypt
|
||
|
||
Version 1.0
|
||
* First release
|