6c5250cf44f882581a5bdac09ab22d390596aa0e
[openssl.git] / README.FIPS
1 Preliminary status and build information for FIPS module v2.0
2
3 To build the module do:
4
5 ./config fipscanisterbuild
6 make
7
8 Build should complete without errors.
9
10 Run test suite:
11
12 test/fips_test_suite
13
14 again should complete without errors.
15
16 Run test vectors: 
17
18 1. Download an appropriate set of testvectors from www.openssl.org/docs/fips
19    those for 2007 are OK.
20
21 2. Extract the files to a suitable directory.
22
23 3. Run the test vector perl script, for example:
24
25    cd fips
26    perl fipsalgtest.pl --dir=/wherever/stuff/was/extracted
27
28 4. It should say "passed all tests" at the end. Report full details of any
29    failures.
30
31 Run:
32
33 make clean
34
35 to remove any object modules from previous compile.
36
37 Run symbol hiding test:
38
39 ./config fipscanisteronly -DOPENSSL_FIPSSYMS
40 make
41
42 This time only the fips utilities should be built.
43
44 Examine the external symbols in fips/fipscanister.o they should all begin
45 with FIPS or fips. One way to check with GNU nm is:
46
47 nm -g --defined-only fips/fipscanister.o | grep -v -i fips
48
49 Known issues:
50
51 Algorithm tests are pre-2011.
52 The fipslagtest.pl script wont auto run new algorithm tests such as DSA2.
53 Usage of ECDH/DH needs review and whether any KDFs need to be implemented.
54 Selftests need updating with larger key sizes in some cases and redundant
55 tests pruned.
56 SP800-90 DRBG needs more work: check for compliance, continuous PRNG test
57 when entropy gathering, periodic health tests.
58 Some algorithms need to check security strength of PRNG: keygen etc.
59 No CCM.
60 No XTS.
61 The "FIPS capable OpenSSL" is not yet complete: meaning that the rest of
62 OpenSSL doesn't always use the correct FIPS module APIs and block others
63 in FIPS mode.