33 lines
1.2 KiB
Diff
33 lines
1.2 KiB
Diff
|
commit 1022131d16e30cfbf896e02419019de48e8e1149
|
||
|
Author: Holger Dengler <dengler@linux.ibm.com>
|
||
|
Date: Wed Sep 27 15:43:18 2023 +0200
|
||
|
|
||
|
Fix state handling of keccak_final for s390x.
|
||
|
|
||
|
The digest life-cycle state diagram has been updated for XOF. Fix the
|
||
|
state handling in s390x_keccac_final() according to the updated state
|
||
|
diagram.
|
||
|
|
||
|
Signed-off-by: Holger Dengler <dengler@linux.ibm.com>
|
||
|
|
||
|
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
|
||
|
Reviewed-by: Todd Short <todd.short@me.com>
|
||
|
Reviewed-by: Tomas Mraz <tomas@openssl.org>
|
||
|
(Merged from https://github.com/openssl/openssl/pull/22221)
|
||
|
|
||
|
diff --git a/providers/implementations/digests/sha3_prov.c b/providers/implementations/digests/sha3_prov.c
|
||
|
index 34620cf95a..f691273baf 100644
|
||
|
--- a/providers/implementations/digests/sha3_prov.c
|
||
|
+++ b/providers/implementations/digests/sha3_prov.c
|
||
|
@@ -235,6 +235,10 @@ static int s390x_keccakc_final(void *vctx, unsigned char *out, size_t outlen,
|
||
|
|
||
|
if (!ossl_prov_is_running())
|
||
|
return 0;
|
||
|
+ if (!(ctx->xof_state == XOF_STATE_INIT ||
|
||
|
+ ctx->xof_state == XOF_STATE_ABSORB))
|
||
|
+ return 0;
|
||
|
+ ctx->xof_state = XOF_STATE_FINAL;
|
||
|
if (outlen == 0)
|
||
|
return 1;
|
||
|
memset(ctx->buf + num, 0, bsz - num);
|