blob: 2d47f53099864bd5585fa9ef8c6a9245f46440b0 [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/*
Rose Zadik44833d92018-01-26 08:41:09 +000014 * Copyright (C) 2006-2018, Arm Limited (or its affiliates), All Rights Reserved
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 Bakkerb96f1542010-07-18 20:36:00 +000028 *
Rose Zadik44833d92018-01-26 08:41:09 +000029 * This file is part of Mbed TLS (https://tls.mbed.org)
Paul Bakker5121ce52009-01-03 21:22:43 +000030 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020031#ifndef MBEDTLS_SHA1_H
32#define MBEDTLS_SHA1_H
Paul Bakker5121ce52009-01-03 21:22:43 +000033
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020034#if !defined(MBEDTLS_CONFIG_FILE)
Paul Bakker90995b52013-06-24 19:20:35 +020035#include "config.h"
Manuel Pégourié-Gonnardcef4ad22014-04-29 12:39:06 +020036#else
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020037#include MBEDTLS_CONFIG_FILE
Manuel Pégourié-Gonnardcef4ad22014-04-29 12:39:06 +020038#endif
Paul Bakker90995b52013-06-24 19:20:35 +020039
Rich Evans00ab4702015-02-06 13:43:58 +000040#include <stddef.h>
Manuel Pégourié-Gonnardab229102015-04-15 11:53:16 +020041#include <stdint.h>
Paul Bakker5c2364c2012-10-01 14:41:15 +000042
Ron Eldor9924bdc2018-10-04 10:59:13 +030043/* MBEDTLS_ERR_SHA1_HW_ACCEL_FAILED is deprecated and should not be used. */
Gilles Peskinea381fe82018-01-23 18:16:11 +010044#define MBEDTLS_ERR_SHA1_HW_ACCEL_FAILED -0x0035 /**< SHA-1 hardware accelerator failed */
Andres Amaya Garciac523e012018-12-10 10:11:47 +000045#define MBEDTLS_ERR_SHA1_BAD_INPUT_DATA -0x0073 /**< SHA-1 input data was malformed. */
Gilles Peskinea381fe82018-01-23 18:16:11 +010046
Paul Bakker407a0da2013-06-27 14:29:21 +020047#ifdef __cplusplus
48extern "C" {
49#endif
50
Ron Eldorb2aacec2017-05-18 16:53:08 +030051#if !defined(MBEDTLS_SHA1_ALT)
52// Regular implementation
53//
54
Paul Bakker5121ce52009-01-03 21:22:43 +000055/**
Rose Zadik44833d92018-01-26 08:41:09 +000056 * \brief The SHA-1 context structure.
Hanno Beckerbbca8c52017-09-25 14:53:51 +010057 *
58 * \warning SHA-1 is considered a weak message digest and its use
59 * constitutes a security risk. We recommend considering
60 * stronger message digests instead.
61 *
Paul Bakker5121ce52009-01-03 21:22:43 +000062 */
Dawid Drozd428cc522018-07-24 10:02:47 +020063typedef struct mbedtls_sha1_context
Paul Bakker5121ce52009-01-03 21:22:43 +000064{
Rose Zadik44833d92018-01-26 08:41:09 +000065 uint32_t total[2]; /*!< The number of Bytes processed. */
66 uint32_t state[5]; /*!< The intermediate digest state. */
67 unsigned char buffer[64]; /*!< The data block being processed. */
Paul Bakker5121ce52009-01-03 21:22:43 +000068}
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020069mbedtls_sha1_context;
Paul Bakker5121ce52009-01-03 21:22:43 +000070
Ron Eldorb2aacec2017-05-18 16:53:08 +030071#else /* MBEDTLS_SHA1_ALT */
72#include "sha1_alt.h"
73#endif /* MBEDTLS_SHA1_ALT */
74
Paul Bakker5121ce52009-01-03 21:22:43 +000075/**
Rose Zadik44833d92018-01-26 08:41:09 +000076 * \brief This function initializes a SHA-1 context.
Paul Bakker5b4af392014-06-26 12:09:34 +020077 *
Hanno Beckerbbca8c52017-09-25 14:53:51 +010078 * \warning SHA-1 is considered a weak message digest and its use
79 * constitutes a security risk. We recommend considering
80 * stronger message digests instead.
81 *
Rose Zadik82741422018-03-27 12:49:48 +010082 * \param ctx The SHA-1 context to initialize.
Andres Amaya Garciac523e012018-12-10 10:11:47 +000083 * Must not be \c NULL.
Rose Zadik82741422018-03-27 12:49:48 +010084 *
Paul Bakker5b4af392014-06-26 12:09:34 +020085 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020086void mbedtls_sha1_init( mbedtls_sha1_context *ctx );
Paul Bakker5b4af392014-06-26 12:09:34 +020087
88/**
Rose Zadik44833d92018-01-26 08:41:09 +000089 * \brief This function clears a SHA-1 context.
Paul Bakker5b4af392014-06-26 12:09:34 +020090 *
Hanno Beckerbbca8c52017-09-25 14:53:51 +010091 * \warning SHA-1 is considered a weak message digest and its use
92 * constitutes a security risk. We recommend considering
93 * stronger message digests instead.
94 *
Rose Zadik82741422018-03-27 12:49:48 +010095 * \param ctx The SHA-1 context to clear.
96 *
Paul Bakker5b4af392014-06-26 12:09:34 +020097 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020098void mbedtls_sha1_free( mbedtls_sha1_context *ctx );
Paul Bakker5b4af392014-06-26 12:09:34 +020099
100/**
Rose Zadik44833d92018-01-26 08:41:09 +0000101 * \brief This function clones the state of a SHA-1 context.
Manuel Pégourié-Gonnard16d412f2015-07-06 15:26:26 +0200102 *
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100103 * \warning SHA-1 is considered a weak message digest and its use
104 * constitutes a security risk. We recommend considering
105 * stronger message digests instead.
106 *
Rose Zadik92d66b82018-04-17 10:36:56 +0100107 * \param dst The SHA-1 context to clone to.
Andres Amaya Garciac523e012018-12-10 10:11:47 +0000108 * Must not be \c NULL.
Rose Zadik92d66b82018-04-17 10:36:56 +0100109 * \param src The SHA-1 context to clone from.
Andres Amaya Garciac523e012018-12-10 10:11:47 +0000110 * Must not be \c NULL.
Rose Zadik82741422018-03-27 12:49:48 +0100111 *
Manuel Pégourié-Gonnard16d412f2015-07-06 15:26:26 +0200112 */
113void mbedtls_sha1_clone( mbedtls_sha1_context *dst,
114 const mbedtls_sha1_context *src );
115
116/**
Rose Zadik44833d92018-01-26 08:41:09 +0000117 * \brief This function starts a SHA-1 checksum calculation.
Paul Bakker5121ce52009-01-03 21:22:43 +0000118 *
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100119 * \warning SHA-1 is considered a weak message digest and its use
120 * constitutes a security risk. We recommend considering
121 * stronger message digests instead.
122 *
Rose Zadik92d66b82018-04-17 10:36:56 +0100123 * \param ctx The SHA-1 context to initialize.
Andres Amaya Garciac523e012018-12-10 10:11:47 +0000124 * Must not be \c NULL.
Rose Zadik82741422018-03-27 12:49:48 +0100125 *
126 * \return \c 0 on success.
127 *
Paul Bakker5121ce52009-01-03 21:22:43 +0000128 */
Gilles Peskine9e4f77c2018-01-22 11:48:08 +0100129int mbedtls_sha1_starts_ret( mbedtls_sha1_context *ctx );
Paul Bakker5121ce52009-01-03 21:22:43 +0000130
131/**
Rose Zadik44833d92018-01-26 08:41:09 +0000132 * \brief This function feeds an input buffer into an ongoing SHA-1
133 * checksum calculation.
Paul Bakker5121ce52009-01-03 21:22:43 +0000134 *
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100135 * \warning SHA-1 is considered a weak message digest and its use
136 * constitutes a security risk. We recommend considering
137 * stronger message digests instead.
138 *
Rose Zadik82741422018-03-27 12:49:48 +0100139 * \param ctx The SHA-1 context.
Andres Amaya Garciac523e012018-12-10 10:11:47 +0000140 * Must not be \c NULL.
Rose Zadik82741422018-03-27 12:49:48 +0100141 * \param input The buffer holding the input data.
Andres Amaya Garciac523e012018-12-10 10:11:47 +0000142 * Must not be \c NULL if \p ilen is greater than 0.
Rose Zadik82741422018-03-27 12:49:48 +0100143 * \param ilen The length of the input data.
144 *
145 * \return \c 0 on success.
Paul Bakker5121ce52009-01-03 21:22:43 +0000146 */
Gilles Peskine9e4f77c2018-01-22 11:48:08 +0100147int mbedtls_sha1_update_ret( mbedtls_sha1_context *ctx,
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100148 const unsigned char *input,
149 size_t ilen );
Paul Bakker5121ce52009-01-03 21:22:43 +0000150
151/**
Rose Zadik44833d92018-01-26 08:41:09 +0000152 * \brief This function finishes the SHA-1 operation, and writes
153 * the result to the output buffer.
Paul Bakker5121ce52009-01-03 21:22:43 +0000154 *
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100155 * \warning SHA-1 is considered a weak message digest and its use
156 * constitutes a security risk. We recommend considering
157 * stronger message digests instead.
158 *
Rose Zadik82741422018-03-27 12:49:48 +0100159 * \param ctx The SHA-1 context.
Andres Amaya Garciac523e012018-12-10 10:11:47 +0000160 * Must not be \c NULL.
Rose Zadik82741422018-03-27 12:49:48 +0100161 * \param output The SHA-1 checksum result.
Andres Amaya Garciac523e012018-12-10 10:11:47 +0000162 * Must not be \c NULL.
Rose Zadik82741422018-03-27 12:49:48 +0100163 *
164 * \return \c 0 on success.
Paul Bakker5121ce52009-01-03 21:22:43 +0000165 */
Gilles Peskine9e4f77c2018-01-22 11:48:08 +0100166int mbedtls_sha1_finish_ret( mbedtls_sha1_context *ctx,
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100167 unsigned char output[20] );
Paul Bakker5121ce52009-01-03 21:22:43 +0000168
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100169/**
Rose Zadik82741422018-03-27 12:49:48 +0100170 * \brief SHA-1 process data block (internal use only).
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100171 *
172 * \warning SHA-1 is considered a weak message digest and its use
173 * constitutes a security risk. We recommend considering
174 * stronger message digests instead.
175 *
Rose Zadik82741422018-03-27 12:49:48 +0100176 * \param ctx The SHA-1 context.
Andres Amaya Garciac523e012018-12-10 10:11:47 +0000177 * Must not be \c NULL.
Rose Zadik82741422018-03-27 12:49:48 +0100178 * \param data The data block being processed.
Andres Amaya Garciac523e012018-12-10 10:11:47 +0000179 * Must not be \c NULL.
Rose Zadik82741422018-03-27 12:49:48 +0100180 *
181 * \return \c 0 on success.
182 *
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100183 */
Andres Amaya Garciacccfe082017-06-28 10:36:39 +0100184int mbedtls_internal_sha1_process( mbedtls_sha1_context *ctx,
185 const unsigned char data[64] );
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100186
187#if !defined(MBEDTLS_DEPRECATED_REMOVED)
188#if defined(MBEDTLS_DEPRECATED_WARNING)
189#define MBEDTLS_DEPRECATED __attribute__((deprecated))
190#else
191#define MBEDTLS_DEPRECATED
192#endif
193/**
Rose Zadik82741422018-03-27 12:49:48 +0100194 * \brief This function starts a SHA-1 checksum calculation.
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100195 *
196 * \warning SHA-1 is considered a weak message digest and its use
197 * constitutes a security risk. We recommend considering
198 * stronger message digests instead.
199 *
Rose Zadik82741422018-03-27 12:49:48 +0100200 * \deprecated Superseded by mbedtls_sha1_starts_ret() in 2.7.0.
201 *
Rose Zadik92d66b82018-04-17 10:36:56 +0100202 * \param ctx The SHA-1 context to initialize.
Andres Amaya Garciac523e012018-12-10 10:11:47 +0000203 * Must not be \c NULL.
Rose Zadik82741422018-03-27 12:49:48 +0100204 *
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100205 */
Jaeden Amero041039f2018-02-19 15:28:08 +0000206MBEDTLS_DEPRECATED void mbedtls_sha1_starts( mbedtls_sha1_context *ctx );
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100207
208/**
Rose Zadik82741422018-03-27 12:49:48 +0100209 * \brief This function feeds an input buffer into an ongoing SHA-1
210 * checksum calculation.
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100211 *
212 * \warning SHA-1 is considered a weak message digest and its use
213 * constitutes a security risk. We recommend considering
214 * stronger message digests instead.
215 *
Rose Zadik82741422018-03-27 12:49:48 +0100216 * \deprecated Superseded by mbedtls_sha1_update_ret() in 2.7.0.
217 *
218 * \param ctx The SHA-1 context.
Andres Amaya Garciac523e012018-12-10 10:11:47 +0000219 * Must not be \c NULL.
Rose Zadik82741422018-03-27 12:49:48 +0100220 * \param input The buffer holding the input data.
Andres Amaya Garciac523e012018-12-10 10:11:47 +0000221 * Must not be \c NULL if \p ilen is greater than 0.
Rose Zadik82741422018-03-27 12:49:48 +0100222 * \param ilen The length of the input data.
223 *
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100224 */
Jaeden Amero041039f2018-02-19 15:28:08 +0000225MBEDTLS_DEPRECATED void mbedtls_sha1_update( mbedtls_sha1_context *ctx,
226 const unsigned char *input,
227 size_t ilen );
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100228
229/**
Rose Zadik82741422018-03-27 12:49:48 +0100230 * \brief This function finishes the SHA-1 operation, and writes
231 * the result to the output buffer.
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100232 *
233 * \warning SHA-1 is considered a weak message digest and its use
234 * constitutes a security risk. We recommend considering
235 * stronger message digests instead.
236 *
Rose Zadik82741422018-03-27 12:49:48 +0100237 * \deprecated Superseded by mbedtls_sha1_finish_ret() in 2.7.0.
238 *
239 * \param ctx The SHA-1 context.
Andres Amaya Garciac523e012018-12-10 10:11:47 +0000240 * Must not be \c NULL.
Rose Zadik82741422018-03-27 12:49:48 +0100241 * \param output The SHA-1 checksum result.
Andres Amaya Garciac523e012018-12-10 10:11:47 +0000242 * Must not be \c NULL.
Rose Zadik82741422018-03-27 12:49:48 +0100243 *
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100244 */
Jaeden Amero041039f2018-02-19 15:28:08 +0000245MBEDTLS_DEPRECATED void mbedtls_sha1_finish( mbedtls_sha1_context *ctx,
246 unsigned char output[20] );
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100247
248/**
Rose Zadik82741422018-03-27 12:49:48 +0100249 * \brief SHA-1 process data block (internal use only).
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100250 *
251 * \warning SHA-1 is considered a weak message digest and its use
252 * constitutes a security risk. We recommend considering
253 * stronger message digests instead.
254 *
Rose Zadik82741422018-03-27 12:49:48 +0100255 * \deprecated Superseded by mbedtls_internal_sha1_process() in 2.7.0.
256 *
257 * \param ctx The SHA-1 context.
Andres Amaya Garciac523e012018-12-10 10:11:47 +0000258 * Must not be \c NULL.
Rose Zadik82741422018-03-27 12:49:48 +0100259 * \param data The data block being processed.
Andres Amaya Garciac523e012018-12-10 10:11:47 +0000260 * Must not be \c NULL.
Rose Zadik82741422018-03-27 12:49:48 +0100261 *
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100262 */
Jaeden Amero041039f2018-02-19 15:28:08 +0000263MBEDTLS_DEPRECATED void mbedtls_sha1_process( mbedtls_sha1_context *ctx,
264 const unsigned char data[64] );
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100265
266#undef MBEDTLS_DEPRECATED
267#endif /* !MBEDTLS_DEPRECATED_REMOVED */
Paul Bakker90995b52013-06-24 19:20:35 +0200268
Paul Bakker5121ce52009-01-03 21:22:43 +0000269/**
Rose Zadik44833d92018-01-26 08:41:09 +0000270 * \brief This function calculates the SHA-1 checksum of a buffer.
Paul Bakker5121ce52009-01-03 21:22:43 +0000271 *
Rose Zadik44833d92018-01-26 08:41:09 +0000272 * The function allocates the context, performs the
273 * calculation, and frees the context.
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100274 *
Rose Zadik44833d92018-01-26 08:41:09 +0000275 * The SHA-1 result is calculated as
276 * output = SHA-1(input buffer).
277 *
Rose Zadik82741422018-03-27 12:49:48 +0100278 * \warning SHA-1 is considered a weak message digest and its use
279 * constitutes a security risk. We recommend considering
280 * stronger message digests instead.
281 *
Rose Zadik44833d92018-01-26 08:41:09 +0000282 * \param input The buffer holding the input data.
Andres Amaya Garciac523e012018-12-10 10:11:47 +0000283 * Must not be \c NULL if \p ilen is greater than 0.
Rose Zadik44833d92018-01-26 08:41:09 +0000284 * \param ilen The length of the input data.
285 * \param output The SHA-1 checksum result.
Andres Amaya Garciac523e012018-12-10 10:11:47 +0000286 * Must not be \c NULL.
Rose Zadik44833d92018-01-26 08:41:09 +0000287 *
Rose Zadik82741422018-03-27 12:49:48 +0100288 * \return \c 0 on success.
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100289 *
Paul Bakker5121ce52009-01-03 21:22:43 +0000290 */
Gilles Peskine9e4f77c2018-01-22 11:48:08 +0100291int mbedtls_sha1_ret( const unsigned char *input,
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100292 size_t ilen,
293 unsigned char output[20] );
294
295#if !defined(MBEDTLS_DEPRECATED_REMOVED)
296#if defined(MBEDTLS_DEPRECATED_WARNING)
297#define MBEDTLS_DEPRECATED __attribute__((deprecated))
298#else
299#define MBEDTLS_DEPRECATED
300#endif
301/**
Gilles Peskine2e1934a2018-04-18 16:05:29 +0200302 * \brief This function calculates the SHA-1 checksum of a buffer.
Rose Zadik82741422018-03-27 12:49:48 +0100303 *
304 * The function allocates the context, performs the
305 * calculation, and frees the context.
306 *
307 * The SHA-1 result is calculated as
308 * output = SHA-1(input buffer).
309 *
310 * \warning SHA-1 is considered a weak message digest and its use
311 * constitutes a security risk. We recommend considering
312 * stronger message digests instead.
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100313 *
Gilles Peskine3e28d702018-01-22 12:18:59 +0100314 * \deprecated Superseded by mbedtls_sha1_ret() in 2.7.0
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100315 *
Rose Zadik44833d92018-01-26 08:41:09 +0000316 * \param input The buffer holding the input data.
Andres Amaya Garciac523e012018-12-10 10:11:47 +0000317 * Must not be \c NULL if \p ilen is greater than 0.
Rose Zadik44833d92018-01-26 08:41:09 +0000318 * \param ilen The length of the input data.
319 * \param output The SHA-1 checksum result.
Andres Amaya Garciac523e012018-12-10 10:11:47 +0000320 * Must not be \c NULL.
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100321 *
Paul Bakker5121ce52009-01-03 21:22:43 +0000322 */
Jaeden Amero041039f2018-02-19 15:28:08 +0000323MBEDTLS_DEPRECATED void mbedtls_sha1( const unsigned char *input,
324 size_t ilen,
325 unsigned char output[20] );
Andres Amaya Garcia034ea7e2017-04-28 15:14:50 +0100326
327#undef MBEDTLS_DEPRECATED
328#endif /* !MBEDTLS_DEPRECATED_REMOVED */
Paul Bakker5121ce52009-01-03 21:22:43 +0000329
330/**
Rose Zadik44833d92018-01-26 08:41:09 +0000331 * \brief The SHA-1 checkup routine.
Paul Bakker5121ce52009-01-03 21:22:43 +0000332 *
Hanno Beckerbbca8c52017-09-25 14:53:51 +0100333 * \warning SHA-1 is considered a weak message digest and its use
334 * constitutes a security risk. We recommend considering
335 * stronger message digests instead.
336 *
Rose Zadik82741422018-03-27 12:49:48 +0100337 * \return \c 0 on success.
338 * \return \c 1 on failure.
339 *
Paul Bakker5121ce52009-01-03 21:22:43 +0000340 */
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200341int mbedtls_sha1_self_test( int verbose );
Paul Bakker5121ce52009-01-03 21:22:43 +0000342
Paul Bakker5121ce52009-01-03 21:22:43 +0000343#ifdef __cplusplus
344}
345#endif
346
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200347#endif /* mbedtls_sha1.h */