Blame SOURCES/README.FIPS

96a864
User guide for the FIPS Red Hat Enterprise Linux - OpenSSL Module
96a864
=================================================================
96a864
96a864
This package contains libraries which comprise the FIPS 140-2
96a864
Red Hat Enterprise Linux - OPENSSL Module.
96a864
96a864
The module files
96a864
================
96a864
/usr/lib[64]/libcrypto.so.1.0.1e
96a864
/usr/lib[64]/libssl.so.1.0.1e
96a864
/usr/lib[64]/.libcrypto.so.1.0.1e.hmac
96a864
/usr/lib[64]/.libssl.so.1.0.1e.hmac
96a864
96a864
Dependencies
96a864
============
96a864
96a864
The approved mode of operation requires kernel with /dev/urandom RNG running
96a864
with properties as defined in the security policy of the module. This is
96a864
provided by kernel packages with validated Red Hat Enterprise Linux - IPSec
96a864
Crytographic Module.
96a864
96a864
Installation
96a864
============
96a864
96a864
The RPM package of the module can be installed by standard tools recommended
96a864
for installation of RPM packages on the Red Hat Enterprise Linux system (yum,
96a864
rpm, RHN remote management tool).
96a864
96a864
For proper operation of the in-module integrity verification the prelink has to
96a864
be disabled. This can be done with setting PRELINKING=no in the
96a864
/etc/sysconfig/prelink configuration file. If the libraries were already
96a864
prelinked the prelink should be undone on all the system files with the
96a864
'prelink -u -a' command.
96a864
96a864
Usage and API
96a864
=============
96a864
96a864
The module respects kernel command line FIPS setting. If the kernel command
96a864
line contains option fips=1 the module will initialize in the FIPS approved
96a864
mode of operation automatically. To allow for the automatic initialization the
96a864
application using the module has to call one of the following API calls:
96a864
96a864
- void OPENSSL_init_library(void) - this will do only a basic initialization
96a864
of the library and does initialization of the FIPS approved mode without setting
96a864
up EVP API with supported algorithms.
96a864
96a864
- void OPENSSL_add_all_algorithms(void) - this API function calls
96a864
OPENSSL_init() implicitly and also adds all approved algorithms to the EVP API
96a864
in the approved mode 
96a864
96a864
- void SSL_library_init(void) - it calls OPENSSL_init() implicitly and also
96a864
adds algorithms which are necessary for TLS protocol support and initializes
96a864
the SSL library.
96a864
96a864
To explicitely put the library to the approved mode the application can call
96a864
the following function:
96a864
96a864
- int FIPS_mode_set(int on) - if called with 1 as a parameter it will switch
96a864
the library from the non-approved to the approved mode. If any of the selftests
96a864
and integrity verification tests fail, the library is put into the error state
96a864
and 0 is returned. If they succeed the return value is 1.
96a864
96a864
To query the module whether it is in the approved mode or not:
96a864
96a864
- int FIPS_mode(void) - returns 1 if the module is in the approved mode,
96a864
0 otherwise.
96a864
96a864
To query whether the module is in the error state:
96a864
96a864
- int FIPS_selftest_failed(void) - returns 1 if the module is in the error
96a864
state, 0 otherwise.
96a864
96a864
To zeroize the FIPS RNG key and internal state the application calls:
96a864
96a864
- void RAND_cleanup(void)