[BUG] crypto: shash – crypto_shash_export_core() fails with -ENOSYS after libcrypto updates merge

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



After commit 13150742b09e ("Merge tag 'libcrypto-updates-for-linus' of
git://git.kernel.org/pub/scm/linux/kernel/git/ebiggers/linux"),
crypto_shash_export_core() fails with -ENOSYS for all SHA algorithms
registered via shash.

The failure originates from shash_default_export_core(), which is now
being used as the default export function. However, this function is not
implemented, resulting in -ENOSYS.

Before the merge, SHA shash implementations were setting the
CRYPTO_AHASH_ALG_BLOCK_ONLY flag. This caused alg->export_core to be
assigned to alg->export, enabling proper state export. It seems the
removal of CRYPTO_AHASH_ALG_BLOCK_ONLY from the SHA implementations was
intentional, is this correct?

This issue breaks all aead implementations in the QAT driver, which
since commit ccafe2821cfa ("crypto: qat – Use crypto_shash_export_core")
rely on crypto_shash_export_core() to retrieve the initial state for
HMAC (i.e., H(K' xor opad) and H(K' xor ipad)).

It’s likely that the Chelsio driver is also affected, as it uses the
same API.

What is the recommended way to move forward?  Should the SHA
implementations reintroduce CRYPTO_AHASH_ALG_BLOCK_ONLY?  Should
shash_default_export_core() be properly implemented?  Should drivers
like QAT switch to using the software library directly to export the SHA
state?  Or is there another preferred approach?

Thanks,

-- 
Giovanni




[Index of Archives]     [Kernel]     [Gnu Classpath]     [Gnu Crypto]     [DM Crypt]     [Netfilter]     [Bugtraq]
  Powered by Linux