blob: d9db4c397a0a60b686e97d0de2d574c4a38aeb5f [file] [log] [blame]
Paul Bakker5121ce52009-01-03 21:22:43 +00001/**
Simon Butcher5b331b92016-01-03 16:14:14 +00002 * \file sha1.h
Paul Bakkere0ccd0a2009-01-04 16:27:10 +00003 *
Rose Zadik82741422018-03-27 12:49:48 +01004 * \brief This file contains SHA-1 definitions and functions.
5 *
Darryl Green11999bb2018-03-13 15:22:58 +00006 * The Secure Hash Algorithm 1 (SHA-1) cryptographic hash function is defined in
Rose Zadik82741422018-03-27 12:49:48 +01007 * <em>FIPS 180-4: Secure Hash Standard (SHS)</em>.
Hanno Beckerbbca8c52017-09-25 14:53:51 +01008 *
9 * \warning SHA-1 is considered a weak message digest and its use constitutes
10 * a security risk. We recommend considering stronger message
11 * digests instead.
Darryl Greena40a1012018-01-05 15:33:17 +000012 */
13/*
Bence Szépkúti1e148272020-08-07 13:07:28 +020014 * Copyright The Mbed TLS Contributors
Manuel Pégourié-Gonnard37ff1402015-09-04 14:21:07 +020015 * SPDX-License-Identifier: Apache-2.0
16 *
17 * Licensed under the Apache License, Version 2.0 (the "License"); you may
18 * not use this file except in compliance with the License.
19 * You may obtain a copy of the License at
20 *
21 * http://www.apache.org/licenses/LICENSE-2.0
22 *
23 * Unless required by applicable law or agreed to in writing, software
24 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
25 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
26 * See the License for the specific language governing permissions and
27 * limitations under the License.
Paul Bakker5121ce52009-01-03 21:22:43 +000028 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020029#ifndef MBEDTLS_SHA1_H
30#define MBEDTLS_SHA1_H
Paul Bakker5121ce52009-01-03 21:22:43 +000031
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020032#if !defined(MBEDTLS_CONFIG_FILE)
Jaeden Ameroc49fbbf2019-07-04 20:01:14 +010033#include "mbedtls/config.h"
Manuel Pégourié-Gonnardcef4ad22014-04-29 12:39:06 +020034#else
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020035#include MBEDTLS_CONFIG_FILE
Manuel Pégourié-Gonnardcef4ad22014-04-29 12:39:06 +020036#endif
Paul Bakker90995b52013-06-24 19:20:35 +020037
Rich Evans00ab4702015-02-06 13:43:58 +000038#include <stddef.h>
Manuel Pégourié-Gonnardab229102015-04-15 11:53:16 +020039#include <stdint.h>
Paul Bakker5c2364c2012-10-01 14:41:15 +000040
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050041#define MBEDTLS_ERR_SHA1_BAD_INPUT_DATA -0x0073 /**< SHA-1 input data was malformed. */
Gilles Peskinea381fe82018-01-23 18:16:11 +010042
Paul Bakker407a0da2013-06-27 14:29:21 +020043#ifdef __cplusplus
44extern "C" {
45#endif
46
Ron Eldorb2aacec2017-05-18 16:53:08 +030047#if !defined(MBEDTLS_SHA1_ALT)
48// Regular implementation
49//
50
Paul Bakker5121ce52009-01-03 21:22:43 +000051/**
Rose Zadik44833d92018-01-26 08:41:09 +000052 * \brief The SHA-1 context structure.
Hanno Beckerbbca8c52017-09-25 14:53:51 +010053 *
54 * \warning SHA-1 is considered a weak message digest and its use
55 * constitutes a security risk. We recommend considering
56 * stronger message digests instead.
57 *
Paul Bakker5121ce52009-01-03 21:22:43 +000058 */
Dawid Drozd428cc522018-07-24 10:02:47 +020059typedef struct mbedtls_sha1_context
Paul Bakker5121ce52009-01-03 21:22:43 +000060{
Rose Zadik44833d92018-01-26 08:41:09 +000061 uint32_t total[2]; /*!< The number of Bytes processed. */
62 uint32_t state[5]; /*!< The intermediate digest state. */
63 unsigned char buffer[64]; /*!< The data block being processed. */
Paul Bakker5121ce52009-01-03 21:22:43 +000064}
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020065mbedtls_sha1_context;
Paul Bakker5121ce52009-01-03 21:22:43 +000066
Ron Eldorb2aacec2017-05-18 16:53:08 +030067#else /* MBEDTLS_SHA1_ALT */
68#include "sha1_alt.h"
69#endif /* MBEDTLS_SHA1_ALT */
70
Paul Bakker5121ce52009-01-03 21:22:43 +000071/**
Rose Zadik44833d92018-01-26 08:41:09 +000072 * \brief This function initializes a SHA-1 context.
Paul Bakker5b4af392014-06-26 12:09:34 +020073 *
Hanno Beckerbbca8c52017-09-25 14:53:51 +010074 * \warning SHA-1 is considered a weak message digest and its use
75 * constitutes a security risk. We recommend considering
76 * stronger message digests instead.
77 *
Rose Zadik82741422018-03-27 12:49:48 +010078 * \param ctx The SHA-1 context to initialize.
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050079 * This must not be \c NULL.
Rose Zadik82741422018-03-27 12:49:48 +010080 *
Paul Bakker5b4af392014-06-26 12:09:34 +020081 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020082void mbedtls_sha1_init( mbedtls_sha1_context *ctx );
Paul Bakker5b4af392014-06-26 12:09:34 +020083
84/**
Rose Zadik44833d92018-01-26 08:41:09 +000085 * \brief This function clears a SHA-1 context.
Paul Bakker5b4af392014-06-26 12:09:34 +020086 *
Hanno Beckerbbca8c52017-09-25 14:53:51 +010087 * \warning SHA-1 is considered a weak message digest and its use
88 * constitutes a security risk. We recommend considering
89 * stronger message digests instead.
90 *
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050091 * \param ctx The SHA-1 context to clear. This may be \c NULL,
92 * in which case this function does nothing. If it is
93 * not \c NULL, it must point to an initialized
94 * SHA-1 context.
Rose Zadik82741422018-03-27 12:49:48 +010095 *
Paul Bakker5b4af392014-06-26 12:09:34 +020096 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020097void mbedtls_sha1_free( mbedtls_sha1_context *ctx );
Paul Bakker5b4af392014-06-26 12:09:34 +020098
99/**
Rose Zadik44833d92018-01-26 08:41:09 +0000100 * \brief This function clones the state of a SHA-1 context.
Manuel Pégourié-Gonnard16d412f2015-07-06 15:26:26 +0200101 *
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100102 * \warning SHA-1 is considered a weak message digest and its use
103 * constitutes a security risk. We recommend considering
104 * stronger message digests instead.
105 *
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500106 * \param dst The SHA-1 context to clone to. This must be initialized.
107 * \param src The SHA-1 context to clone from. This must be initialized.
Rose Zadik82741422018-03-27 12:49:48 +0100108 *
Manuel Pégourié-Gonnard16d412f2015-07-06 15:26:26 +0200109 */
110void mbedtls_sha1_clone( mbedtls_sha1_context *dst,
111 const mbedtls_sha1_context *src );
112
113/**
Rose Zadik44833d92018-01-26 08:41:09 +0000114 * \brief This function starts a SHA-1 checksum calculation.
Paul Bakker5121ce52009-01-03 21:22:43 +0000115 *
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100116 * \warning SHA-1 is considered a weak message digest and its use
117 * constitutes a security risk. We recommend considering
118 * stronger message digests instead.
119 *
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500120 * \param ctx The SHA-1 context to initialize. This must be initialized.
Rose Zadik82741422018-03-27 12:49:48 +0100121 *
122 * \return \c 0 on success.
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500123 * \return A negative error code on failure.
Rose Zadik82741422018-03-27 12:49:48 +0100124 *
Paul Bakker5121ce52009-01-03 21:22:43 +0000125 */
Gilles Peskine9e4f77c2018-01-22 11:48:08 +0100126int mbedtls_sha1_starts_ret( mbedtls_sha1_context *ctx );
Paul Bakker5121ce52009-01-03 21:22:43 +0000127
128/**
Rose Zadik44833d92018-01-26 08:41:09 +0000129 * \brief This function feeds an input buffer into an ongoing SHA-1
130 * checksum calculation.
Paul Bakker5121ce52009-01-03 21:22:43 +0000131 *
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100132 * \warning SHA-1 is considered a weak message digest and its use
133 * constitutes a security risk. We recommend considering
134 * stronger message digests instead.
135 *
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500136 * \param ctx The SHA-1 context. This must be initialized
137 * and have a hash operation started.
Rose Zadik82741422018-03-27 12:49:48 +0100138 * \param input The buffer holding the input data.
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500139 * This must be a readable buffer of length \p ilen Bytes.
140 * \param ilen The length of the input data \p input in Bytes.
Rose Zadik82741422018-03-27 12:49:48 +0100141 *
142 * \return \c 0 on success.
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500143 * \return A negative error code on failure.
Paul Bakker5121ce52009-01-03 21:22:43 +0000144 */
Gilles Peskine9e4f77c2018-01-22 11:48:08 +0100145int mbedtls_sha1_update_ret( mbedtls_sha1_context *ctx,
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100146 const unsigned char *input,
147 size_t ilen );
Paul Bakker5121ce52009-01-03 21:22:43 +0000148
149/**
Rose Zadik44833d92018-01-26 08:41:09 +0000150 * \brief This function finishes the SHA-1 operation, and writes
151 * the result to the output buffer.
Paul Bakker5121ce52009-01-03 21:22:43 +0000152 *
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100153 * \warning SHA-1 is considered a weak message digest and its use
154 * constitutes a security risk. We recommend considering
155 * stronger message digests instead.
156 *
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500157 * \param ctx The SHA-1 context to use. This must be initialized and
158 * have a hash operation started.
159 * \param output The SHA-1 checksum result. This must be a writable
160 * buffer of length \c 20 Bytes.
Rose Zadik82741422018-03-27 12:49:48 +0100161 *
162 * \return \c 0 on success.
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500163 * \return A negative error code on failure.
Paul Bakker5121ce52009-01-03 21:22:43 +0000164 */
Gilles Peskine9e4f77c2018-01-22 11:48:08 +0100165int mbedtls_sha1_finish_ret( mbedtls_sha1_context *ctx,
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100166 unsigned char output[20] );
Paul Bakker5121ce52009-01-03 21:22:43 +0000167
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100168/**
Rose Zadik82741422018-03-27 12:49:48 +0100169 * \brief SHA-1 process data block (internal use only).
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100170 *
171 * \warning SHA-1 is considered a weak message digest and its use
172 * constitutes a security risk. We recommend considering
173 * stronger message digests instead.
174 *
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500175 * \param ctx The SHA-1 context to use. This must be initialized.
176 * \param data The data block being processed. This must be a
177 * readable buffer of length \c 64 Bytes.
Rose Zadik82741422018-03-27 12:49:48 +0100178 *
179 * \return \c 0 on success.
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500180 * \return A negative error code on failure.
Rose Zadik82741422018-03-27 12:49:48 +0100181 *
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100182 */
Andres Amaya Garciacccfe082017-06-28 10:36:39 +0100183int mbedtls_internal_sha1_process( mbedtls_sha1_context *ctx,
184 const unsigned char data[64] );
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100185
186#if !defined(MBEDTLS_DEPRECATED_REMOVED)
187#if defined(MBEDTLS_DEPRECATED_WARNING)
188#define MBEDTLS_DEPRECATED __attribute__((deprecated))
189#else
190#define MBEDTLS_DEPRECATED
191#endif
192/**
Rose Zadik82741422018-03-27 12:49:48 +0100193 * \brief This function starts a SHA-1 checksum calculation.
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100194 *
195 * \warning SHA-1 is considered a weak message digest and its use
196 * constitutes a security risk. We recommend considering
197 * stronger message digests instead.
198 *
Rose Zadik82741422018-03-27 12:49:48 +0100199 * \deprecated Superseded by mbedtls_sha1_starts_ret() in 2.7.0.
200 *
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500201 * \param ctx The SHA-1 context to initialize. This must be initialized.
Rose Zadik82741422018-03-27 12:49:48 +0100202 *
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100203 */
Jaeden Amero041039f2018-02-19 15:28:08 +0000204MBEDTLS_DEPRECATED void mbedtls_sha1_starts( mbedtls_sha1_context *ctx );
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100205
206/**
Rose Zadik82741422018-03-27 12:49:48 +0100207 * \brief This function feeds an input buffer into an ongoing SHA-1
208 * checksum calculation.
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100209 *
210 * \warning SHA-1 is considered a weak message digest and its use
211 * constitutes a security risk. We recommend considering
212 * stronger message digests instead.
213 *
Rose Zadik82741422018-03-27 12:49:48 +0100214 * \deprecated Superseded by mbedtls_sha1_update_ret() in 2.7.0.
215 *
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500216 * \param ctx The SHA-1 context. This must be initialized and
217 * have a hash operation started.
Rose Zadik82741422018-03-27 12:49:48 +0100218 * \param input The buffer holding the input data.
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500219 * This must be a readable buffer of length \p ilen Bytes.
220 * \param ilen The length of the input data \p input in Bytes.
Rose Zadik82741422018-03-27 12:49:48 +0100221 *
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100222 */
Jaeden Amero041039f2018-02-19 15:28:08 +0000223MBEDTLS_DEPRECATED void mbedtls_sha1_update( mbedtls_sha1_context *ctx,
224 const unsigned char *input,
225 size_t ilen );
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100226
227/**
Rose Zadik82741422018-03-27 12:49:48 +0100228 * \brief This function finishes the SHA-1 operation, and writes
229 * the result to the output buffer.
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100230 *
231 * \warning SHA-1 is considered a weak message digest and its use
232 * constitutes a security risk. We recommend considering
233 * stronger message digests instead.
234 *
Rose Zadik82741422018-03-27 12:49:48 +0100235 * \deprecated Superseded by mbedtls_sha1_finish_ret() in 2.7.0.
236 *
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500237 * \param ctx The SHA-1 context. This must be initialized and
238 * have a hash operation started.
Rose Zadik82741422018-03-27 12:49:48 +0100239 * \param output The SHA-1 checksum result.
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500240 * This must be a writable buffer of length \c 20 Bytes.
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100241 */
Jaeden Amero041039f2018-02-19 15:28:08 +0000242MBEDTLS_DEPRECATED void mbedtls_sha1_finish( mbedtls_sha1_context *ctx,
243 unsigned char output[20] );
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100244
245/**
Rose Zadik82741422018-03-27 12:49:48 +0100246 * \brief SHA-1 process data block (internal use only).
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100247 *
248 * \warning SHA-1 is considered a weak message digest and its use
249 * constitutes a security risk. We recommend considering
250 * stronger message digests instead.
251 *
Rose Zadik82741422018-03-27 12:49:48 +0100252 * \deprecated Superseded by mbedtls_internal_sha1_process() in 2.7.0.
253 *
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500254 * \param ctx The SHA-1 context. This must be initialized.
Rose Zadik82741422018-03-27 12:49:48 +0100255 * \param data The data block being processed.
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500256 * This must be a readable buffer of length \c 64 bytes.
Rose Zadik82741422018-03-27 12:49:48 +0100257 *
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100258 */
Jaeden Amero041039f2018-02-19 15:28:08 +0000259MBEDTLS_DEPRECATED void mbedtls_sha1_process( mbedtls_sha1_context *ctx,
260 const unsigned char data[64] );
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100261
262#undef MBEDTLS_DEPRECATED
263#endif /* !MBEDTLS_DEPRECATED_REMOVED */
Paul Bakker90995b52013-06-24 19:20:35 +0200264
Paul Bakker5121ce52009-01-03 21:22:43 +0000265/**
Rose Zadik44833d92018-01-26 08:41:09 +0000266 * \brief This function calculates the SHA-1 checksum of a buffer.
Paul Bakker5121ce52009-01-03 21:22:43 +0000267 *
Rose Zadik44833d92018-01-26 08:41:09 +0000268 * The function allocates the context, performs the
269 * calculation, and frees the context.
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100270 *
Rose Zadik44833d92018-01-26 08:41:09 +0000271 * The SHA-1 result is calculated as
272 * output = SHA-1(input buffer).
273 *
Rose Zadik82741422018-03-27 12:49:48 +0100274 * \warning SHA-1 is considered a weak message digest and its use
275 * constitutes a security risk. We recommend considering
276 * stronger message digests instead.
277 *
Rose Zadik44833d92018-01-26 08:41:09 +0000278 * \param input The buffer holding the input data.
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500279 * This must be a readable buffer of length \p ilen Bytes.
280 * \param ilen The length of the input data \p input in Bytes.
Rose Zadik44833d92018-01-26 08:41:09 +0000281 * \param output The SHA-1 checksum result.
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500282 * This must be a writable buffer of length \c 20 Bytes.
Rose Zadik44833d92018-01-26 08:41:09 +0000283 *
Rose Zadik82741422018-03-27 12:49:48 +0100284 * \return \c 0 on success.
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500285 * \return A negative error code on failure.
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100286 *
Paul Bakker5121ce52009-01-03 21:22:43 +0000287 */
Gilles Peskine9e4f77c2018-01-22 11:48:08 +0100288int mbedtls_sha1_ret( const unsigned char *input,
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100289 size_t ilen,
290 unsigned char output[20] );
291
292#if !defined(MBEDTLS_DEPRECATED_REMOVED)
293#if defined(MBEDTLS_DEPRECATED_WARNING)
294#define MBEDTLS_DEPRECATED __attribute__((deprecated))
295#else
296#define MBEDTLS_DEPRECATED
297#endif
298/**
Gilles Peskine2e1934a2018-04-18 16:05:29 +0200299 * \brief This function calculates the SHA-1 checksum of a buffer.
Rose Zadik82741422018-03-27 12:49:48 +0100300 *
301 * The function allocates the context, performs the
302 * calculation, and frees the context.
303 *
304 * The SHA-1 result is calculated as
305 * output = SHA-1(input buffer).
306 *
307 * \warning SHA-1 is considered a weak message digest and its use
308 * constitutes a security risk. We recommend considering
309 * stronger message digests instead.
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100310 *
Gilles Peskine3e28d702018-01-22 12:18:59 +0100311 * \deprecated Superseded by mbedtls_sha1_ret() in 2.7.0
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100312 *
Rose Zadik44833d92018-01-26 08:41:09 +0000313 * \param input The buffer holding the input data.
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500314 * This must be a readable buffer of length \p ilen Bytes.
315 * \param ilen The length of the input data \p input in Bytes.
316 * \param output The SHA-1 checksum result. This must be a writable
317 * buffer of size \c 20 Bytes.
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100318 *
Paul Bakker5121ce52009-01-03 21:22:43 +0000319 */
Jaeden Amero041039f2018-02-19 15:28:08 +0000320MBEDTLS_DEPRECATED void mbedtls_sha1( const unsigned char *input,
321 size_t ilen,
322 unsigned char output[20] );
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100323
324#undef MBEDTLS_DEPRECATED
325#endif /* !MBEDTLS_DEPRECATED_REMOVED */
Paul Bakker5121ce52009-01-03 21:22:43 +0000326
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500327#if defined(MBEDTLS_SELF_TEST)
328
Paul Bakker5121ce52009-01-03 21:22:43 +0000329/**
Rose Zadik44833d92018-01-26 08:41:09 +0000330 * \brief The SHA-1 checkup routine.
Paul Bakker5121ce52009-01-03 21:22:43 +0000331 *
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100332 * \warning SHA-1 is considered a weak message digest and its use
333 * constitutes a security risk. We recommend considering
334 * stronger message digests instead.
335 *
Rose Zadik82741422018-03-27 12:49:48 +0100336 * \return \c 0 on success.
337 * \return \c 1 on failure.
338 *
Paul Bakker5121ce52009-01-03 21:22:43 +0000339 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200340int mbedtls_sha1_self_test( int verbose );
Paul Bakker5121ce52009-01-03 21:22:43 +0000341
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500342#endif /* MBEDTLS_SELF_TEST */
343
Paul Bakker5121ce52009-01-03 21:22:43 +0000344#ifdef __cplusplus
345}
346#endif
347
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200348#endif /* mbedtls_sha1.h */