]> git.sur5r.net Git - freertos/blob - FreeRTOS-Labs/Source/mbedtls/include/mbedtls/md4.h
Add the Labs projects provided in the V10.2.1_191129 zip file.
[freertos] / FreeRTOS-Labs / Source / mbedtls / include / mbedtls / md4.h
1 /**\r
2  * \file md4.h\r
3  *\r
4  * \brief MD4 message digest algorithm (hash function)\r
5  *\r
6  * \warning MD4 is considered a weak message digest and its use constitutes a\r
7  *          security risk. We recommend considering stronger message digests\r
8  *          instead.\r
9  */\r
10 /*\r
11  *  Copyright (C) 2006-2015, ARM Limited, All Rights Reserved\r
12  *  SPDX-License-Identifier: Apache-2.0\r
13  *\r
14  *  Licensed under the Apache License, Version 2.0 (the "License"); you may\r
15  *  not use this file except in compliance with the License.\r
16  *  You may obtain a copy of the License at\r
17  *\r
18  *  http://www.apache.org/licenses/LICENSE-2.0\r
19  *\r
20  *  Unless required by applicable law or agreed to in writing, software\r
21  *  distributed under the License is distributed on an "AS IS" BASIS, WITHOUT\r
22  *  WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
23  *  See the License for the specific language governing permissions and\r
24  *  limitations under the License.\r
25  *\r
26  *  This file is part of mbed TLS (https://tls.mbed.org)\r
27  *\r
28  */\r
29 #ifndef MBEDTLS_MD4_H\r
30 #define MBEDTLS_MD4_H\r
31 \r
32 #if !defined(MBEDTLS_CONFIG_FILE)\r
33 #include "config.h"\r
34 #else\r
35 #include MBEDTLS_CONFIG_FILE\r
36 #endif\r
37 \r
38 #include <stddef.h>\r
39 #include <stdint.h>\r
40 \r
41 /* MBEDTLS_ERR_MD4_HW_ACCEL_FAILED is deprecated and should not be used. */\r
42 #define MBEDTLS_ERR_MD4_HW_ACCEL_FAILED                   -0x002D  /**< MD4 hardware accelerator failed */\r
43 \r
44 #ifdef __cplusplus\r
45 extern "C" {\r
46 #endif\r
47 \r
48 #if !defined(MBEDTLS_MD4_ALT)\r
49 // Regular implementation\r
50 //\r
51 \r
52 /**\r
53  * \brief          MD4 context structure\r
54  *\r
55  * \warning        MD4 is considered a weak message digest and its use\r
56  *                 constitutes a security risk. We recommend considering\r
57  *                 stronger message digests instead.\r
58  *\r
59  */\r
60 typedef struct mbedtls_md4_context\r
61 {\r
62     uint32_t total[2];          /*!< number of bytes processed  */\r
63     uint32_t state[4];          /*!< intermediate digest state  */\r
64     unsigned char buffer[64];   /*!< data block being processed */\r
65 }\r
66 mbedtls_md4_context;\r
67 \r
68 #else  /* MBEDTLS_MD4_ALT */\r
69 #include "md4_alt.h"\r
70 #endif /* MBEDTLS_MD4_ALT */\r
71 \r
72 /**\r
73  * \brief          Initialize MD4 context\r
74  *\r
75  * \param ctx      MD4 context to be initialized\r
76  *\r
77  * \warning        MD4 is considered a weak message digest and its use\r
78  *                 constitutes a security risk. We recommend considering\r
79  *                 stronger message digests instead.\r
80  *\r
81  */\r
82 void mbedtls_md4_init( mbedtls_md4_context *ctx );\r
83 \r
84 /**\r
85  * \brief          Clear MD4 context\r
86  *\r
87  * \param ctx      MD4 context to be cleared\r
88  *\r
89  * \warning        MD4 is considered a weak message digest and its use\r
90  *                 constitutes a security risk. We recommend considering\r
91  *                 stronger message digests instead.\r
92  *\r
93  */\r
94 void mbedtls_md4_free( mbedtls_md4_context *ctx );\r
95 \r
96 /**\r
97  * \brief          Clone (the state of) an MD4 context\r
98  *\r
99  * \param dst      The destination context\r
100  * \param src      The context to be cloned\r
101  *\r
102  * \warning        MD4 is considered a weak message digest and its use\r
103  *                 constitutes a security risk. We recommend considering\r
104  *                 stronger message digests instead.\r
105  *\r
106  */\r
107 void mbedtls_md4_clone( mbedtls_md4_context *dst,\r
108                         const mbedtls_md4_context *src );\r
109 \r
110 /**\r
111  * \brief          MD4 context setup\r
112  *\r
113  * \param ctx      context to be initialized\r
114  *\r
115  * \return         0 if successful\r
116  *\r
117  * \warning        MD4 is considered a weak message digest and its use\r
118  *                 constitutes a security risk. We recommend considering\r
119  *                 stronger message digests instead.\r
120  */\r
121 int mbedtls_md4_starts_ret( mbedtls_md4_context *ctx );\r
122 \r
123 /**\r
124  * \brief          MD4 process buffer\r
125  *\r
126  * \param ctx      MD4 context\r
127  * \param input    buffer holding the data\r
128  * \param ilen     length of the input data\r
129  *\r
130  * \return         0 if successful\r
131  *\r
132  * \warning        MD4 is considered a weak message digest and its use\r
133  *                 constitutes a security risk. We recommend considering\r
134  *                 stronger message digests instead.\r
135  *\r
136  */\r
137 int mbedtls_md4_update_ret( mbedtls_md4_context *ctx,\r
138                             const unsigned char *input,\r
139                             size_t ilen );\r
140 \r
141 /**\r
142  * \brief          MD4 final digest\r
143  *\r
144  * \param ctx      MD4 context\r
145  * \param output   MD4 checksum result\r
146  *\r
147  * \return         0 if successful\r
148  *\r
149  * \warning        MD4 is considered a weak message digest and its use\r
150  *                 constitutes a security risk. We recommend considering\r
151  *                 stronger message digests instead.\r
152  *\r
153  */\r
154 int mbedtls_md4_finish_ret( mbedtls_md4_context *ctx,\r
155                             unsigned char output[16] );\r
156 \r
157 /**\r
158  * \brief          MD4 process data block (internal use only)\r
159  *\r
160  * \param ctx      MD4 context\r
161  * \param data     buffer holding one block of data\r
162  *\r
163  * \return         0 if successful\r
164  *\r
165  * \warning        MD4 is considered a weak message digest and its use\r
166  *                 constitutes a security risk. We recommend considering\r
167  *                 stronger message digests instead.\r
168  *\r
169  */\r
170 int mbedtls_internal_md4_process( mbedtls_md4_context *ctx,\r
171                                   const unsigned char data[64] );\r
172 \r
173 #if !defined(MBEDTLS_DEPRECATED_REMOVED)\r
174 #if defined(MBEDTLS_DEPRECATED_WARNING)\r
175 #define MBEDTLS_DEPRECATED      __attribute__((deprecated))\r
176 #else\r
177 #define MBEDTLS_DEPRECATED\r
178 #endif\r
179 /**\r
180  * \brief          MD4 context setup\r
181  *\r
182  * \deprecated     Superseded by mbedtls_md4_starts_ret() in 2.7.0\r
183  *\r
184  * \param ctx      context to be initialized\r
185  *\r
186  * \warning        MD4 is considered a weak message digest and its use\r
187  *                 constitutes a security risk. We recommend considering\r
188  *                 stronger message digests instead.\r
189  *\r
190  */\r
191 MBEDTLS_DEPRECATED void mbedtls_md4_starts( mbedtls_md4_context *ctx );\r
192 \r
193 /**\r
194  * \brief          MD4 process buffer\r
195  *\r
196  * \deprecated     Superseded by mbedtls_md4_update_ret() in 2.7.0\r
197  *\r
198  * \param ctx      MD4 context\r
199  * \param input    buffer holding the data\r
200  * \param ilen     length of the input data\r
201  *\r
202  * \warning        MD4 is considered a weak message digest and its use\r
203  *                 constitutes a security risk. We recommend considering\r
204  *                 stronger message digests instead.\r
205  *\r
206  */\r
207 MBEDTLS_DEPRECATED void mbedtls_md4_update( mbedtls_md4_context *ctx,\r
208                                             const unsigned char *input,\r
209                                             size_t ilen );\r
210 \r
211 /**\r
212  * \brief          MD4 final digest\r
213  *\r
214  * \deprecated     Superseded by mbedtls_md4_finish_ret() in 2.7.0\r
215  *\r
216  * \param ctx      MD4 context\r
217  * \param output   MD4 checksum result\r
218  *\r
219  * \warning        MD4 is considered a weak message digest and its use\r
220  *                 constitutes a security risk. We recommend considering\r
221  *                 stronger message digests instead.\r
222  *\r
223  */\r
224 MBEDTLS_DEPRECATED void mbedtls_md4_finish( mbedtls_md4_context *ctx,\r
225                                             unsigned char output[16] );\r
226 \r
227 /**\r
228  * \brief          MD4 process data block (internal use only)\r
229  *\r
230  * \deprecated     Superseded by mbedtls_internal_md4_process() in 2.7.0\r
231  *\r
232  * \param ctx      MD4 context\r
233  * \param data     buffer holding one block of data\r
234  *\r
235  * \warning        MD4 is considered a weak message digest and its use\r
236  *                 constitutes a security risk. We recommend considering\r
237  *                 stronger message digests instead.\r
238  *\r
239  */\r
240 MBEDTLS_DEPRECATED void mbedtls_md4_process( mbedtls_md4_context *ctx,\r
241                                              const unsigned char data[64] );\r
242 \r
243 #undef MBEDTLS_DEPRECATED\r
244 #endif /* !MBEDTLS_DEPRECATED_REMOVED */\r
245 \r
246 /**\r
247  * \brief          Output = MD4( input buffer )\r
248  *\r
249  * \param input    buffer holding the data\r
250  * \param ilen     length of the input data\r
251  * \param output   MD4 checksum result\r
252  *\r
253  * \return         0 if successful\r
254  *\r
255  * \warning        MD4 is considered a weak message digest and its use\r
256  *                 constitutes a security risk. We recommend considering\r
257  *                 stronger message digests instead.\r
258  *\r
259  */\r
260 int mbedtls_md4_ret( const unsigned char *input,\r
261                      size_t ilen,\r
262                      unsigned char output[16] );\r
263 \r
264 #if !defined(MBEDTLS_DEPRECATED_REMOVED)\r
265 #if defined(MBEDTLS_DEPRECATED_WARNING)\r
266 #define MBEDTLS_DEPRECATED      __attribute__((deprecated))\r
267 #else\r
268 #define MBEDTLS_DEPRECATED\r
269 #endif\r
270 /**\r
271  * \brief          Output = MD4( input buffer )\r
272  *\r
273  * \deprecated     Superseded by mbedtls_md4_ret() in 2.7.0\r
274  *\r
275  * \param input    buffer holding the data\r
276  * \param ilen     length of the input data\r
277  * \param output   MD4 checksum result\r
278  *\r
279  * \warning        MD4 is considered a weak message digest and its use\r
280  *                 constitutes a security risk. We recommend considering\r
281  *                 stronger message digests instead.\r
282  *\r
283  */\r
284 MBEDTLS_DEPRECATED void mbedtls_md4( const unsigned char *input,\r
285                                      size_t ilen,\r
286                                      unsigned char output[16] );\r
287 \r
288 #undef MBEDTLS_DEPRECATED\r
289 #endif /* !MBEDTLS_DEPRECATED_REMOVED */\r
290 \r
291 #if defined(MBEDTLS_SELF_TEST)\r
292 \r
293 /**\r
294  * \brief          Checkup routine\r
295  *\r
296  * \return         0 if successful, or 1 if the test failed\r
297  *\r
298  * \warning        MD4 is considered a weak message digest and its use\r
299  *                 constitutes a security risk. We recommend considering\r
300  *                 stronger message digests instead.\r
301  *\r
302  */\r
303 int mbedtls_md4_self_test( int verbose );\r
304 \r
305 #endif /* MBEDTLS_SELF_TEST */\r
306 \r
307 #ifdef __cplusplus\r
308 }\r
309 #endif\r
310 \r
311 #endif /* mbedtls_md4.h */\r