crypto: keembay-ocs-hcu - Add HMAC support
authorDaniele Alessandrelli <daniele.alessandrelli@intel.com>
Wed, 16 Dec 2020 11:46:37 +0000 (11:46 +0000)
committerHerbert Xu <herbert@gondor.apana.org.au>
Sat, 2 Jan 2021 21:41:36 +0000 (08:41 +1100)
commitae832e329a8d17144e5ae625e1704901f0e0b024
treea29f22148e8fb1a9391bf0e6b3c72e700de41038
parent472b04444cd39e16ba54987b2e901a79cf175463
crypto: keembay-ocs-hcu - Add HMAC support

Add HMAC support to the Keem Bay OCS HCU driver, thus making it provide
the following additional transformations:
- hmac(sha256)
- hmac(sha384)
- hmac(sha512)
- hmac(sm3)

The Keem Bay OCS HCU hardware does not allow "context-switch" for HMAC
operations, i.e., it does not support computing a partial HMAC, save its
state and then continue it later. Therefore, full hardware acceleration
is provided only when possible (e.g., when crypto_ahash_digest() is
called); in all other cases hardware acceleration is only partial (OPAD
and IPAD calculation is done in software, while hashing is hardware
accelerated).

Co-developed-by: Declan Murphy <declan.murphy@intel.com>
Signed-off-by: Declan Murphy <declan.murphy@intel.com>
Signed-off-by: Daniele Alessandrelli <daniele.alessandrelli@intel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/keembay/Kconfig
drivers/crypto/keembay/keembay-ocs-hcu-core.c
drivers/crypto/keembay/ocs-hcu.c
drivers/crypto/keembay/ocs-hcu.h