4 * \brief MD2 message digest algorithm (hash function)
6 * \warning MD2 is considered a weak message digest and its use constitutes a
7 * security risk. We recommend considering stronger message digests
11 * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved
12 * SPDX-License-Identifier: Apache-2.0
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
18 * http://www.apache.org/licenses/LICENSE-2.0
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.
26 * This file is part of mbed TLS (https://tls.mbed.org)
32 #if !defined(MBEDTLS_CONFIG_FILE)
35 #include MBEDTLS_CONFIG_FILE
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 */
47 #if !defined(MBEDTLS_MD2_ALT)
48 // Regular implementation
52 * \brief MD2 context structure
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.
59 typedef struct mbedtls_md2_context
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 */
68 #else /* MBEDTLS_MD2_ALT */
70 #endif /* MBEDTLS_MD2_ALT */
73 * \brief Initialize MD2 context
75 * \param ctx MD2 context to be initialized
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.
82 void mbedtls_md2_init( mbedtls_md2_context *ctx );
85 * \brief Clear MD2 context
87 * \param ctx MD2 context to be cleared
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.
94 void mbedtls_md2_free( mbedtls_md2_context *ctx );
97 * \brief Clone (the state of) an MD2 context
99 * \param dst The destination context
100 * \param src The context to be cloned
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.
107 void mbedtls_md2_clone( mbedtls_md2_context *dst,
108 const mbedtls_md2_context *src );
111 * \brief MD2 context setup
113 * \param ctx context to be initialized
115 * \return 0 if successful
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.
122 int mbedtls_md2_starts_ret( mbedtls_md2_context *ctx );
125 * \brief MD2 process buffer
127 * \param ctx MD2 context
128 * \param input buffer holding the data
129 * \param ilen length of the input data
131 * \return 0 if successful
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.
138 int mbedtls_md2_update_ret( mbedtls_md2_context *ctx,
139 const unsigned char *input,
143 * \brief MD2 final digest
145 * \param ctx MD2 context
146 * \param output MD2 checksum result
148 * \return 0 if successful
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.
155 int mbedtls_md2_finish_ret( mbedtls_md2_context *ctx,
156 unsigned char output[16] );
159 * \brief MD2 process data block (internal use only)
161 * \param ctx MD2 context
163 * \return 0 if successful
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.
170 int mbedtls_internal_md2_process( mbedtls_md2_context *ctx );
172 #if !defined(MBEDTLS_DEPRECATED_REMOVED)
173 #if defined(MBEDTLS_DEPRECATED_WARNING)
174 #define MBEDTLS_DEPRECATED __attribute__((deprecated))
176 #define MBEDTLS_DEPRECATED
179 * \brief MD2 context setup
181 * \deprecated Superseded by mbedtls_md2_starts_ret() in 2.7.0
183 * \param ctx context to be initialized
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.
190 MBEDTLS_DEPRECATED void mbedtls_md2_starts( mbedtls_md2_context *ctx );
193 * \brief MD2 process buffer
195 * \deprecated Superseded by mbedtls_md2_update_ret() in 2.7.0
197 * \param ctx MD2 context
198 * \param input buffer holding the data
199 * \param ilen length of the input data
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.
206 MBEDTLS_DEPRECATED void mbedtls_md2_update( mbedtls_md2_context *ctx,
207 const unsigned char *input,
211 * \brief MD2 final digest
213 * \deprecated Superseded by mbedtls_md2_finish_ret() in 2.7.0
215 * \param ctx MD2 context
216 * \param output MD2 checksum result
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.
223 MBEDTLS_DEPRECATED void mbedtls_md2_finish( mbedtls_md2_context *ctx,
224 unsigned char output[16] );
227 * \brief MD2 process data block (internal use only)
229 * \deprecated Superseded by mbedtls_internal_md2_process() in 2.7.0
231 * \param ctx MD2 context
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.
238 MBEDTLS_DEPRECATED void mbedtls_md2_process( mbedtls_md2_context *ctx );
240 #undef MBEDTLS_DEPRECATED
241 #endif /* !MBEDTLS_DEPRECATED_REMOVED */
244 * \brief Output = MD2( input buffer )
246 * \param input buffer holding the data
247 * \param ilen length of the input data
248 * \param output MD2 checksum result
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.
255 int mbedtls_md2_ret( const unsigned char *input,
257 unsigned char output[16] );
259 #if !defined(MBEDTLS_DEPRECATED_REMOVED)
260 #if defined(MBEDTLS_DEPRECATED_WARNING)
261 #define MBEDTLS_DEPRECATED __attribute__((deprecated))
263 #define MBEDTLS_DEPRECATED
266 * \brief Output = MD2( input buffer )
268 * \deprecated Superseded by mbedtls_md2_ret() in 2.7.0
270 * \param input buffer holding the data
271 * \param ilen length of the input data
272 * \param output MD2 checksum result
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.
279 MBEDTLS_DEPRECATED void mbedtls_md2( const unsigned char *input,
281 unsigned char output[16] );
283 #undef MBEDTLS_DEPRECATED
284 #endif /* !MBEDTLS_DEPRECATED_REMOVED */
286 #if defined(MBEDTLS_SELF_TEST)
289 * \brief Checkup routine
291 * \return 0 if successful, or 1 if the test failed
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.
298 int mbedtls_md2_self_test( int verbose );
300 #endif /* MBEDTLS_SELF_TEST */
306 #endif /* mbedtls_md2.h */