From: Harald Freudenberger <freude@linux.ibm.com>
To: herbert@gondor.apana.org.au
Cc: linux-crypto@vger.kernel.org, linux-s390@vger.kernel.org,
dengler@linux.ibm.com, ifranzki@linux.ibm.com,
fcallies@linux.ibm.com, hca@linux.ibm.com, gor@linux.ibm.com,
agordeev@linux.ibm.com
Subject: Re: [PATCH v12 0/6] New s390 specific protected key hmac
Date: Tue, 24 Jun 2025 13:34:41 +0200 [thread overview]
Message-ID: <65e586b07ff55f21f3909509b6591f41@linux.ibm.com> (raw)
In-Reply-To: <20250617134440.48000-1-freude@linux.ibm.com>
On 2025-06-17 15:44, Harald Freudenberger wrote:
> Add support for protected key hmac ("phmac") for s390 arch.
>
> With the latest machine generation there is now support for
> protected key (that is a key wrapped by a master key stored
> in firmware) hmac for sha2 (sha224, sha256, sha384 and sha512)
> for the s390 specific CPACF instruction kmac.
>
> This patch adds support via 4 new hashes registered as
> phmac(sha224), phmac(sha256), phmac(sha384) and phmac(sha512).
>
> Changelog:
> v1: Initial version
> v2: Increase HASH_MAX_DESCSIZE generic (not just for arch s390).
> Fix one finding to use kmemdup instead of kmalloc/memcpy from test
> robot. Remove unneeded cpacf subfunctions checks. Simplify
> clone_tfm() function. Rebased to s390/features.
> v3: Feedback from Herbert: Use GFP_ATOMIC in setkey function.
> Feedback from Holger: rework tfm clone function, move convert key
> invocation from setkey to init function. Rebased to updated
> s390/features from 11/7/2024. Ready for integration if there are
> no complains on v3.
> v4: Rewind back more or less to v2. Add code to check for non-sleeping
> context. Non-sleeping context during attempt to derive the
> protected key from raw key material is not accepted and
> -EOPNOTSUPP is returned (also currently all derivation pathes
> would in fact never sleep). In general the phmac implementation is
> not to be used within non-sleeping context and the code header
> mentions this. Tested with (patched) dm-integrity - works fine.
> v5: As suggested by Herbert now the shashes have been marked as
> 'internal' and wrapped by ahashes which use the cryptd if an
> atomic context is detected. So the visible phmac algorithms are
> now ahashes. Unfortunately the dm-integrity implementation
> currently requests and deals only with shashes and this phmac
> implementation is not fitting to the original goal any more...
> v6: As suggested by Herbert now a pure async phmac implementation.
> Tested via AF_ALG interface. Untested via dm-integrity as this
> layer
> only supports shashes. Maybe I'll develop a patch to switch the
> dm-integrity to ahash as it is anyway the more flexible interface.
> v7: Total rework of the implementation. Now uses workqueues and
> triggers
> asynch requests for key convert, init, update, final and digest.
> Tested with instrumented code and with a reworked version of
> dm-integrity which uses asynchronous hashes. A patch for
> dm-integrity
> is on the way but yet needs some last hone work.
> v8: Added selftest. With the selftest comes some code which wraps the
> clear key into a "clear key token" digestible by PKEY. The
> selftest also uses import() and export(), so these are now also
> implemented. Furthermore a finup() implementation is now also
> available. Tested with AF_ALG testcases and dm-integrity, also
> tested with some instrumented code to check that the asynch
> workqueue functions do their job correctly. Coding is complete!
> v9: As suggested by Herbert use ahash_request_complete() and surround
> it
> with local_bh_disable().
> v10: Split the pkey selftest patch into 3 patches. Slight rework of the
> setkey function as suggested by Holger: When selftest is running
> as much as possible of the production code should run. So now the
> key prep with selftest is one additional if/then block instead of
> an if/then/else construct.
> Code is ready for integration and well tested.
> v11: Utterly rework with the insights collected with the paes rework
> and the basic work done with the pkey rework over the last 5
> month.
> Note that patch #1 effectively reverts commit 7fa481734016
> ("crypto: ahash - make hash walk functions private to ahash.c")
> from Eric Biggers.
> v12: Fixed some typos, adaptions to 128 bit total counter,
> misc_register() invocation was missing in the patches series,
> added Herbert's proposal for a new function crypto_ahash_tested().
>
> Harald Freudenberger (5):
> crypto: ahash - make hash walk functions from ahash.c public
> s390/crypto: New s390 specific protected key hash phmac
> crypto: api - Add crypto_ahash_tested() helper function
> s390/crypto: Add selftest support for phmac
> crypto: testmgr - Enable phmac selftest
>
> Holger Dengler (1):
> s390/crypto: Add protected key hmac subfunctions for KMAC
>
> arch/s390/configs/debug_defconfig | 1 +
> arch/s390/configs/defconfig | 1 +
> arch/s390/crypto/Makefile | 1 +
> arch/s390/crypto/phmac_s390.c | 1048 +++++++++++++++++++++++++++++
> arch/s390/include/asm/cpacf.h | 4 +
> crypto/ahash.c | 26 +-
> crypto/testmgr.c | 30 +
> drivers/crypto/Kconfig | 13 +
> include/crypto/internal/hash.h | 30 +
> 9 files changed, 1133 insertions(+), 21 deletions(-)
> create mode 100644 arch/s390/crypto/phmac_s390.c
>
>
> base-commit: 1029436218e50168812dbc44b16bca6d35721b0b
> --
> 2.43.0
Hi Herbert,
as the phmac implementation uses the newly introduced
CRYPTO_ALG_NO_FALLBACK
flag, we can't deliver this patch series via s390. I talked with Heiko
about that and there are two options:
1) We (s390) pick your patch 4ccd065a69df ("crypto: ahash - Add support
for
drivers with no fallback") together with my patch series for the next
kernel's merge window.
2) You (crypto) pick my patch series into your cryptodev-2.6 for next
kernel's merge window.
I would prefer option 2 as most of the patches anyway deal with crypto
and Heiko and I do not expect unsolvable merge conflicts with the next
kernel's merge.
So what is your opinion?
Thanks,
Harald Freudenberger
next prev parent reply other threads:[~2025-06-24 11:34 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-17 13:44 [PATCH v12 0/6] New s390 specific protected key hmac Harald Freudenberger
2025-06-17 13:44 ` [PATCH v12 1/6] crypto: ahash - make hash walk functions from ahash.c public Harald Freudenberger
2025-06-17 13:44 ` [PATCH v12 2/6] s390/crypto: Add protected key hmac subfunctions for KMAC Harald Freudenberger
2025-06-17 13:44 ` [PATCH v12 3/6] s390/crypto: New s390 specific protected key hash phmac Harald Freudenberger
2025-06-18 9:21 ` Holger Dengler
2025-06-18 9:29 ` Heiko Carstens
2025-06-17 13:44 ` [PATCH v12 4/6] crypto: api - Add crypto_ahash_tested() helper function Harald Freudenberger
2025-06-18 9:23 ` Holger Dengler
2025-06-17 13:44 ` [PATCH v12 5/6] s390/crypto: Add selftest support for phmac Harald Freudenberger
2025-06-17 13:44 ` [PATCH v12 6/6] crypto: testmgr - Enable phmac selftest Harald Freudenberger
2025-06-18 8:58 ` [PATCH v12 0/6] New s390 specific protected key hmac Herbert Xu
2025-06-24 11:34 ` Harald Freudenberger [this message]
2025-06-24 11:37 ` Herbert Xu
2025-06-26 10:54 ` Herbert Xu
-- strict thread matches above, loose matches on Subject: below --
2025-06-25 9:04 Harald Freudenberger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=65e586b07ff55f21f3909509b6591f41@linux.ibm.com \
--to=freude@linux.ibm.com \
--cc=agordeev@linux.ibm.com \
--cc=dengler@linux.ibm.com \
--cc=fcallies@linux.ibm.com \
--cc=gor@linux.ibm.com \
--cc=hca@linux.ibm.com \
--cc=herbert@gondor.apana.org.au \
--cc=ifranzki@linux.ibm.com \
--cc=linux-crypto@vger.kernel.org \
--cc=linux-s390@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.