1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Common values for SHA-1 algorithms
4  */
5 
6 #ifndef _CRYPTO_SHA1_H
7 #define _CRYPTO_SHA1_H
8 
9 #include <linux/types.h>
10 
11 #define SHA1_DIGEST_SIZE        20
12 #define SHA1_BLOCK_SIZE         64
13 #define SHA1_STATE_SIZE         offsetof(struct sha1_state, buffer)
14 
15 #define SHA1_H0		0x67452301UL
16 #define SHA1_H1		0xefcdab89UL
17 #define SHA1_H2		0x98badcfeUL
18 #define SHA1_H3		0x10325476UL
19 #define SHA1_H4		0xc3d2e1f0UL
20 
21 extern const u8 sha1_zero_message_hash[SHA1_DIGEST_SIZE];
22 
23 struct sha1_state {
24 	u32 state[SHA1_DIGEST_SIZE / 4];
25 	u64 count;
26 	u8 buffer[SHA1_BLOCK_SIZE];
27 };
28 
29 /*
30  * An implementation of SHA-1's compression function.  Don't use in new code!
31  * You shouldn't be using SHA-1, and even if you *have* to use SHA-1, this isn't
32  * the correct way to hash something with SHA-1 (use crypto_shash instead).
33  */
34 #define SHA1_DIGEST_WORDS	(SHA1_DIGEST_SIZE / 4)
35 #define SHA1_WORKSPACE_WORDS	16
36 void sha1_init(__u32 *buf);
37 void sha1_transform(__u32 *digest, const char *data, __u32 *W);
38 
39 #endif /* _CRYPTO_SHA1_H */
40