]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
crypto: hash - Make HASH_MAX_DESCSIZE a bit more obvious
authorHerbert Xu <herbert@gondor.apana.org.au>
Mon, 11 Aug 2025 04:44:00 +0000 (12:44 +0800)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 22 Aug 2025 09:28:44 +0000 (17:28 +0800)
Move S390_SHA_CTX_SIZE into crypto/hash.h so that the derivation
of HASH_MAX_DESCSIZE is less cryptic.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
arch/s390/crypto/sha.h
include/crypto/hash.h

index cadb4b13622ae51d9c85c07fb5d496065fa19f7f..b9cd9572dd35cec70fd29b3c7744911cf60067bd 100644 (file)
 #ifndef _CRYPTO_ARCH_S390_SHA_H
 #define _CRYPTO_ARCH_S390_SHA_H
 
+#include <crypto/hash.h>
 #include <crypto/sha2.h>
 #include <crypto/sha3.h>
+#include <linux/build_bug.h>
 #include <linux/types.h>
 
 /* must be big enough for the largest SHA variant */
 #define CPACF_MAX_PARMBLOCK_SIZE       SHA3_STATE_SIZE
 #define SHA_MAX_BLOCK_SIZE             SHA3_224_BLOCK_SIZE
-#define S390_SHA_CTX_SIZE              sizeof(struct s390_sha_ctx)
 
 struct s390_sha_ctx {
        u64 count;              /* message length in bytes */
@@ -42,4 +43,9 @@ int s390_sha_update_blocks(struct shash_desc *desc, const u8 *data,
 int s390_sha_finup(struct shash_desc *desc, const u8 *src, unsigned int len,
                   u8 *out);
 
+static inline void __check_s390_sha_ctx_size(void)
+{
+       BUILD_BUG_ON(S390_SHA_CTX_SIZE != sizeof(struct s390_sha_ctx));
+}
+
 #endif
index bbaeae705ef0e56bf5a940fb49bce17b0022b7ff..586700332c731b0ae443a258380348ddf203bf35 100644 (file)
@@ -177,14 +177,26 @@ struct shash_desc {
 
 #define HASH_MAX_DIGESTSIZE     64
 
+/*
+ * The size of a core hash state and a partial block.  The final byte
+ * is the length of the partial block.
+ */
+#define HASH_STATE_AND_BLOCK(state, block) ((state) + (block) + 1)
+
+
 /* Worst case is sha3-224. */
-#define HASH_MAX_STATESIZE      200 + 144 + 1
+#define HASH_MAX_STATESIZE      HASH_STATE_AND_BLOCK(200, 144)
+
+/* This needs to match arch/s390/crypto/sha.h. */
+#define S390_SHA_CTX_SIZE      216
 
 /*
  * Worst case is hmac(sha3-224-s390).  Its context is a nested 'shash_desc'
  * containing a 'struct s390_sha_ctx'.
  */
-#define HASH_MAX_DESCSIZE      (sizeof(struct shash_desc) + 361)
+#define SHA3_224_S390_DESCSIZE HASH_STATE_AND_BLOCK(S390_SHA_CTX_SIZE, 144)
+#define HASH_MAX_DESCSIZE      (sizeof(struct shash_desc) + \
+                                SHA3_224_S390_DESCSIZE)
 #define MAX_SYNC_HASH_REQSIZE  (sizeof(struct ahash_request) + \
                                 HASH_MAX_DESCSIZE)