This is an implementation of a password hashing algorithm, provided
via the crypt(3) and a reentrant interface.  It is compatible with
OpenBSD bcrypt.c (version 2a) by Niels Provos and David Mazieres.

I've placed this code in the public domain.  Please, see the comment
in crypt_blowfish.c for more information.

You can use the provided routines in your own packages, or link them
into a C library.  I've provided hooks for linking into GNU libc, but
it shouldn't be too hard to get this into another C library.  Note
that simply adding this code into your libc is probably not enough to
make your system use the new password hashing algorithm.  Changes to
passwd(1), PAM modules, or whatever else your system uses will likely
be needed as well.  These are not a part of this package, but see
LINKS for a pointer to our tcb suite.

Instructions on using the routines in one of the two common ways are
given below.  It is recommended that you test the routines on your
system before you start.  Type "make check" or "make check_threads"
(if you have the POSIX threads library), then "make clean".


1. Using the routines in your programs.

The available interfaces are in ow-crypt.h, and this is the file you
should include.  You won't need crypt.h.  When linking, add all of the
C files and x86.S (you can compile and link it even on a non-x86, it
will produce no code in this case).


2. Building the routines into GNU C library.

For versions 2.1 to 2.1.3, extract the library sources and the crypt
and linuxthreads add-ons as usual.  Apply the patch for glibc 2.1.3
provided in this package.  Enter crypt/sysdeps/unix/, and rename
crypt.h to gnu-crypt.h within that directory.  Copy C sources, header,
and assembly (x86.S) files from this package in there as well (but be
sure you don't overwrite the Makefile).  Configure, build, and install
the library as usual.

For versions 2.2 to 2.3.2 (and possibly also for some newer ones),
extract the library sources and the linuxthreads add-on as usual.
Apply the patch for glibc 2.3.2 provided in this package.  Enter
crypt/, and rename crypt.h to gnu-crypt.h within that directory.  Copy
C sources, header, and assembly (x86.S) files from this package in
there as well (but be sure you don't overwrite the Makefile).
Configure, build, and install the library as usual.

Programs that want to use the provided interfaces will need to include
crypt.h (but not ow-crypt.h directly).  By default, prototypes for the
new routines aren't defined (but the extra functionality of crypt(3)
is indeed available).  You need to define _OW_SOURCE to obtain the new
routines as well.

-- 
Solar Designer <solar at openwall.com>

$Id: README,v 1.4 2004/04/25 23:53:12 solar Exp $
