summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHolger Dengler <dengler@linux.ibm.com>2023-09-27 15:36:59 +0200
committerHolger Dengler <dengler@linux.ibm.com>2023-11-10 14:26:27 +0100
commit017acc58f6b67d5b347db411a7a1c4e890434f42 (patch)
tree15b2f34820ccf8ba20b38fe9f837848463ec46e8
parent7aa45b8bb3269e881d0378aa785ff344efdd2897 (diff)
Fix state handling of sha3_final for s390x.
The digest life-cycle state diagram has been updated for XOF. Fix the state handling in s390x_sha3_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)
-rw-r--r--providers/implementations/digests/sha3_prov.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/providers/implementations/digests/sha3_prov.c b/providers/implementations/digests/sha3_prov.c
index 85370912f6..5cf9791bbf 100644
--- a/providers/implementations/digests/sha3_prov.c
+++ b/providers/implementations/digests/sha3_prov.c
@@ -202,6 +202,10 @@ static int s390x_sha3_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;
s390x_klmd(ctx->buf, ctx->bufsz, NULL, 0, ctx->pad, ctx->A);
memcpy(out, ctx->A, outlen);
return 1;