slontis 5366490822 Add EVP_DigestSqueeze() API.
Fixes #7894

This allows SHAKE to squeeze multiple times with different output sizes.

The existing EVP_DigestFinalXOF() API has been left as a one shot
operation. A similar interface is used by another toolkit.

The low level SHA3_Squeeze() function needed to change slightly so
that it can handle multiple squeezes. This involves changing the
assembler code so that it passes a boolean to indicate whether
the Keccak function should be called on entry.
At the provider level, the squeeze is buffered, so that it only requests
a multiple of the blocksize when SHA3_Squeeze() is called. On the first
call the value is zero, on subsequent calls the value passed is 1.

This PR is derived from the excellent work done by @nmathewson in
https://github.com/openssl/openssl/pull/7921

Reviewed-by: Paul Dale <pauli@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/21511)
2023-11-10 13:27:00 +01:00
..
2023-11-10 13:27:00 +01:00
2023-09-07 09:59:15 +01:00
2021-05-28 14:29:13 +02:00
2021-05-28 14:29:13 +02:00
2021-05-28 14:29:13 +02:00
2021-05-28 14:29:13 +02:00
2021-05-28 14:29:13 +02:00
2021-05-28 14:29:13 +02:00
2021-05-28 14:29:13 +02:00
2021-05-28 14:29:13 +02:00
2022-11-29 16:18:07 +01:00
2023-09-07 09:59:15 +01:00
2023-09-07 09:59:15 +01:00
2022-12-16 16:36:49 +01:00
2023-09-28 14:23:29 +01:00
2022-05-03 13:34:51 +01:00
2022-05-03 13:34:51 +01:00
2021-03-11 13:27:36 +00:00
2021-03-11 13:27:36 +00:00
2023-11-10 13:27:00 +01:00
2021-06-17 13:24:59 +01:00
2021-02-18 15:05:17 +00:00
2023-09-07 09:59:15 +01:00
2023-11-10 13:27:00 +01:00
2023-09-07 09:59:15 +01:00
2023-09-07 09:59:15 +01:00
2023-09-07 09:59:15 +01:00
2023-09-07 09:59:15 +01:00
2023-09-28 14:23:29 +01:00
2020-08-07 14:16:47 +10:00
2023-09-07 09:59:15 +01:00
2023-09-07 09:59:15 +01:00
2023-09-07 09:59:15 +01:00
2022-05-03 13:34:51 +01:00
2022-05-03 13:34:51 +01:00
2023-09-07 09:59:15 +01:00
2023-09-07 09:59:15 +01:00
2019-10-11 15:30:57 +02:00
2021-11-25 16:04:05 +10:00
2021-09-07 13:35:43 +02:00
2023-09-07 09:59:15 +01:00
2023-09-07 09:59:15 +01:00
2023-09-07 09:59:15 +01:00
2023-09-07 09:59:15 +01:00
2022-05-03 13:34:51 +01:00
2023-09-07 09:59:15 +01:00
2023-09-28 14:23:29 +01:00
2021-04-22 14:38:44 +01:00
2020-04-23 13:55:52 +01:00