Decide about the flavor of IBMCA
OpenSSL supports a plug-in mechanism that allows to provide alternative implementations of cryptographic methods. The plug-in mechanism supported by OpenSSL version 1.x.y is called engine. The plug-in mechanism supported by OpenSSL 3.0 and later is called provider.
For general details on engines, providers and their differences read Engines and providers or see the OpenSSL documentation. This topic informs you about the IBM-specific engine and provider for OpenSSL.
Engines and providers for IBM Z
Use the IBMCA provider starting with OpenSSL version 3.0 and use the IBMCA engine for any earlier OpenSSL version (1.x.y). Even though OpenSSL claims that engines can be used as deprecated plug-in mechanism for OpenSSL 3.0, the use of engines with OpenSSL later than version 1.1.1 is not recommended.
Applications with compiled-in
OpenSSL support can enable the IBMCA provider or the IBMCA engine in the OpenSSL configuration file. However, do not
use the IBMCA engine with OpenSSL 3.0 or later. Use the IBMCA provider instead. Sample OpenSSL configuration files
(openssl.cnf.sample
or openssl.cnf.provider.sample
) are included
in the package that you download from GitHub. See also Configuring OpenSSL to use the IBMCA provider.
In an IBM Z environment, you can install the IBMCA provider or the IBMCA engine, or both, and configure OpenSSL for dynamic engine or provider loading. In such cases, OpenSSL does not perform the encryption requests by itself, but passes them to the configured IBMCA module. IBMCA uses the libica library to handle the requests. The libica library is aware of which algorithms are supported via the underlying hardware (CPACF or cryptographic adapters, if installed and available). If an algorithm is supported by hardware, the libica library passes the request to the cryptographic hardware. If an algorithm is not supported by hardware, libica versions earlier than 4.0 execute the algorithm in software as a fallback. For information about SW fallbacks in libica versions starting with 4.0, see Software fallbacks with the IBMCA provider.
Difference between the IBMCA provider and the IBMCA engine
The IBMCA engine performs acceleration of symmetric ciphers and hash functions on the CPACF and asymmetric algorithms on a cryptographic adapter. For elliptic curve cryptography using the full version of the libica library, starting with IBM z15™, processing is performed on CPACF instead off a cryptographic adapter for supported curves.
Symmetric ciphers and hash functions that are also implicitly accelerated by OpenSSL, are preferably performed by OpenSSL and should not be configured to be performed by the IBMCA engine. Therefore, in the OpenSSL configuration file, define only those algorithms that you want to be accelerated by the IBMCA engine, for example:
default_algorithms = RSA,DH,DSA
default_algorithms
specification accordingly, for example, including or excluding
ECC operations.The IBMCA provider only performs asymmetric algorithms on a cryptographic adapter. However, only algorithms configured for the IBMCA provider are performed.