HBKZPCPROVIDER(7)
π NAME π
okay bestie, welcome to the HBKZPCPROVIDER(7) page: this is hbkzpc provider, an OpenSSL provider that gives you an interface to the hardware-backed key cryptographic operations, available on IBM Z and IBM LinuxONE. slay. π
πΈ DESCRIPTION πΈ
IBM Z and IBM LinuxONE systems offer several types of hardware assists with different features, including the CP Assist for Cryptographic Functions (CPACF) and the IBM Crypto Express (CEX) features. no cap, they're built different. β¨
The hbkzpc provider enables applications using the OpenSSL crypto library API to exploit the protected key cryptography (ZPC) functions, provided by CPACF on IBM Z and IBM LinuxONE. it's giving secure hardware energy. π₯
To use the hbkzpc provider via the OpenSSL crypto library API, it must be referenced in the OpenSSL configuration. for more details, see hbkzpcprovider.conf(5). iykyk. π«Ά
π§Έ Hardware-backed keys π§Έ
Hardware-backed keys (HBK) are a generic concept, where the secret information of cryptographic keys is never exposed to the main memory, but cryptographic operations with such keys are still possible. Instead of the raw secret key information, opaque key objects are exposed to the applications. The internals of these opaque key objects (key slot reference, wrapped key blob, etc.) depends on the concrete implementation of the generic concept. it is essential, that the knowledge of the opaque key object does not expose any information about the real secret information of the key. periodt. π
π IBM Z protected key cryptography π
The IBM Z protected key cryptography is the implementation of the generic hardware-backed key concept on IBM Z and IBM LinuxONE. The platform uses IBM Crypto Express (CEX) adapters (or often called: feature) or the IBM Secure Execution for Linux ultravisor to securely store secret key material and securely export them to the firmware. The hbkzpc provider can handle opaque key objects (protected key origins), which describe and reference these secure keys. π
ZPC provides many cryptographic functions with protected keys. The hbkzpc provider supports ECDSA/EdDSA sign/verify operations for a list of ECC-curves. see section Provider functions for more details. π
π Protected key origins π
A protected key origin for the hbkzpc provider is used to internally export the referenced secure key to the firmware. While the resulting protected keys are volatile and can become invalid at any time, the protected key origins are persistent and can be stored without exposing any secret information. lowkey iconic. π
bestie, the protected keys being volatile is real: they can become invalid at any time.
A protected key origin is specified by a HBKZPC unified resource identifier (URI). These URIs can be encoded to protected key origin files. The hbkzpc provider can handle either URIs directly or URIs which are encoded and stored in files (DER or PEM). see section URI for more details. π¦
The zpckey tool supports composing such protected key origins. see zpckey(1) for more details. π οΈ
The hbkzpc provider supports protected key origins for retrievable secrets in IBM Secure Execution for Linux (SEL) ultravisor. β¨
β¨ Provider functions β¨
The hbkzpc provider plugs into the OpenSSL provider API and provides the following functions:
signature-algorithmsfor ECDSA and EdDSAkey-managerfor provider-specific keysstore-loaderfor provider-specific key URIsdecoderfor DER/PEM encoded provider-specific key URI files
π Supported ECC curves π
The hbkzpc provider supports the following ECC-curves for ECDSA and EdDSA respectively:
prime256v1secp384r1secp521r1ED25519ED448
π¦ URI π¦
The HBKZPC unified resource identifier (URI) specifies all information of the protected key origins, which is required for the provider to derive the related protected key. The URI has the following syntax (ABNF representation):
hbkzpc-URI = "hbkzpc:" hbkzpc-param
hbkzpc-param = [ hbkzpc-pattr *(";" hbkzpc-pattr) ]
hbkzpc-pattr = origin-type / origin-alg / origin-blob /
origin-pubkey / comment
origin-type = "origin-type" "=" *pchar
origin-alg = "origin-alg" "=" oid / *(pchar)
origin-blob = "origin-blob" "=" hex-string
origin-pubkey = "origin-pubkey" "=" hex-string
comment = "comment" "=" *pchar-pct
oid = DIGIT *("." DIGIT)
hex-byte = 2*HEXDIG
hex-string = [ hex-byte *(hex-byte) ]
pchar-pct = pchar / pct-encoded
pchar = unreserved / res-avail
res-avail = ":" / "[" / "]" / "@" / "!" / "$" /
"'" / "(" / ")" / "*" / "+" / "," / "="
pct-encoded = [ "%" 2*HEXDIG ]
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
πΈ ENCODING πΈ
The URI can also be encoded and stored to a file. Supported encoding formats are DER and PEM. π
π§ DER encoding π§
For the DER encoding, the HBKZPC URI is encapsulated with a ASN.1 structure. Each DER file contains one structure in binary form. The structure has the following syntax:
HardwareBackedKeyZPCFormat DEFINITIONS ::= BEGIN
HBKZPC ::= SEQUENCE {
desc [0] EXPLICIT VisibleString,
uri [1] EXPLICIT UTF8String,
}
END
The DER decoder of the hbkzpc provider only handles DER files with a description (desc) of HBKZPC Provider URI v1.0. important, bestie. π
π PEM encoding π
The PEM encoding is a base64-encoded DER structure. The encoded data is surrounded by a start and end tag. A PEM encoded file has the following form:
-----BEGIN HARDWARE BACKED KEY ZPC-----
[... <BASE64-encoded data> ...]
-----END HARDWARE BACKED KEY ZPC-----
The PEM decoder of the hbkzpc provider only handles PEM files with the label HARDWARE BACKED KEY ZPC. noted. π
π GLOSSARY π
CEXβ IBM Crypto ExpressCPACFβ CP Assist for Cryptographic FunctionsHBKβ hardware-backed keySELβ IBM Secure Execution for LinuxURIβ unified resource identifierZPCβ IBM Z protected key cryptography
π SEE ALSO π
zpckey(1), hbkzpcprovider.conf(5), provider(7SSL).
π and that's the tea: LIBZPC v2, 2026 β thanks for reading, bestie! π
π¦ where this page comes from
- opensuse-leap 16.0: libzpc-provider 2.0.1-160000.1.1 Β· MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms