Update mbedTLS sources
[platform/upstream/iotivity.git] / extlibs / mbedtls / mbedtls / include / mbedtls / md2.h
1 /**
2  * \file md2.h
3  *
4  * \brief MD2 message digest algorithm (hash function)
5  *
6  * \warning MD2 is considered a weak message digest and its use constitutes a
7  *          security risk. We recommend considering stronger message digests
8  *          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  */
29 #ifndef MBEDTLS_MD2_H
30 #define MBEDTLS_MD2_H
31
32 #if !defined(MBEDTLS_CONFIG_FILE)
33 #include "config.h"
34 #else
35 #include MBEDTLS_CONFIG_FILE
36 #endif
37
38 #include <stddef.h>
39
40 /* MBEDTLS_ERR_MD2_HW_ACCEL_FAILED is deprecated and should not be used. */
41 #define MBEDTLS_ERR_MD2_HW_ACCEL_FAILED                   -0x002B  /**< MD2 hardware accelerator failed */
42
43 #ifdef __cplusplus
44 extern "C" {
45 #endif
46
47 #if !defined(MBEDTLS_MD2_ALT)
48 // Regular implementation
49 //
50
51 /**
52  * \brief          MD2 context structure
53  *
54  * \warning        MD2 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_md2_context
60 {
61     unsigned char cksum[16];    /*!< checksum of the data block */
62     unsigned char state[48];    /*!< intermediate digest state  */
63     unsigned char buffer[16];   /*!< data block being processed */
64     size_t left;                /*!< amount of data in buffer   */
65 }
66 mbedtls_md2_context;
67
68 #else  /* MBEDTLS_MD2_ALT */
69 #include "md2_alt.h"
70 #endif /* MBEDTLS_MD2_ALT */
71
72 /**
73  * \brief          Initialize MD2 context
74  *
75  * \param ctx      MD2 context to be initialized
76  *
77  * \warning        MD2 is considered a weak message digest and its use
78  *                 constitutes a security risk. We recommend considering
79  *                 stronger message digests instead.
80  *
81  */
82 void mbedtls_md2_init( mbedtls_md2_context *ctx );
83
84 /**
85  * \brief          Clear MD2 context
86  *
87  * \param ctx      MD2 context to be cleared
88  *
89  * \warning        MD2 is considered a weak message digest and its use
90  *                 constitutes a security risk. We recommend considering
91  *                 stronger message digests instead.
92  *
93  */
94 void mbedtls_md2_free( mbedtls_md2_context *ctx );
95
96 /**
97  * \brief          Clone (the state of) an MD2 context
98  *
99  * \param dst      The destination context
100  * \param src      The context to be cloned
101  *
102  * \warning        MD2 is considered a weak message digest and its use
103  *                 constitutes a security risk. We recommend considering
104  *                 stronger message digests instead.
105  *
106  */
107 void mbedtls_md2_clone( mbedtls_md2_context *dst,
108                         const mbedtls_md2_context *src );
109
110 /**
111  * \brief          MD2 context setup
112  *
113  * \param ctx      context to be initialized
114  *
115  * \return         0 if successful
116  *
117  * \warning        MD2 is considered a weak message digest and its use
118  *                 constitutes a security risk. We recommend considering
119  *                 stronger message digests instead.
120  *
121  */
122 int mbedtls_md2_starts_ret( mbedtls_md2_context *ctx );
123
124 /**
125  * \brief          MD2 process buffer
126  *
127  * \param ctx      MD2 context
128  * \param input    buffer holding the data
129  * \param ilen     length of the input data
130  *
131  * \return         0 if successful
132  *
133  * \warning        MD2 is considered a weak message digest and its use
134  *                 constitutes a security risk. We recommend considering
135  *                 stronger message digests instead.
136  *
137  */
138 int mbedtls_md2_update_ret( mbedtls_md2_context *ctx,
139                             const unsigned char *input,
140                             size_t ilen );
141
142 /**
143  * \brief          MD2 final digest
144  *
145  * \param ctx      MD2 context
146  * \param output   MD2 checksum result
147  *
148  * \return         0 if successful
149  *
150  * \warning        MD2 is considered a weak message digest and its use
151  *                 constitutes a security risk. We recommend considering
152  *                 stronger message digests instead.
153  *
154  */
155 int mbedtls_md2_finish_ret( mbedtls_md2_context *ctx,
156                             unsigned char output[16] );
157
158 /**
159  * \brief          MD2 process data block (internal use only)
160  *
161  * \param ctx      MD2 context
162  *
163  * \return         0 if successful
164  *
165  * \warning        MD2 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_md2_process( mbedtls_md2_context *ctx );
171
172 #if !defined(MBEDTLS_DEPRECATED_REMOVED)
173 #if defined(MBEDTLS_DEPRECATED_WARNING)
174 #define MBEDTLS_DEPRECATED      __attribute__((deprecated))
175 #else
176 #define MBEDTLS_DEPRECATED
177 #endif
178 /**
179  * \brief          MD2 context setup
180  *
181  * \deprecated     Superseded by mbedtls_md2_starts_ret() in 2.7.0
182  *
183  * \param ctx      context to be initialized
184  *
185  * \warning        MD2 is considered a weak message digest and its use
186  *                 constitutes a security risk. We recommend considering
187  *                 stronger message digests instead.
188  *
189  */
190 MBEDTLS_DEPRECATED void mbedtls_md2_starts( mbedtls_md2_context *ctx );
191
192 /**
193  * \brief          MD2 process buffer
194  *
195  * \deprecated     Superseded by mbedtls_md2_update_ret() in 2.7.0
196  *
197  * \param ctx      MD2 context
198  * \param input    buffer holding the data
199  * \param ilen     length of the input data
200  *
201  * \warning        MD2 is considered a weak message digest and its use
202  *                 constitutes a security risk. We recommend considering
203  *                 stronger message digests instead.
204  *
205  */
206 MBEDTLS_DEPRECATED void mbedtls_md2_update( mbedtls_md2_context *ctx,
207                                             const unsigned char *input,
208                                             size_t ilen );
209
210 /**
211  * \brief          MD2 final digest
212  *
213  * \deprecated     Superseded by mbedtls_md2_finish_ret() in 2.7.0
214  *
215  * \param ctx      MD2 context
216  * \param output   MD2 checksum result
217  *
218  * \warning        MD2 is considered a weak message digest and its use
219  *                 constitutes a security risk. We recommend considering
220  *                 stronger message digests instead.
221  *
222  */
223 MBEDTLS_DEPRECATED void mbedtls_md2_finish( mbedtls_md2_context *ctx,
224                                             unsigned char output[16] );
225
226 /**
227  * \brief          MD2 process data block (internal use only)
228  *
229  * \deprecated     Superseded by mbedtls_internal_md2_process() in 2.7.0
230  *
231  * \param ctx      MD2 context
232  *
233  * \warning        MD2 is considered a weak message digest and its use
234  *                 constitutes a security risk. We recommend considering
235  *                 stronger message digests instead.
236  *
237  */
238 MBEDTLS_DEPRECATED void mbedtls_md2_process( mbedtls_md2_context *ctx );
239
240 #undef MBEDTLS_DEPRECATED
241 #endif /* !MBEDTLS_DEPRECATED_REMOVED */
242
243 /**
244  * \brief          Output = MD2( input buffer )
245  *
246  * \param input    buffer holding the data
247  * \param ilen     length of the input data
248  * \param output   MD2 checksum result
249  *
250  * \warning        MD2 is considered a weak message digest and its use
251  *                 constitutes a security risk. We recommend considering
252  *                 stronger message digests instead.
253  *
254  */
255 int mbedtls_md2_ret( const unsigned char *input,
256                      size_t ilen,
257                      unsigned char output[16] );
258
259 #if !defined(MBEDTLS_DEPRECATED_REMOVED)
260 #if defined(MBEDTLS_DEPRECATED_WARNING)
261 #define MBEDTLS_DEPRECATED      __attribute__((deprecated))
262 #else
263 #define MBEDTLS_DEPRECATED
264 #endif
265 /**
266  * \brief          Output = MD2( input buffer )
267  *
268  * \deprecated     Superseded by mbedtls_md2_ret() in 2.7.0
269  *
270  * \param input    buffer holding the data
271  * \param ilen     length of the input data
272  * \param output   MD2 checksum result
273  *
274  * \warning        MD2 is considered a weak message digest and its use
275  *                 constitutes a security risk. We recommend considering
276  *                 stronger message digests instead.
277  *
278  */
279 MBEDTLS_DEPRECATED void mbedtls_md2( const unsigned char *input,
280                                      size_t ilen,
281                                      unsigned char output[16] );
282
283 #undef MBEDTLS_DEPRECATED
284 #endif /* !MBEDTLS_DEPRECATED_REMOVED */
285
286 #if defined(MBEDTLS_SELF_TEST)
287
288 /**
289  * \brief          Checkup routine
290  *
291  * \return         0 if successful, or 1 if the test failed
292  *
293  * \warning        MD2 is considered a weak message digest and its use
294  *                 constitutes a security risk. We recommend considering
295  *                 stronger message digests instead.
296  *
297  */
298 int mbedtls_md2_self_test( int verbose );
299
300 #endif /* MBEDTLS_SELF_TEST */
301
302 #ifdef __cplusplus
303 }
304 #endif
305
306 #endif /* mbedtls_md2.h */