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