Initial commit on c9s
Resolves: RHEL-186086
This commit is contained in:
parent
e2c4ed696e
commit
2ab860efe4
1
.gitignore
vendored
1
.gitignore
vendored
@ -0,0 +1 @@
|
||||
/libzpc-*.tar.gz
|
||||
683
libzpc-2.0.1-fixes.patch
Normal file
683
libzpc-2.0.1-fixes.patch
Normal file
@ -0,0 +1,683 @@
|
||||
From bc266b73843be55d06f6223ec4ecc844f7216dc4 Mon Sep 17 00:00:00 2001
|
||||
From: Ingo Franzki <ifranzki@linux.ibm.com>
|
||||
Date: Mon, 15 Jun 2026 14:23:54 +0200
|
||||
Subject: [PATCH 1/6] Fix detection of PCC instruction availability
|
||||
|
||||
According to the Principles or Operations manual, the PCC instruction was
|
||||
added with Message-Security assist 4 (MSA 4), not 3.
|
||||
|
||||
Signed-off-by: Ingo Franzki <ifranzki@linux.ibm.com>
|
||||
---
|
||||
src/globals.c | 8 ++++----
|
||||
1 file changed, 4 insertions(+), 4 deletions(-)
|
||||
|
||||
diff --git a/src/globals.c b/src/globals.c
|
||||
index 8797286..3650be2 100644
|
||||
--- a/src/globals.c
|
||||
+++ b/src/globals.c
|
||||
@@ -280,10 +280,10 @@ void zpc_init(void)
|
||||
}
|
||||
}
|
||||
|
||||
- /* Check MSA3. */
|
||||
- if (facility_list_nmemb >= OFF64(MSA3) + 1
|
||||
- && (facility_list[OFF64(MSA3)] & MASK64(MSA3))) {
|
||||
- DEBUG("detected message-security-assist extension 3");
|
||||
+ /* Check MSA4. */
|
||||
+ if (facility_list_nmemb >= OFF64(MSA4) + 1
|
||||
+ && (facility_list[OFF64(MSA4)] & MASK64(MSA4))) {
|
||||
+ DEBUG("detected message-security-assist extension 4");
|
||||
|
||||
memset(status_word, 0, sizeof(status_word));
|
||||
cpacf_pcc(CPACF_PCC_QUERY, &status_word);
|
||||
--
|
||||
2.55.0
|
||||
|
||||
|
||||
From f12d031e99f29574c5f1a06e46b75c37f0e1c211 Mon Sep 17 00:00:00 2001
|
||||
From: Holger Dengler <dengler@linux.ibm.com>
|
||||
Date: Fri, 19 Jun 2026 16:10:55 +0200
|
||||
Subject: [PATCH 2/6] man: Update pre-built man-pages
|
||||
|
||||
Signed-off-by: Holger Dengler <dengler@linux.ibm.com>
|
||||
---
|
||||
man/hbkzpcprovider.7 | 176 ++++++++++++++++++++++++++++++++++++++
|
||||
man/hbkzpcprovider.conf.5 | 134 +++++++++++++++++++++++++++++
|
||||
man/zpckey.1 | 106 +++++++++++++++++++++++
|
||||
3 files changed, 416 insertions(+)
|
||||
create mode 100644 man/hbkzpcprovider.7
|
||||
create mode 100644 man/hbkzpcprovider.conf.5
|
||||
create mode 100644 man/zpckey.1
|
||||
|
||||
diff --git a/man/hbkzpcprovider.7 b/man/hbkzpcprovider.7
|
||||
new file mode 100644
|
||||
index 0000000..78ba542
|
||||
--- /dev/null
|
||||
+++ b/man/hbkzpcprovider.7
|
||||
@@ -0,0 +1,176 @@
|
||||
+.\" Automatically generated by Pandoc 3.7.0.2
|
||||
+.\"
|
||||
+.TH "HBKZPCPROVIDER" "7" "2026" "LIBZPC v2"
|
||||
+.SH NAME
|
||||
+\f[CR]hbkzpc provider\f[R] \- An OpenSSL provider that provides an
|
||||
+interface to the hardware\-backed key cryptographic operations,
|
||||
+available on IBM Z and IBM LinuxONE.
|
||||
+.SH DESCRIPTION
|
||||
+IBM Z and IBM LinuxONE systems offer several types of hardware assists
|
||||
+with different features, including the CP Assist for Cryptographic
|
||||
+Functions (\f[I]CPACF\f[R]) and the IBM Crypto Express (\f[I]CEX\f[R])
|
||||
+features.
|
||||
+.PP
|
||||
+The \f[CR]hbkzpc provider\f[R] enables applications using the OpenSSL
|
||||
+crypto library API to exploit the protected key cryptography
|
||||
+(\f[I]ZPC\f[R]) functions, provided by CPACF on IBM Z and IBM LinuxONE.
|
||||
+.PP
|
||||
+To use the \f[CR]hbkzpc provider\f[R] via the OpenSSL crypto library
|
||||
+API, it must be referenced in the OpenSSL configuration.
|
||||
+For more details, see hbkzpcprovider.conf(5).
|
||||
+.SS Hardware\-backed keys
|
||||
+Hardware\-backed keys (\f[I]HBK\f[R]) 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.
|
||||
+.SS 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 (\f[I]CEX\f[R]) 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 \f[CR]hbkzpc provider\f[R] can handle opaque key objects (protected
|
||||
+key origins), which describe and reference these secure keys.
|
||||
+.PP
|
||||
+ZPC provides many cryptographic functions with protected keys.
|
||||
+The \f[CR]hbkzpc provider\f[R] supports ECDSA/EdDSA sign/verify
|
||||
+operations for a list of ECC\-curves.
|
||||
+See section \f[I]Provider functions\f[R] for more details.
|
||||
+.SS Protected key origins
|
||||
+A protected key origin for the \f[CR]hbkzpc provider\f[R] 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.
|
||||
+.PP
|
||||
+A protected key origin is specified by a HBKZPC unified resource
|
||||
+identifier (URI).
|
||||
+These URIs can be encoded to protected key origin files.
|
||||
+The \f[CR]hbkzpc provider\f[R] can handle either URIs directly or URIs
|
||||
+which are encoded and stored in files (DER or PEM).
|
||||
+See section \f[I]URI\f[R] for more details.
|
||||
+.PP
|
||||
+The \f[CR]zpckey\f[R] tool supports composing such protected key
|
||||
+origins.
|
||||
+See zpckey(1) for more details.
|
||||
+.PP
|
||||
+The \f[CR]hbkzpc provider\f[R] supports protected key origins for
|
||||
+retrievable secrets in IBM Secure Execution for Linux (SEL) ultravisor.
|
||||
+.SS Provider functions
|
||||
+The \f[CR]hbkzpc provider\f[R] plugs into the OpenSSL provider API and
|
||||
+provides the following functions:
|
||||
+.IP \(bu 2
|
||||
+signature\-algorithms for ECDSA and EdDSA
|
||||
+.IP \(bu 2
|
||||
+key\-manager for provider\-specific keys
|
||||
+.IP \(bu 2
|
||||
+store\-loader for provider\-specific key URIs
|
||||
+.IP \(bu 2
|
||||
+decoder for DER/PEM encoded provider\-specific key URI files
|
||||
+.SS Supported ECC curves
|
||||
+The \f[CR]hbkzpc provider\f[R] supports the following ECC\-curves for
|
||||
+ECDSA and EdDSA respectively:
|
||||
+.IP \(bu 2
|
||||
+prime256v1
|
||||
+.IP \(bu 2
|
||||
+secp384r1
|
||||
+.IP \(bu 2
|
||||
+secp521r1
|
||||
+.IP \(bu 2
|
||||
+ED25519
|
||||
+.IP \(bu 2
|
||||
+ED448
|
||||
+.SH 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):
|
||||
+.IP
|
||||
+.EX
|
||||
+hbkzpc\-URI = \(dqhbkzpc:\(dq hbkzpc\-param
|
||||
+hbkzpc\-param = [ hbkzpc\-pattr *(\(dq;\(dq hbkzpc\-pattr) ]
|
||||
+
|
||||
+hbkzpc\-pattr = origin\-type / origin\-alg / origin\-blob /
|
||||
+ origin\-pubkey / comment
|
||||
+
|
||||
+origin\-type = \(dqorigin\-type\(dq \(dq=\(dq *pchar
|
||||
+origin\-alg = \(dqorigin\-alg\(dq \(dq=\(dq oid / *(pchar)
|
||||
+origin\-blob = \(dqorigin\-blob\(dq \(dq=\(dq hex\-string
|
||||
+origin\-pubkey = \(dqorigin\-pubkey\(dq \(dq=\(dq hex\-string
|
||||
+comment = \(dqcomment\(dq \(dq=\(dq *pchar\-pct
|
||||
+
|
||||
+oid = DIGIT *(\(dq.\(dq DIGIT)
|
||||
+
|
||||
+hex\-byte = 2*HEXDIG
|
||||
+hex\-string = [ hex\-byte *(hex\-byte) ]
|
||||
+
|
||||
+pchar\-pct = pchar / pct\-encoded
|
||||
+pchar = unreserved / res\-avail
|
||||
+res\-avail = \(dq:\(dq / \(dq[\(dq / \(dq]\(dq / \(dq\(at\(dq / \(dq!\(dq / \(dq$\(dq /
|
||||
+ \(dq\(aq\(dq / \(dq(\(dq / \(dq)\(dq / \(dq*\(dq / \(dq+\(dq / \(dq,\(dq / \(dq=\(dq
|
||||
+
|
||||
+pct\-encoded = [ \(dq%\(dq 2*HEXDIG ]
|
||||
+unreserved = ALPHA / DIGIT / \(dq\-\(dq / \(dq.\(dq / \(dq_\(dq / \(dq\(ti\(dq
|
||||
+.EE
|
||||
+.SH ENCODING
|
||||
+The URI can also be encoded and stored to a file.
|
||||
+Supported encoding formats are DER and PEM.
|
||||
+.SS 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:
|
||||
+.IP
|
||||
+.EX
|
||||
+HardwareBackedKeyZPCFormat DEFINITIONS ::= BEGIN
|
||||
+ HBKZPC ::= SEQUENCE {
|
||||
+ desc [0] EXPLICIT VisibleString,
|
||||
+ uri [1] EXPLICIT UTF8String,
|
||||
+ }
|
||||
+END
|
||||
+.EE
|
||||
+.PP
|
||||
+The DER decoder of the \f[CR]hbkzpc provider\f[R] only handles DER files
|
||||
+with a description (\f[I]desc\f[R]) of \f[I]HBKZPC Provider URI
|
||||
+v1.0\f[R].
|
||||
+.SS 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:
|
||||
+.IP
|
||||
+.EX
|
||||
+\-\-\-\-\-BEGIN HARDWARE BACKED KEY ZPC\-\-\-\-\-
|
||||
+[... <BASE64\-encoded data> ...]
|
||||
+\-\-\-\-\-END HARDWARE BACKED KEY ZPC\-\-\-\-\-
|
||||
+.EE
|
||||
+.PP
|
||||
+The PEM decoder of the \f[CR]hbkzpc provider\f[R] only handles PEM files
|
||||
+with the label \f[I]HARDWARE BACKED KEY ZPC\f[R].
|
||||
+.SH GLOSSARY
|
||||
+.TP
|
||||
+CEX
|
||||
+IBM Crypto Express
|
||||
+.TP
|
||||
+CPACF
|
||||
+CP Assist for Cryptographic Functions
|
||||
+.TP
|
||||
+HBK
|
||||
+hardware\-backed key
|
||||
+.TP
|
||||
+SEL
|
||||
+IBM Secure Execution for Linux
|
||||
+.TP
|
||||
+URI
|
||||
+unified resource identifier
|
||||
+.TP
|
||||
+ZPC
|
||||
+IBM Z protected key cryptography
|
||||
+.SH SEE ALSO
|
||||
+zpckey(1), hbkzpcprovider.conf(5), provider(7SSL).
|
||||
diff --git a/man/hbkzpcprovider.conf.5 b/man/hbkzpcprovider.conf.5
|
||||
new file mode 100644
|
||||
index 0000000..537c21b
|
||||
--- /dev/null
|
||||
+++ b/man/hbkzpcprovider.conf.5
|
||||
@@ -0,0 +1,134 @@
|
||||
+.\" Automatically generated by Pandoc 3.7.0.2
|
||||
+.\"
|
||||
+.TH "HBKZPCPROVIDER.CNF" "5" "2026" "LIBZPC v2"
|
||||
+.SH NAME
|
||||
+hbkzpcprovider.conf \- Configuration syntax for the
|
||||
+\f[CR]hbkzpc provider\f[R]
|
||||
+.SH DESCRIPTION
|
||||
+This page documents the syntax of the OpenSSL configuration file for the
|
||||
+\f[CR]hbkzpc provider\f[R].
|
||||
+It is a sub\-set of the OpenSSL configuration file format, described in
|
||||
+config(5SSL).
|
||||
+.SH CONFIGURATION
|
||||
+.SS OpenSSL Configuration
|
||||
+The \f[CR]hbkzpc provider\f[R] can be configured application\-specific
|
||||
+or system\-wide.
|
||||
+In both cases, the configuration file needs to define and reference a
|
||||
+section for the \f[CR]hbkzpc provider\f[R], following the OpenSSL
|
||||
+configuration syntax (config(5SSL)).
|
||||
+.PP
|
||||
+The provider section for the \f[CR]hbkzpc provider\f[R] specifies the
|
||||
+shared library of the provider (mandatory) and an activation flag
|
||||
+(optional).
|
||||
+.PP
|
||||
+Since OpenSSL configuration supports drop\-ins (keyword
|
||||
+\f[CR].inlcude\f[R]), the configuration for the
|
||||
+\f[CR]hbkzpc provider\f[R] can also be placed in a separate
|
||||
+configuration file.
|
||||
+.SS Provider Section
|
||||
+A provider section in the OpenSSL configuration defines generic
|
||||
+parameters, as well as provider\-specific parameters.
|
||||
+Each provider section must be referenced in the global providers
|
||||
+sections (\f[I]provider_sect\f[R]) of the OpenSSL configuration file.
|
||||
+The \f[CR]hbkzpc provider\f[R] supports no provider\-specific
|
||||
+parameters, but the provider section for the \f[CR]hbkzpc provider\f[R]
|
||||
+must specify at least the generic provider section parameter
|
||||
+\f[I]module\f[R].
|
||||
+For more details about the generic provider parameters, see
|
||||
+config(5SSL).
|
||||
+.TP
|
||||
+module (mandatory)
|
||||
+This parameter takes a path to the provider shared object file.
|
||||
+For the \f[CR]hbkzpc provider\f[R], use the absolute path to the
|
||||
+installation location of \f[CR]zpcprovider.so\f[R] or the relative path
|
||||
+to the OpenSSL modules directory.
|
||||
+.TP
|
||||
+activate (optional)
|
||||
+If present and set to \f[CR]1\f[R], then the associated provider is
|
||||
+activated.
|
||||
+Conversely, setting this value to \f[CR]0\f[R] or not specifying the
|
||||
+parameter at all prevents the provider from being activated (default:
|
||||
+\f[CR]0\f[R]).
|
||||
+.PP
|
||||
+The \f[I]identity\f[R] parameter may be used in the provider section,
|
||||
+but it has no impact to the registration of the
|
||||
+\f[CR]hbkzpc provider\f[R].
|
||||
+It will always register itself with \(lqprovider=hbkzpc\(rq.
|
||||
+Multiple instances of this provider may work but are not supported.
|
||||
+.SH EXAMPLES
|
||||
+The following drop\-in example specifies the \f[CR]hbkzpc provider\f[R]
|
||||
+module and activates it.
|
||||
+.IP
|
||||
+.EX
|
||||
+[provider_sect]
|
||||
+hbkzpc = hbkzpc_sect
|
||||
+
|
||||
+[hbkzpc_sect]
|
||||
+module = zpcprovider.so
|
||||
+activate = 1
|
||||
+.EE
|
||||
+.PP
|
||||
+The drop\-in file needs to be included in the main OpenSSL
|
||||
+configuration, either by specifying the drop\-in file or the drop\-in
|
||||
+directory (for example \f[CR]/etc/pki/tls/openssl.d/\f[R] on Fedora).
|
||||
+.IP
|
||||
+.EX
|
||||
+\&.include /path/to/drop\-in\-directory
|
||||
+.EE
|
||||
+.PP
|
||||
+The following configuration example covers a complete minimal OpenSSL
|
||||
+configuration.
|
||||
+It can be used for example as a temporary replacement for the
|
||||
+system\-wide OpenSSL configuration.
|
||||
+.IP
|
||||
+.EX
|
||||
+HOME = .
|
||||
+
|
||||
+openssl_conf = openssl_init
|
||||
+
|
||||
+[openssl_init]
|
||||
+providers = provider_sect
|
||||
+alg_section = evp_properties
|
||||
+
|
||||
+[provider_sect]
|
||||
+default = default_sect
|
||||
+base = base_sect
|
||||
+hbkzpc = hbkzpc_sect
|
||||
+
|
||||
+[evp_properties]
|
||||
+
|
||||
+[base_sect]
|
||||
+activate = 1
|
||||
+
|
||||
+[default_sect]
|
||||
+activate = 1
|
||||
+
|
||||
+[hbkzpc_sect]
|
||||
+module = /path/to/zpcprovider.so
|
||||
+activate = 1
|
||||
+.EE
|
||||
+.PP
|
||||
+To use this configuration example for an application, store it to a file
|
||||
+(e.g.\ my\-openssl.conf) and reference this file in the environment
|
||||
+variable \f[CR]OPENSSL_CONF\f[R].
|
||||
+The following command lists all configured providers: base, default and
|
||||
+hbkzpc.
|
||||
+.IP
|
||||
+.EX
|
||||
+$ env OPENSSL_CONF=my\-openssl.conf openssl list \-providers
|
||||
+Providers:
|
||||
+ base
|
||||
+ name: OpenSSL Base Provider
|
||||
+ version: 4.0.0
|
||||
+ status: active
|
||||
+ default
|
||||
+ name: OpenSSL Default Provider
|
||||
+ version: 4.0.0
|
||||
+ status: active
|
||||
+ hbkzpc
|
||||
+ name: hbkzpc
|
||||
+ version: 2.0.0
|
||||
+ status: active
|
||||
+.EE
|
||||
+.SH SEE ALSO
|
||||
+hbkzpcprovider(7), config(5SSL).
|
||||
diff --git a/man/zpckey.1 b/man/zpckey.1
|
||||
new file mode 100644
|
||||
index 0000000..877a592
|
||||
--- /dev/null
|
||||
+++ b/man/zpckey.1
|
||||
@@ -0,0 +1,106 @@
|
||||
+.\" Automatically generated by Pandoc 3.7.0.2
|
||||
+.\"
|
||||
+.TH "ZPCKEY" "1" "2026" "LIBZPC v2"
|
||||
+.SH NAME
|
||||
+zpckey \- A key management tooling for protected key origins, used by
|
||||
+the OpenSSL provider for protected keys (\f[CR]hbkzpc provider\f[R]).
|
||||
+.SH SYNOPSIS
|
||||
+zpckey [\-h|\(enhelp] [\-V|\(enversion]
|
||||
+.PP
|
||||
+zpckey compose <REQ\-ARGS> [<OPT\-ARGS>] <ORIGIN\-ARGS>
|
||||
+.PP
|
||||
+zpckey show <REQ\-ARGS> [<OPT\-ARGS>]
|
||||
+.SH DESCRIPTION
|
||||
+The zpckey command provides key management functions for protected key
|
||||
+origins, used by the \f[CR]hbkzpc provider\f[R] (hbkzpcprovider(7)).
|
||||
+IBM Z and IBM LinuxONE offer different types of cryptographic hardware
|
||||
+with different features, including the CP Assist for Cryptographic
|
||||
+Functions (CPACF) and the IBM Crypto Express (CEX) features.
|
||||
+.PP
|
||||
+The CPACF provides functions to perform cryptographic operations with a
|
||||
+kind of hardware\-backed keys, the so called protected keys.
|
||||
+.PP
|
||||
+The CEX cards provide secure key generation and storage (secure keys),
|
||||
+as well as cryptographic operations with these keys.
|
||||
+.SH OPTIONS
|
||||
+.TP
|
||||
+\-V, \-\-version
|
||||
+Show version
|
||||
+.TP
|
||||
+\-h, \-\-help
|
||||
+Show short help
|
||||
+.SH ZPCKEY COMPOSE
|
||||
+The \f[I]compose\f[R] command supports the composition of protected key
|
||||
+origins, which can be used for the \f[CR]hbkzpc provider\f[R].
|
||||
+.SS Required Arguments:
|
||||
+.TP
|
||||
+\-t, \-\-origin\-type <otype>
|
||||
+Protected key origin type
|
||||
+.TP
|
||||
+\-a, \-\-origin\-alg <oalg>
|
||||
+Protected key origin algorithm
|
||||
+.SS Protected key origin types (<otype>):
|
||||
+.IP \(bu 2
|
||||
+uv: Ultravisor retrievable secrets
|
||||
+.SS Protected key origin algorithms (<oalg>):
|
||||
+.IP \(bu 2
|
||||
+prime256v1 (alt.: 1.2.840.10045.3.1.7)
|
||||
+.IP \(bu 2
|
||||
+secp384r1 (alt.: 1.3.132.0.34)
|
||||
+.IP \(bu 2
|
||||
+secp521r1 (alt.: 1.3.132.0.35)
|
||||
+.IP \(bu 2
|
||||
+ED25519 (alt.: 1.3.101.112)
|
||||
+.IP \(bu 2
|
||||
+ED448 (alt.: 1.3.101.113)
|
||||
+.IP \(bu 2
|
||||
+AES\-128
|
||||
+.IP \(bu 2
|
||||
+AES\-192
|
||||
+.IP \(bu 2
|
||||
+AES\-256
|
||||
+.IP \(bu 2
|
||||
+AES\-128\-XTS
|
||||
+.IP \(bu 2
|
||||
+AES\-256\-XTS
|
||||
+.SS Optional Arguments:
|
||||
+.TP
|
||||
+\-p, \-\-pubkey <file>
|
||||
+Public key file
|
||||
+.TP
|
||||
+\-o, \-\-out <file>
|
||||
+Output file
|
||||
+.TP
|
||||
+\-\-outform <format>
|
||||
+Output file format URI, DER or PEM (default: PEM)
|
||||
+.TP
|
||||
+\-c, \-\-comment <string>
|
||||
+Comment (metadata)
|
||||
+.TP
|
||||
+\-h, \-\-help
|
||||
+Show short help
|
||||
+.SS Origin Arguments:
|
||||
+.TP
|
||||
+For <otype> = \f[I]uv\f[R], one out of the following must be specified:
|
||||
+.TP
|
||||
+\-\-uv\-secret\-id <hexstring>
|
||||
+UV secret ID
|
||||
+.TP
|
||||
+\-\-uv\-secret\-name <string>
|
||||
+UV secret name
|
||||
+.SH ZPCKEY SHOW
|
||||
+The \f[I]show\f[R] command prints information about the key file to
|
||||
+stdout.
|
||||
+.SS Required Arguments:
|
||||
+.TP
|
||||
+\-i, \-\-in <file>
|
||||
+Input file
|
||||
+.SS Optional Arguments:
|
||||
+.TP
|
||||
+\-\-inform <format>
|
||||
+Input file format PEM or DER (default: PEM)
|
||||
+.TP
|
||||
+\-h, \-\-help
|
||||
+Show short help
|
||||
+.SH SEE ALSO
|
||||
+hbkzpcprovider.conf(5), hbkzpcprovider(7)
|
||||
--
|
||||
2.55.0
|
||||
|
||||
|
||||
From 7960adcc472595fd89786757edcb051cf9c57df9 Mon Sep 17 00:00:00 2001
|
||||
From: Holger Dengler <dengler@linux.ibm.com>
|
||||
Date: Fri, 19 Jun 2026 16:09:15 +0200
|
||||
Subject: [PATCH 3/6] cmake: Install pre-built man-pages
|
||||
|
||||
Instead of installing converted man-pages, use the pre-built man-pages
|
||||
instead.
|
||||
|
||||
Signed-off-by: Holger Dengler <dengler@linux.ibm.com>
|
||||
---
|
||||
CMakeLists.txt | 6 +++---
|
||||
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 7cf6445..2f7a9db 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -327,12 +327,12 @@ install(
|
||||
)
|
||||
|
||||
install(
|
||||
- FILES ${CMAKE_BINARY_DIR}/hbkzpcprovider.conf.5
|
||||
+ FILES ${CMAKE_SOURCE_DIR}/man/hbkzpcprovider.conf.5
|
||||
DESTINATION ${CMAKE_INSTALL_MANDIR}/man5
|
||||
)
|
||||
|
||||
install(
|
||||
- FILES ${CMAKE_BINARY_DIR}/hbkzpcprovider.7
|
||||
+ FILES ${CMAKE_SOURCE_DIR}/man/hbkzpcprovider.7
|
||||
DESTINATION ${CMAKE_INSTALL_MANDIR}/man7
|
||||
)
|
||||
|
||||
@@ -383,7 +383,7 @@ install(
|
||||
)
|
||||
|
||||
install(
|
||||
- FILES ${CMAKE_BINARY_DIR}/zpckey.1
|
||||
+ FILES ${CMAKE_SOURCE_DIR}/man/zpckey.1
|
||||
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1
|
||||
)
|
||||
|
||||
--
|
||||
2.55.0
|
||||
|
||||
|
||||
From 6ca79151e61cdf905d90aad375788ca0d59cb929 Mon Sep 17 00:00:00 2001
|
||||
From: Holger Dengler <dengler@linux.ibm.com>
|
||||
Date: Fri, 19 Jun 2026 16:15:28 +0200
|
||||
Subject: [PATCH 4/6] cmake: Change man-page related build target
|
||||
|
||||
Remove the man-page conversion target and change it to an explicit
|
||||
update-man target. The conversion script has been relocated to the
|
||||
misc/ sub-directory. The script now also gets reasonable defaults for
|
||||
the source and target directory, so that it can also used manually
|
||||
without parameters.
|
||||
|
||||
Signed-off-by: Holger Dengler <dengler@linux.ibm.com>
|
||||
---
|
||||
CMakeLists.txt | 5 +++--
|
||||
README.md | 19 ++++++++++++++++---
|
||||
conv_man.sh => misc/update-man | 5 +++--
|
||||
3 files changed, 22 insertions(+), 7 deletions(-)
|
||||
rename conv_man.sh => misc/update-man (79%)
|
||||
|
||||
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||
index 2f7a9db..74e3684 100644
|
||||
--- a/CMakeLists.txt
|
||||
+++ b/CMakeLists.txt
|
||||
@@ -751,8 +751,9 @@ find_program(PANDOC pandoc)
|
||||
if (PANDOC)
|
||||
|
||||
add_custom_target(
|
||||
- man ALL
|
||||
- COMMAND ${CMAKE_SOURCE_DIR}/conv_man.sh "${CMAKE_SOURCE_DIR}/man" "${CMAKE_BINARY_DIR}"
|
||||
+ update-man ALL
|
||||
+ COMMAND ${CMAKE_SOURCE_DIR}/misc/update-man ${CMAKE_SOURCE_DIR}/man/ ${CMAKE_SOURCE_DIR}/man/
|
||||
+ VERBATIM
|
||||
)
|
||||
|
||||
endif () # PANDOC_FOUND
|
||||
diff --git a/README.md b/README.md
|
||||
index 02d569b..632f3af 100644
|
||||
--- a/README.md
|
||||
+++ b/README.md
|
||||
@@ -39,9 +39,6 @@ Additional prerequisites for building the internal test program:
|
||||
- libjson-c devel package >= 0.13
|
||||
- internet connection
|
||||
|
||||
-Additional prerequisites for building the man-pages:
|
||||
-- pandoc
|
||||
-
|
||||
Additional prerequisites for building the internal html and latex doc:
|
||||
- doxygen >= 1.8.17
|
||||
- latex, bibtex
|
||||
@@ -74,6 +71,22 @@ Custom compile options can also be passed to `cmake` via the `CFLAGS` and
|
||||
`CXXFLAGS` environment variables in the usual way.
|
||||
|
||||
|
||||
+Man-Pages
|
||||
+---------
|
||||
+
|
||||
+The man-pages are generated from the related markdown sources. To
|
||||
+update one of the man-pages, make the changes to the markdown-file,
|
||||
+and use the `update-man` build target to update the pre-built man-page
|
||||
+files (troff format). After updating the pre-built man-pages, commit
|
||||
+them in a separate patch to the repository.
|
||||
+
|
||||
+ # make changes to man/<man-page-name>.<section>.md
|
||||
+ cmake --build --target update-man # or
|
||||
+ make -C build update-man
|
||||
+ git add man/*.[157]
|
||||
+ git commit -s -m "man: Update pre-built man-pages"
|
||||
+
|
||||
+
|
||||
Cross-Building for s390x architecture
|
||||
-------------------------------------
|
||||
|
||||
diff --git a/conv_man.sh b/misc/update-man
|
||||
similarity index 79%
|
||||
rename from conv_man.sh
|
||||
rename to misc/update-man
|
||||
index 992e147..ca15a72 100755
|
||||
--- a/conv_man.sh
|
||||
+++ b/misc/update-man
|
||||
@@ -2,10 +2,11 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
# Copyright contributors to the libzpc project
|
||||
|
||||
-SRCDIR=${1}
|
||||
-DSTDIR=${2}
|
||||
+SRCDIR=${1:-"./man/"}
|
||||
+DSTDIR=${2:-"./man/"}
|
||||
|
||||
[ -z "${SRCDIR}" ] || [ -z "${DSTDIR}" ] && exit 1
|
||||
+[ ! -d "${SRCDIR}" ] || [ ! -d "${DSTDIR}" ] && exit 1
|
||||
command -v pandoc >/dev/null 2>&1 || exit 1
|
||||
|
||||
for MD in "${SRCDIR}"/*.md; do
|
||||
--
|
||||
2.55.0
|
||||
|
||||
|
||||
From a3f3b2b56df97e39436efce8f4e8883cee2887d4 Mon Sep 17 00:00:00 2001
|
||||
From: Holger Dengler <dengler@linux.ibm.com>
|
||||
Date: Fri, 19 Jun 2026 18:22:58 +0200
|
||||
Subject: [PATCH 5/6] spec: Remove the pandoc dependency
|
||||
|
||||
Signed-off-by: Holger Dengler <dengler@linux.ibm.com>
|
||||
---
|
||||
libzpc.spec | 1 -
|
||||
1 file changed, 1 deletion(-)
|
||||
|
||||
diff --git a/libzpc.spec b/libzpc.spec
|
||||
index ae30f1d..3700e37 100644
|
||||
--- a/libzpc.spec
|
||||
+++ b/libzpc.spec
|
||||
@@ -14,7 +14,6 @@ BuildRequires: gcc
|
||||
BuildRequires: g++
|
||||
BuildRequires: make
|
||||
BuildRequires: clang-tools-extra
|
||||
-BuildRequires: pandoc
|
||||
BuildRequires: json-c-devel
|
||||
BuildRequires: openssl-devel >= 3.0.7
|
||||
|
||||
--
|
||||
2.55.0
|
||||
|
||||
|
||||
From 73b32ef1f419ba45da3b516c72540315650d2d6b Mon Sep 17 00:00:00 2001
|
||||
From: Holger Dengler <dengler@linux.ibm.com>
|
||||
Date: Fri, 19 Jun 2026 18:23:44 +0200
|
||||
Subject: [PATCH 6/6] travis: Remove the pandoc dependency
|
||||
|
||||
Signed-off-by: Holger Dengler <dengler@linux.ibm.com>
|
||||
---
|
||||
.travis.yml | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/.travis.yml b/.travis.yml
|
||||
index f029fcc..4e82506 100644
|
||||
--- a/.travis.yml
|
||||
+++ b/.travis.yml
|
||||
@@ -12,7 +12,7 @@ compiler:
|
||||
|
||||
before_install:
|
||||
- sudo apt-get update -qq
|
||||
- - sudo apt-get install -y cmake pandoc clang-format libjson-c-dev libssl-dev
|
||||
+ - sudo apt-get install -y cmake clang-format libjson-c-dev libssl-dev
|
||||
|
||||
script:
|
||||
- set -o pipefail
|
||||
--
|
||||
2.55.0
|
||||
|
||||
88
libzpc2.spec
Normal file
88
libzpc2.spec
Normal file
@ -0,0 +1,88 @@
|
||||
Name: libzpc2
|
||||
Version: 2.0.1
|
||||
Release: %autorelease
|
||||
Summary: Open Source library for the IBM Z Protected-key crypto feature
|
||||
|
||||
License: MIT
|
||||
Url: https://github.com/opencryptoki/libzpc
|
||||
Source0: %{url}/archive/v%{version}/libzpc-%{version}.tar.gz
|
||||
|
||||
# post GA fixes
|
||||
Patch0: libzpc-2.0.1-fixes.patch
|
||||
|
||||
BuildRequires: cmake
|
||||
BuildRequires: gcc
|
||||
BuildRequires: g++
|
||||
BuildRequires: make
|
||||
BuildRequires: clang-tools-extra
|
||||
BuildRequires: json-c-devel
|
||||
BuildRequires: openssl-devel
|
||||
|
||||
|
||||
%description
|
||||
The IBM Z Protected-key Crypto library %{name} is an open-source project
|
||||
targeting the 64-bit Linux on IBM Z (s390x) platform. It provides access
|
||||
to z/Architecture's extensive performance-boosting hardware support and its
|
||||
protected-key feature which ensures that key material is never present in
|
||||
main memory at any time.
|
||||
|
||||
|
||||
%ifarch s390x
|
||||
%package -n libzpc-provider
|
||||
Summary: OpenSSL provider module for %{name}
|
||||
Provides: libzpc2-provider = %{version}-%{release}
|
||||
|
||||
%description -n libzpc-provider
|
||||
The %{name}-provider package contains a provider module for OpenSSL v3.0 (and
|
||||
later), interfacing to the protected key feature of z/Architecture.
|
||||
%endif
|
||||
|
||||
|
||||
%package -n libzpc-tools
|
||||
Summary: Key management tool for %{name} keys
|
||||
Provides: libzpc2-tools = %{version}-%{release}
|
||||
|
||||
%description -n libzpc-tools
|
||||
The %{name}-tools package contains a key management tool for key origins.
|
||||
As the protected keys itself are volatile, the tooling can be used to manage
|
||||
persistent protected key origins, from which protected keys can be (re-)derived.
|
||||
|
||||
|
||||
%prep
|
||||
%autosetup -p1 -n libzpc-%{version}
|
||||
%global modulesdir %(pkg-config --variable=modulesdir libcrypto)
|
||||
|
||||
%build
|
||||
%cmake
|
||||
%cmake_build
|
||||
|
||||
%install
|
||||
%cmake_install
|
||||
%ifarch s390x
|
||||
install -m644 %_vpath_builddir/hbkzpcprovider.conf \
|
||||
-D -t $RPM_BUILD_ROOT%{_sysconfdir}/pki/tls/openssl.d/
|
||||
%endif
|
||||
|
||||
%check
|
||||
%ctest
|
||||
|
||||
|
||||
%ifarch s390x
|
||||
%files -n libzpc-provider
|
||||
%doc README.md CHANGES.md
|
||||
%license LICENSE
|
||||
%{modulesdir}/zpcprovider.so
|
||||
%{_mandir}/man5/hbkzpcprovider.conf.5*
|
||||
%{_mandir}/man7/hbkzpcprovider.7*
|
||||
%config(noreplace) %{_sysconfdir}/pki/tls/openssl.d/hbkzpcprovider.conf
|
||||
%endif
|
||||
|
||||
%files -n libzpc-tools
|
||||
%doc README.md CHANGES.md
|
||||
%license LICENSE
|
||||
%{_bindir}/zpckey
|
||||
%{_mandir}/man1/zpckey.1*
|
||||
|
||||
|
||||
%changelog
|
||||
%autochangelog
|
||||
Loading…
Reference in New Issue
Block a user