Have 'make clean' clean away the log files.
[openssl.git] / README.FIPS
index 2829bf7..c41bab9 100644 (file)
@@ -1,12 +1,23 @@
 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 fipscanisterbuild
+./config fipscanisteronly
 make
 
 Build should complete without errors.
 
+Build test utilities:
+
+make build_tests
+
 Run test suite:
 
 test/fips_test_suite
@@ -16,7 +27,7 @@ again should complete without errors.
 Run test vectors: 
 
 1. Download an appropriate set of testvectors from www.openssl.org/docs/fips
-   those for 2007 are OK.
+   only the fips-2.0 testvector files are usable for complete tests.
 
 2. Extract the files to a suitable directory.
 
@@ -28,13 +39,92 @@ Run test vectors:
 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:
 
-No Windows support. 
-Algorithm tests are pre-2011.
-No SP800-90 PRNG.
-No ECDSA2 support.
-No DSA2 support: work in progress.
-No GCM.
-No CMAC.
+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.