The yescrypt code comes from yescrypt by Solar Designer <solar at
openwall.com>. It builds upon Colin Percival's scrypt.
See: http://openwall.com/yescrypt/ for reference.

The bcrypt hash module comes from crypt_blowfish, originally written
by Solar Designer <solar at openwall.com> and based on algorithms and
ideas by Niels Provos <provos at citi.umich.edu> and David Mazieres
<dm at lcs.mit.edu>.

The MD5, SHA256, and SHA512 hash modules, and the underlying
secure-hash primitives, were originally written by Ulrich Drepper
<drepper at cygnus.com> as part of the GNU C Library.  Other people
may also have contributed to them; our records are incomplete.

The DES hash module was originally FreeSec, written by David Burren
<davidb at werj.com.au> for the NetBSD project, and since extensively
modified by Geoffrey M. Rehmet, Mark R V Murray, and Zack Weinberg.

The NTHASH module comes from FreeBSD, originally written by Michael
Bretterklieber and based on the password hashing algorithm used by
the Windows NT LAN Manager (NTLM) from Microsoft Corporation to
provide easier compatibility with NT accounts.

The SUNMD5 hash module is a clean-room reimplementation by Zack Weinberg,
based on a specification written by Eli Collins for the Passlib project,
of an algorithm originally developed by Alec Muffett for use in Solaris 9.

The crypt and gensalt backends for yescrypt and gost-yescrypt are by
Vitaly Chikunov.

The implementation of the public interface (crypt, crypt_r, etc) is a
mashup of code from the GNU C Library with code from crypt_blowfish,
originally put together by Thorsten Kukuk and since completely
rewritten by Björn Esser and Zack Weinberg.

The above components were assembled into this library by Thorsten Kukuk
<kukuk at suse.de>, Björn Esser <besser82 at fedoraproject.org>, and
Zack Weinberg <zackw at panix.com>.
