Preliminary status and build information for FIPS module v2.0

NB: if you are cross compiling you now need to use the latest "incore" script
this can be found at util/incore in the tarballs.

If you have any object files from a previous build do:

make clean

To build the module do:

./config fipscanisteronly
make

Build should complete without errors.

Build test utilities:

make build_tests

Run test suite:

test/fips_test_suite

again should complete without errors.

Run test vectors: 

1. Download an appropriate set of testvectors from www.openssl.org/docs/fips
   only the fips-2.0 testvector files are usable for complete tests.

2. Extract the files to a suitable directory.

3. Run the test vector perl script, for example:

   cd fips
   perl fipsalgtest.pl --dir=/wherever/stuff/was/extracted

4. It should say "passed all tests" at the end. Report full details of any
   failures.

If you wish to use the older 1.2.x testvectors (for example those from 2007)
you need the command line switch --disable-v2 to fipsalgtest.pl

Examine the external symbols in fips/fipscanister.o they should all begin
with FIPS or fips. One way to check with GNU nm is:

	nm -g --defined-only fips/fipscanister.o | grep -v -i fips

If you get *any* output at all from this test (i.e. symbols not starting with
fips or FIPS) please report it.

Restricted tarball tests.

The validated module will have its own tarball containing sufficient code to
build fipscanister.o and the associated algorithm tests. You can create a
similar tarball yourself for testing purposes using the commands below.

Standard restricted tarball:

make -f Makefile.fips dist

Prime field field only ECC tarball:

make NOEC2M=1 -f Makefile.fips dist

Once you've created the tarball extract into a fresh directory and do:

./config
make

You can then run the algorithm tests as above. This build automatically uses
fipscanisterbuild and no-ec2m as appropriate.

FIPS capable OpenSSL test: WARNING PRELIMINARY INSTRUCTIONS, SUBJECT TO CHANGE.

At least initially the test module and FIPS capable OpenSSL may change and
by out of sync. You are advised to check for any changes and pull the latest
source from CVS if you have problems. See anon CVS and rsync instructions at:

http://www.openssl.org/source/repos.html

Make or download a restricted tarball from ftp://ftp.openssl.org/snapshot/

If required set the environment variable FIPSDIR to an appropriate location
to install the test module. If cross compiling set other environment
variables too.

In this restricted tarball on a Linux or U*ix like system run:

./config
make
make install

On Windows from a VC++ environment do:

ms\do_fips

This will build and install the test module and some associated files.

Now download the latest version of the OpenSSL 1.0.1 branch from either a
snapshot or preferably CVS. For Linux do:

./config fips [other args]
make

For Windows:

perl Configure VC-WIN32 fips [other args]
ms\do_nasm
nmake -f ms\ntdll.mak

(or ms\nt.mak for a static build).

Where [other args] can be any other arguments you use for an OpenSSL build
such as "shared" or "zlib".

This will build the fips capable OpenSSL and link it to the test module. You
can now try linking and testing applications against the FIPS capable OpenSSL.

Please report any problems to either the openssl-dev mailing list or directly
to me steve@openssl.org . Check the mailing lists regularly to avoid duplicate
reports.

Known issues:

Code needs extensively reviewing to ensure it builds correctly on 
supported platforms and is compliant with FIPS 140-2.
The "FIPS capable OpenSSL" is still largely untested, it builds and runs
some simple tests OK on some systems but needs far more "real world" testing.
