···1010#ifndef _CRYPTO_ARCH_S390_SHA_H1111#define _CRYPTO_ARCH_S390_SHA_H12121313+#include <crypto/hash.h>1314#include <crypto/sha2.h>1415#include <crypto/sha3.h>1616+#include <linux/build_bug.h>1517#include <linux/types.h>16181719/* must be big enough for the largest SHA variant */1820#define CPACF_MAX_PARMBLOCK_SIZE SHA3_STATE_SIZE1921#define SHA_MAX_BLOCK_SIZE SHA3_224_BLOCK_SIZE2020-#define S390_SHA_CTX_SIZE sizeof(struct s390_sha_ctx)21222223struct s390_sha_ctx {2324 u64 count; /* message length in bytes */···4241 unsigned int len);4342int s390_sha_finup(struct shash_desc *desc, const u8 *src, unsigned int len,4443 u8 *out);4444+4545+static inline void __check_s390_sha_ctx_size(void)4646+{4747+ BUILD_BUG_ON(S390_SHA_CTX_SIZE != sizeof(struct s390_sha_ctx));4848+}45494650#endif
+14-2
include/crypto/hash.h
···177177178178#define HASH_MAX_DIGESTSIZE 64179179180180+/*181181+ * The size of a core hash state and a partial block. The final byte182182+ * is the length of the partial block.183183+ */184184+#define HASH_STATE_AND_BLOCK(state, block) ((state) + (block) + 1)185185+186186+180187/* Worst case is sha3-224. */181181-#define HASH_MAX_STATESIZE 200 + 144 + 1188188+#define HASH_MAX_STATESIZE HASH_STATE_AND_BLOCK(200, 144)189189+190190+/* This needs to match arch/s390/crypto/sha.h. */191191+#define S390_SHA_CTX_SIZE 216182192183193/*184194 * Worst case is hmac(sha3-224-s390). Its context is a nested 'shash_desc'185195 * containing a 'struct s390_sha_ctx'.186196 */187187-#define HASH_MAX_DESCSIZE (sizeof(struct shash_desc) + 361)197197+#define SHA3_224_S390_DESCSIZE HASH_STATE_AND_BLOCK(S390_SHA_CTX_SIZE, 144)198198+#define HASH_MAX_DESCSIZE (sizeof(struct shash_desc) + \199199+ SHA3_224_S390_DESCSIZE)188200#define MAX_SYNC_HASH_REQSIZE (sizeof(struct ahash_request) + \189201 HASH_MAX_DESCSIZE)190202