^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 1) /* SPDX-License-Identifier: GPL-2.0 */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 2) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 3) * Common values for SHA-3 algorithms
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 4) */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 5) #ifndef __CRYPTO_SHA3_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 6) #define __CRYPTO_SHA3_H__
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 7)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 8) #define SHA3_224_DIGEST_SIZE (224 / 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 9) #define SHA3_224_BLOCK_SIZE (200 - 2 * SHA3_224_DIGEST_SIZE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #define SHA3_256_DIGEST_SIZE (256 / 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) #define SHA3_256_BLOCK_SIZE (200 - 2 * SHA3_256_DIGEST_SIZE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14) #define SHA3_384_DIGEST_SIZE (384 / 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15) #define SHA3_384_BLOCK_SIZE (200 - 2 * SHA3_384_DIGEST_SIZE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) #define SHA3_512_DIGEST_SIZE (512 / 8)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) #define SHA3_512_BLOCK_SIZE (200 - 2 * SHA3_512_DIGEST_SIZE)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) struct sha3_state {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) u64 st[25];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) unsigned int rsiz;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) unsigned int rsizw;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) unsigned int partial;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) u8 buf[SHA3_224_BLOCK_SIZE];
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) };
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) int crypto_sha3_init(struct shash_desc *desc);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) int crypto_sha3_update(struct shash_desc *desc, const u8 *data,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) unsigned int len);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) int crypto_sha3_final(struct shash_desc *desc, u8 *out);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) #endif