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