On Tue, Jun 04, 2024 at 08:55:48PM +0200, Ard Biesheuvel wrote: > > > > This patch takes a new approach of just adding an API > > crypto_shash_finup_mb() that synchronously computes the hash of multiple > > equal-length messages, starting from a common state that represents the > > (possibly empty) common prefix shared by the messages. > > > > This is an independent optimization, right? This could be useful even > more sequential hashing, and is not a fundamental aspect of parallel > hashing? If you're referring to the part about using a common starting state, that's not an independent optimization. Only multibuffer hashing processes multiple messages in one call and therefore has an opportunity to share a starting shash_desc for finup. This isn't just an optimization but it also makes the multibuffer hashing API and its implementation much simpler. With single-buffer there has to be one shash_desc per message as usual. If you're asking if crypto_shash_finup_mb() can be used even without multibuffer hashing support, the answer is yes. This patchset makes crypto_shash_finup_mb() fall back to crypto_shash_finup() as needed, and this is used by fsverity and dm-verity to have one code path that uses crypto_shash_finup_mb() instead of separate code paths that use crypto_shash_finup_mb() and crypto_shash_finup(). This just makes things a bit simpler and isn't an optimization; note that the fallback has to copy the shash_desc for each message beyond the first. - Eric