version 0.0.1
[fms.git] / include / xyssl / sha1.h
1 /**\r
2  * \file sha1.h\r
3  */\r
4 #ifndef XYSSL_SHA1_H\r
5 #define XYSSL_SHA1_H\r
6 \r
7 /**\r
8  * \brief          SHA-1 context structure\r
9  */\r
10 typedef struct\r
11 {\r
12     unsigned long total[2];     /*!< number of bytes processed  */\r
13     unsigned long state[5];     /*!< intermediate digest state  */\r
14     unsigned char buffer[64];   /*!< data block being processed */\r
15 \r
16     unsigned char ipad[64];     /*!< HMAC: inner padding        */\r
17     unsigned char opad[64];     /*!< HMAC: outer padding        */\r
18 }\r
19 sha1_context;\r
20 \r
21 #ifdef __cplusplus\r
22 extern "C" {\r
23 #endif\r
24 \r
25 /**\r
26  * \brief          SHA-1 context setup\r
27  *\r
28  * \param ctx      context to be initialized\r
29  */\r
30 void sha1_starts( sha1_context *ctx );\r
31 \r
32 /**\r
33  * \brief          SHA-1 process buffer\r
34  *\r
35  * \param ctx      SHA-1 context\r
36  * \param input    buffer holding the  data\r
37  * \param ilen     length of the input data\r
38  */\r
39 void sha1_update( sha1_context *ctx, unsigned char *input, int ilen );\r
40 \r
41 /**\r
42  * \brief          SHA-1 final digest\r
43  *\r
44  * \param ctx      SHA-1 context\r
45  * \param output   SHA-1 checksum result\r
46  */\r
47 void sha1_finish( sha1_context *ctx, unsigned char output[20] );\r
48 \r
49 /**\r
50  * \brief          Output = SHA-1( input buffer )\r
51  *\r
52  * \param input    buffer holding the  data\r
53  * \param ilen     length of the input data\r
54  * \param output   SHA-1 checksum result\r
55  */\r
56 void sha1( unsigned char *input, int ilen, unsigned char output[20] );\r
57 \r
58 /**\r
59  * \brief          Output = SHA-1( file contents )\r
60  *\r
61  * \param path     input file name\r
62  * \param output   SHA-1 checksum result\r
63  *\r
64  * \return         0 if successful, 1 if fopen failed,\r
65  *                 or 2 if fread failed\r
66  */\r
67 int sha1_file( char *path, unsigned char output[20] );\r
68 \r
69 /**\r
70  * \brief          SHA-1 HMAC context setup\r
71  *\r
72  * \param ctx      HMAC context to be initialized\r
73  * \param key      HMAC secret key\r
74  * \param keylen   length of the HMAC key\r
75  */\r
76 void sha1_hmac_starts( sha1_context *ctx, unsigned char *key, int keylen );\r
77 \r
78 /**\r
79  * \brief          SHA-1 HMAC process buffer\r
80  *\r
81  * \param ctx      HMAC context\r
82  * \param input    buffer holding the  data\r
83  * \param ilen     length of the input data\r
84  */\r
85 void sha1_hmac_update( sha1_context *ctx, unsigned char *input, int ilen );\r
86 \r
87 /**\r
88  * \brief          SHA-1 HMAC final digest\r
89  *\r
90  * \param ctx      HMAC context\r
91  * \param output   SHA-1 HMAC checksum result\r
92  */\r
93 void sha1_hmac_finish( sha1_context *ctx, unsigned char output[20] );\r
94 \r
95 /**\r
96  * \brief          Output = HMAC-SHA-1( hmac key, input buffer )\r
97  *\r
98  * \param key      HMAC secret key\r
99  * \param keylen   length of the HMAC key\r
100  * \param input    buffer holding the  data\r
101  * \param ilen     length of the input data\r
102  * \param output   HMAC-SHA-1 result\r
103  */\r
104 void sha1_hmac( unsigned char *key, int keylen,\r
105                 unsigned char *input, int ilen,\r
106                 unsigned char output[20] );\r
107 \r
108 /**\r
109  * \brief          Checkup routine\r
110  *\r
111  * \return         0 if successful, or 1 if the test failed\r
112  */\r
113 int sha1_self_test( int verbose );\r
114 \r
115 #ifdef __cplusplus\r
116 }\r
117 #endif\r
118 \r
119 #endif /* sha1.h */