Initialize num properly.
[openssl.git] / README.FIPS
index 6c5250c..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,36 +39,92 @@ Run test vectors:
 4. It should say "passed all tests" at the end. Report full details of any
    failures.
 
-Run:
+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
 
-make clean
+Examine the external symbols in fips/fipscanister.o they should all begin
+with FIPS or fips. One way to check with GNU nm is:
 
-to remove any object modules from previous compile.
+       nm -g --defined-only fips/fipscanister.o | grep -v -i fips
 
-Run symbol hiding test:
+If you get *any* output at all from this test (i.e. symbols not starting with
+fips or FIPS) please report it.
 
-./config fipscanisteronly -DOPENSSL_FIPSSYMS
+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
 
-This time only the fips utilities should be built.
+You can then run the algorithm tests as above. This build automatically uses
+fipscanisterbuild and no-ec2m as appropriate.
 
-Examine the external symbols in fips/fipscanister.o they should all begin
-with FIPS or fips. One way to check with GNU nm is:
+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.
 
-nm -g --defined-only fips/fipscanister.o | grep -v -i fips
+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:
 
-Algorithm tests are pre-2011.
-The fipslagtest.pl script wont auto run new algorithm tests such as DSA2.
-Usage of ECDH/DH needs review and whether any KDFs need to be implemented.
-Selftests need updating with larger key sizes in some cases and redundant
-tests pruned.
-SP800-90 DRBG needs more work: check for compliance, continuous PRNG test
-when entropy gathering, periodic health tests.
-Some algorithms need to check security strength of PRNG: keygen etc.
-No CCM.
-No XTS.
-The "FIPS capable OpenSSL" is not yet complete: meaning that the rest of
-OpenSSL doesn't always use the correct FIPS module APIs and block others
-in FIPS mode.
+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.