162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Common values for SHA-3 algorithms
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci#ifndef __CRYPTO_SHA3_H__
662306a36Sopenharmony_ci#define __CRYPTO_SHA3_H__
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#define SHA3_224_DIGEST_SIZE	(224 / 8)
962306a36Sopenharmony_ci#define SHA3_224_BLOCK_SIZE	(200 - 2 * SHA3_224_DIGEST_SIZE)
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#define SHA3_256_DIGEST_SIZE	(256 / 8)
1262306a36Sopenharmony_ci#define SHA3_256_BLOCK_SIZE	(200 - 2 * SHA3_256_DIGEST_SIZE)
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#define SHA3_384_DIGEST_SIZE	(384 / 8)
1562306a36Sopenharmony_ci#define SHA3_384_BLOCK_SIZE	(200 - 2 * SHA3_384_DIGEST_SIZE)
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci#define SHA3_512_DIGEST_SIZE	(512 / 8)
1862306a36Sopenharmony_ci#define SHA3_512_BLOCK_SIZE	(200 - 2 * SHA3_512_DIGEST_SIZE)
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_cistruct sha3_state {
2162306a36Sopenharmony_ci	u64		st[25];
2262306a36Sopenharmony_ci	unsigned int	rsiz;
2362306a36Sopenharmony_ci	unsigned int	rsizw;
2462306a36Sopenharmony_ci
2562306a36Sopenharmony_ci	unsigned int	partial;
2662306a36Sopenharmony_ci	u8		buf[SHA3_224_BLOCK_SIZE];
2762306a36Sopenharmony_ci};
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ciint crypto_sha3_init(struct shash_desc *desc);
3062306a36Sopenharmony_ciint crypto_sha3_update(struct shash_desc *desc, const u8 *data,
3162306a36Sopenharmony_ci		       unsigned int len);
3262306a36Sopenharmony_ciint crypto_sha3_final(struct shash_desc *desc, u8 *out);
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ci#endif
35