IBMCA-PROVIDER(5)
π IBMCA-PROVIDER π
okay so this is the man page for IBMCA-PROVIDER(5) β section 5, system file formats, the whole vibe β and bestie, it's literally about an OpenSSL provider that uses the libica library under s390x to make cryptographic operations go zoom. ποΈβ¨
πΈ NAME πΈ
IBMCA-PROVIDER β it's an OpenSSL provider that uses the libica library under s390x to accelerate cryptographic operations. that's the whole thing, she's an accelerator π¨
π¦ DESCRIPTION π¦
IBMCA-PROVIDER speeds up cryptographic operations for applications that use OpenSSL. And the way you configure it? Through the OpenSSL configuration file, periodt. π
IBMCA-PROVIDER links the libica-cex library, which can accelerate RSA, EC, and DH operations. Other stuff β like symmetric or digest operations β is not supported by IBMCA-PROVIDER, no cap. Those get provided by the OpenSSL default provider (or others). And here's the thing: operations like the AES cipher, plus digest operations, are already accelerated by CPACF via the OpenSSL default provider. So there's genuinely no need to pull in another provider for accelerating those β it's giving redundant π
π§ openssl.cnf
The OpenSSL configuration file can have a section for the IBMCA provider. This section includes:
- the identity (i.e. the name) of the provider (i.e.
ibmca) - the module implementing the provider (
ibmca-provider.so) - provider parameters
- and whether it's to be activated automatically
for a description of the provider parameters, scroll down bestie, it's all there π
Additionally, the OpenSSL configuration file can have an alg_section section. That's where you can specify the default property query. And if you want to prefer using the IBMCA provider but fall back to other providers (i.e. the default provider), you specify:
default_properties = ?provider=ibmca.
slay. that little ? is doing so much work π«Ά
β¨ OPTIONS β¨
π openssl.cnf
Options for the IBMCA provider section in openssl.cnf:
identity = ibmcaβ sets the name of the IBMCA provider. The provider's name is used in the property query string that fetches the provider for an operation. If no identity is specified, the name from the provider section of the OpenSSL config file is used β like, for an entry likeibmca_provider = ibmca_sectin the provider section, the name would beibmca_provider. ikyk. π§ β¨module = ibmca-provider.soβ sets the name, and optionally the path, to the IBMCA provider shared object file, so OpenSSL can find it. Usually providers get loaded from the OpenSSLMODULESDIR. Useopenssl version -mto display theMODULESDIRthat OpenSSL is using. And you can set the environment variableOPENSSL_MODULESto override the OpenSSL modules directory β though heads up, it's ignored in set-user-ID and set-group-ID programs. πactivate = 1β OpenSSL will activate the provider if this option is set to1. simple as that, she's awake πalgorithms = ALL | mechanismsβ redirect all cryptographic operations through the provider, or disable types of mechanisms that the provider supports. IfALLis not used, the algorithms consist of a comma separated list of mechanisms:RSA | EC | DH. If this option is not specified,ALLis the default.
Note: depending on the hardware level (IBM z15),ECis already accelerated implicitly by OpenSSL for certain curves. So do not accelerateECusing the IBMCA provider if you're on an IBM z15 or later β it would actually make it slower. not the glow-up you wanted π
debug = yes | no | stderrβ enables debug output for the IBMCA provider. If this option isn't specified, no debugging output is produced. Ifdebug = stderris specified, debugging messages are printed tostderr. Otherwise the debug output is written into a trace file in<debug-path>/trace-<provider-name>.<pid>β where<debug-path>is the path name of a directory to where the debug files are written (default:/tmp),<provider-name>is the name of the IBMCA provider from theidentityoption, and<pid>is the process ID of the current process. You can also enable debugging by setting the environment variableIBMCA_DEBUGtoonorstderr. πβ¨debug-path = /dir/to/debug/directoryβ sets the directory path to where debug files are written when debug is enabled viadebug = yesor via environment variableIBMCA_DEBUG=on. You can also set the debug path by setting the environment variableIBMCA_DEBUG_PATHto the directory path. It must be ensured that the user under which the application using the IBMCA provider runs has write access to that directory β fr fr, check your perms. π If this option isn't specified, the default debug path is/tmp.fips = yes | noβ enables FIPS mode for the IBMCA provider. If FIPS is enabled, it's ensured that thelibica-cexlibrary is built with FIPS enabled, and that the system is running in FIPS mode. If that's not the case, the IBMCA provider initialization fails, and asyslogmessage is issued. π If thefipsoption isn't specified, it's auto-detected whether thelibica-cexlibrary is built with FIPS enabled and whether the system is running in FIPS mode. If both is true, then FIPS mode is enabled for the IBMCA provider. If FIPS is enabled (either explicitly configured or due to auto-detection), the IBMCA provider registers its algorithm withfips=yes, so the IBMCA algorithms may be fetched using a property query string containingfips=yes. π
Note: the IBMCA provider is currently not FIPS certified. It does not itself perform any FIPS self tests nor an integrity check, which would be required to be FIPS certifiable. It's only ensured that thelibica-cexlibrary has successfully performed its self tests and integrity checks when FIPS mode is enabled. If you do not want the IBMCA provider to be used for property queries that includefips=yes, then disable FIPS mode of the IBMCA provider by settingfips = noin the provider configuration. π
fallback-properties = property-query-stringβ a property query string used to fetch algorithms for fallback purposes. Fallbacks take place when thelibica-cexlibrary doesn't support a certain key size or EC curve, or if thelibica-cexlibrary fails to perform a crypto operation for whatever reason. If this option isn't specified, a fallback property query string is built automatically as follows:provider!=<ibmca-provider-name>[,fips=yes]. The clausefips=yesis included if FIPS mode is enabled for the IBMCA provider (either explicitly configured or due to auto-detection). Note that the IBMCA provider itself can not be used as fallback provider β so the fallback property query string must either select a certain provider explicitly (e.g.provider=default), or must exclude the IBMCA provider (provider!=<ibmca-provider-name>). If FIPS mode is enabled for the IBMCA provider, the fallback provider should also be FIPS-enabled: includefips=yesinto the fallback property query string, or explicitly select the FIPS provider (provider=fips). π₯
π ENVIRONMENT π
IBMCA_DEBUGβ if$IBMCA_DEBUGis set tostderr, debug output tostderrfor the IBMCA provider is enabled. If it's set toon, the debug output is written into a trace file in<debug-path>/trace-<provider-name>.<pid>, where<debug-path>is the path name of a directory to where the debug files are written (default:/tmp),<provider-name>is the name of the IBMCA provider from theidentityoption, and<pid>is the process ID of the current process. πIBMCA_DEBUG_PATHβ sets the directory path to where debug files are written when debug is enabled via thedebug = yesconfiguration option or via environment variableIBMCA_DEBUG=on. It must be ensured that the user under which the application that uses the IBMCA provider runs has write access to that directory. (yes, saying it twice, because it matters π )
π SEE ALSO π
provider(1) config(5)
and that's the page bestie π«Ά it's from 2022, dated February, brought to you by IBM β go accelerate something iconic πβ¨π
π¦ where this page comes from
- opensuse-leap 16.0: openssl-ibmca 2.5.0-160000.1.1 Β· Apache-2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms