]>
Commit | Line | Data |
---|---|---|
566a494f HS |
1 | /** |
2 | * \file sha1.h | |
3 | * based from http://xyssl.org/code/source/sha1/ | |
4 | * FIPS-180-1 compliant SHA-1 implementation | |
5 | * | |
6 | * Copyright (C) 2003-2006 Christophe Devine | |
7 | * | |
5b8031cc | 8 | * SPDX-License-Identifier: LGPL-2.1 |
566a494f HS |
9 | */ |
10 | /* | |
11 | * The SHA-1 standard was published by NIST in 1993. | |
12 | * | |
13 | * http://www.itl.nist.gov/fipspubs/fip180-1.htm | |
14 | */ | |
15 | #ifndef _SHA1_H | |
16 | #define _SHA1_H | |
17 | ||
18 | #ifdef __cplusplus | |
19 | extern "C" { | |
20 | #endif | |
21 | ||
22 | #define SHA1_SUM_POS -0x20 | |
23 | #define SHA1_SUM_LEN 20 | |
24 | ||
25 | /** | |
4ef218f6 | 26 | * \brief SHA-1 context structure |
566a494f HS |
27 | */ |
28 | typedef struct | |
29 | { | |
4ef218f6 WD |
30 | unsigned long total[2]; /*!< number of bytes processed */ |
31 | unsigned long state[5]; /*!< intermediate digest state */ | |
32 | unsigned char buffer[64]; /*!< data block being processed */ | |
566a494f HS |
33 | } |
34 | sha1_context; | |
35 | ||
36 | /** | |
4ef218f6 | 37 | * \brief SHA-1 context setup |
566a494f | 38 | * |
4ef218f6 | 39 | * \param ctx SHA-1 context to be initialized |
566a494f HS |
40 | */ |
41 | void sha1_starts( sha1_context *ctx ); | |
42 | ||
43 | /** | |
4ef218f6 | 44 | * \brief SHA-1 process buffer |
566a494f | 45 | * |
4ef218f6 | 46 | * \param ctx SHA-1 context |
566a494f | 47 | * \param input buffer holding the data |
4ef218f6 | 48 | * \param ilen length of the input data |
566a494f | 49 | */ |
a7d1d765 SG |
50 | void sha1_update(sha1_context *ctx, const unsigned char *input, |
51 | unsigned int ilen); | |
566a494f HS |
52 | |
53 | /** | |
4ef218f6 | 54 | * \brief SHA-1 final digest |
566a494f | 55 | * |
4ef218f6 | 56 | * \param ctx SHA-1 context |
566a494f HS |
57 | * \param output SHA-1 checksum result |
58 | */ | |
59 | void sha1_finish( sha1_context *ctx, unsigned char output[20] ); | |
60 | ||
61 | /** | |
4ef218f6 | 62 | * \brief Output = SHA-1( input buffer ) |
566a494f HS |
63 | * |
64 | * \param input buffer holding the data | |
4ef218f6 | 65 | * \param ilen length of the input data |
566a494f HS |
66 | * \param output SHA-1 checksum result |
67 | */ | |
a7d1d765 SG |
68 | void sha1_csum(const unsigned char *input, unsigned int ilen, |
69 | unsigned char *output); | |
566a494f | 70 | |
215b01bb BS |
71 | /** |
72 | * \brief Output = SHA-1( input buffer ), with watchdog triggering | |
73 | * | |
74 | * \param input buffer holding the data | |
75 | * \param ilen length of the input data | |
76 | * \param output SHA-1 checksum result | |
77 | * \param chunk_sz watchdog triggering period (in bytes of input processed) | |
78 | */ | |
a7d1d765 SG |
79 | void sha1_csum_wd(const unsigned char *input, unsigned int ilen, |
80 | unsigned char *output, unsigned int chunk_sz); | |
566a494f HS |
81 | |
82 | /** | |
4ef218f6 | 83 | * \brief Output = HMAC-SHA-1( input buffer, hmac key ) |
566a494f | 84 | * |
4ef218f6 | 85 | * \param key HMAC secret key |
566a494f HS |
86 | * \param keylen length of the HMAC key |
87 | * \param input buffer holding the data | |
4ef218f6 | 88 | * \param ilen length of the input data |
566a494f HS |
89 | * \param output HMAC-SHA-1 result |
90 | */ | |
a7d1d765 SG |
91 | void sha1_hmac(const unsigned char *key, int keylen, |
92 | const unsigned char *input, unsigned int ilen, | |
93 | unsigned char *output); | |
566a494f HS |
94 | |
95 | /** | |
4ef218f6 | 96 | * \brief Checkup routine |
566a494f | 97 | * |
4ef218f6 | 98 | * \return 0 if successful, or 1 if the test failed |
566a494f HS |
99 | */ |
100 | int sha1_self_test( void ); | |
101 | ||
102 | #ifdef __cplusplus | |
103 | } | |
104 | #endif | |
105 | ||
106 | #endif /* sha1.h */ |