162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Common values for SHA-1 algorithms
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#ifndef _CRYPTO_SHA1_H
762306a36Sopenharmony_ci#define _CRYPTO_SHA1_H
862306a36Sopenharmony_ci
962306a36Sopenharmony_ci#include <linux/types.h>
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci#define SHA1_DIGEST_SIZE        20
1262306a36Sopenharmony_ci#define SHA1_BLOCK_SIZE         64
1362306a36Sopenharmony_ci
1462306a36Sopenharmony_ci#define SHA1_H0		0x67452301UL
1562306a36Sopenharmony_ci#define SHA1_H1		0xefcdab89UL
1662306a36Sopenharmony_ci#define SHA1_H2		0x98badcfeUL
1762306a36Sopenharmony_ci#define SHA1_H3		0x10325476UL
1862306a36Sopenharmony_ci#define SHA1_H4		0xc3d2e1f0UL
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ciextern const u8 sha1_zero_message_hash[SHA1_DIGEST_SIZE];
2162306a36Sopenharmony_ci
2262306a36Sopenharmony_cistruct sha1_state {
2362306a36Sopenharmony_ci	u32 state[SHA1_DIGEST_SIZE / 4];
2462306a36Sopenharmony_ci	u64 count;
2562306a36Sopenharmony_ci	u8 buffer[SHA1_BLOCK_SIZE];
2662306a36Sopenharmony_ci};
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_cistruct shash_desc;
2962306a36Sopenharmony_ci
3062306a36Sopenharmony_ciextern int crypto_sha1_update(struct shash_desc *desc, const u8 *data,
3162306a36Sopenharmony_ci			      unsigned int len);
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ciextern int crypto_sha1_finup(struct shash_desc *desc, const u8 *data,
3462306a36Sopenharmony_ci			     unsigned int len, u8 *hash);
3562306a36Sopenharmony_ci
3662306a36Sopenharmony_ci/*
3762306a36Sopenharmony_ci * An implementation of SHA-1's compression function.  Don't use in new code!
3862306a36Sopenharmony_ci * You shouldn't be using SHA-1, and even if you *have* to use SHA-1, this isn't
3962306a36Sopenharmony_ci * the correct way to hash something with SHA-1 (use crypto_shash instead).
4062306a36Sopenharmony_ci */
4162306a36Sopenharmony_ci#define SHA1_DIGEST_WORDS	(SHA1_DIGEST_SIZE / 4)
4262306a36Sopenharmony_ci#define SHA1_WORKSPACE_WORDS	16
4362306a36Sopenharmony_civoid sha1_init(__u32 *buf);
4462306a36Sopenharmony_civoid sha1_transform(__u32 *digest, const char *data, __u32 *W);
4562306a36Sopenharmony_ci
4662306a36Sopenharmony_ci#endif /* _CRYPTO_SHA1_H */
47