4 * \brief RIPE MD-160 message digest
\r
7 * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved
\r
8 * SPDX-License-Identifier: Apache-2.0
\r
10 * Licensed under the Apache License, Version 2.0 (the "License"); you may
\r
11 * not use this file except in compliance with the License.
\r
12 * You may obtain a copy of the License at
\r
14 * http://www.apache.org/licenses/LICENSE-2.0
\r
16 * Unless required by applicable law or agreed to in writing, software
\r
17 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
\r
18 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
19 * See the License for the specific language governing permissions and
\r
20 * limitations under the License.
\r
22 * This file is part of mbed TLS (https://tls.mbed.org)
\r
24 #ifndef MBEDTLS_RIPEMD160_H
\r
25 #define MBEDTLS_RIPEMD160_H
\r
27 #if !defined(MBEDTLS_CONFIG_FILE)
\r
30 #include MBEDTLS_CONFIG_FILE
\r
36 /* MBEDTLS_ERR_RIPEMD160_HW_ACCEL_FAILED is deprecated and should not be used.
\r
38 #define MBEDTLS_ERR_RIPEMD160_HW_ACCEL_FAILED -0x0031 /**< RIPEMD160 hardware accelerator failed */
\r
44 #if !defined(MBEDTLS_RIPEMD160_ALT)
\r
45 // Regular implementation
\r
49 * \brief RIPEMD-160 context structure
\r
51 typedef struct mbedtls_ripemd160_context
\r
53 uint32_t total[2]; /*!< number of bytes processed */
\r
54 uint32_t state[5]; /*!< intermediate digest state */
\r
55 unsigned char buffer[64]; /*!< data block being processed */
\r
57 mbedtls_ripemd160_context;
\r
59 #else /* MBEDTLS_RIPEMD160_ALT */
\r
60 #include "ripemd160.h"
\r
61 #endif /* MBEDTLS_RIPEMD160_ALT */
\r
64 * \brief Initialize RIPEMD-160 context
\r
66 * \param ctx RIPEMD-160 context to be initialized
\r
68 void mbedtls_ripemd160_init( mbedtls_ripemd160_context *ctx );
\r
71 * \brief Clear RIPEMD-160 context
\r
73 * \param ctx RIPEMD-160 context to be cleared
\r
75 void mbedtls_ripemd160_free( mbedtls_ripemd160_context *ctx );
\r
78 * \brief Clone (the state of) an RIPEMD-160 context
\r
80 * \param dst The destination context
\r
81 * \param src The context to be cloned
\r
83 void mbedtls_ripemd160_clone( mbedtls_ripemd160_context *dst,
\r
84 const mbedtls_ripemd160_context *src );
\r
87 * \brief RIPEMD-160 context setup
\r
89 * \param ctx context to be initialized
\r
91 * \return 0 if successful
\r
93 int mbedtls_ripemd160_starts_ret( mbedtls_ripemd160_context *ctx );
\r
96 * \brief RIPEMD-160 process buffer
\r
98 * \param ctx RIPEMD-160 context
\r
99 * \param input buffer holding the data
\r
100 * \param ilen length of the input data
\r
102 * \return 0 if successful
\r
104 int mbedtls_ripemd160_update_ret( mbedtls_ripemd160_context *ctx,
\r
105 const unsigned char *input,
\r
109 * \brief RIPEMD-160 final digest
\r
111 * \param ctx RIPEMD-160 context
\r
112 * \param output RIPEMD-160 checksum result
\r
114 * \return 0 if successful
\r
116 int mbedtls_ripemd160_finish_ret( mbedtls_ripemd160_context *ctx,
\r
117 unsigned char output[20] );
\r
120 * \brief RIPEMD-160 process data block (internal use only)
\r
122 * \param ctx RIPEMD-160 context
\r
123 * \param data buffer holding one block of data
\r
125 * \return 0 if successful
\r
127 int mbedtls_internal_ripemd160_process( mbedtls_ripemd160_context *ctx,
\r
128 const unsigned char data[64] );
\r
130 #if !defined(MBEDTLS_DEPRECATED_REMOVED)
\r
131 #if defined(MBEDTLS_DEPRECATED_WARNING)
\r
132 #define MBEDTLS_DEPRECATED __attribute__((deprecated))
\r
134 #define MBEDTLS_DEPRECATED
\r
137 * \brief RIPEMD-160 context setup
\r
139 * \deprecated Superseded by mbedtls_ripemd160_starts_ret() in 2.7.0
\r
141 * \param ctx context to be initialized
\r
143 MBEDTLS_DEPRECATED void mbedtls_ripemd160_starts(
\r
144 mbedtls_ripemd160_context *ctx );
\r
147 * \brief RIPEMD-160 process buffer
\r
149 * \deprecated Superseded by mbedtls_ripemd160_update_ret() in 2.7.0
\r
151 * \param ctx RIPEMD-160 context
\r
152 * \param input buffer holding the data
\r
153 * \param ilen length of the input data
\r
155 MBEDTLS_DEPRECATED void mbedtls_ripemd160_update(
\r
156 mbedtls_ripemd160_context *ctx,
\r
157 const unsigned char *input,
\r
161 * \brief RIPEMD-160 final digest
\r
163 * \deprecated Superseded by mbedtls_ripemd160_finish_ret() in 2.7.0
\r
165 * \param ctx RIPEMD-160 context
\r
166 * \param output RIPEMD-160 checksum result
\r
168 MBEDTLS_DEPRECATED void mbedtls_ripemd160_finish(
\r
169 mbedtls_ripemd160_context *ctx,
\r
170 unsigned char output[20] );
\r
173 * \brief RIPEMD-160 process data block (internal use only)
\r
175 * \deprecated Superseded by mbedtls_internal_ripemd160_process() in 2.7.0
\r
177 * \param ctx RIPEMD-160 context
\r
178 * \param data buffer holding one block of data
\r
180 MBEDTLS_DEPRECATED void mbedtls_ripemd160_process(
\r
181 mbedtls_ripemd160_context *ctx,
\r
182 const unsigned char data[64] );
\r
184 #undef MBEDTLS_DEPRECATED
\r
185 #endif /* !MBEDTLS_DEPRECATED_REMOVED */
\r
188 * \brief Output = RIPEMD-160( input buffer )
\r
190 * \param input buffer holding the data
\r
191 * \param ilen length of the input data
\r
192 * \param output RIPEMD-160 checksum result
\r
194 * \return 0 if successful
\r
196 int mbedtls_ripemd160_ret( const unsigned char *input,
\r
198 unsigned char output[20] );
\r
200 #if !defined(MBEDTLS_DEPRECATED_REMOVED)
\r
201 #if defined(MBEDTLS_DEPRECATED_WARNING)
\r
202 #define MBEDTLS_DEPRECATED __attribute__((deprecated))
\r
204 #define MBEDTLS_DEPRECATED
\r
207 * \brief Output = RIPEMD-160( input buffer )
\r
209 * \deprecated Superseded by mbedtls_ripemd160_ret() in 2.7.0
\r
211 * \param input buffer holding the data
\r
212 * \param ilen length of the input data
\r
213 * \param output RIPEMD-160 checksum result
\r
215 MBEDTLS_DEPRECATED void mbedtls_ripemd160( const unsigned char *input,
\r
217 unsigned char output[20] );
\r
219 #undef MBEDTLS_DEPRECATED
\r
220 #endif /* !MBEDTLS_DEPRECATED_REMOVED */
\r
222 #if defined(MBEDTLS_SELF_TEST)
\r
225 * \brief Checkup routine
\r
227 * \return 0 if successful, or 1 if the test failed
\r
229 int mbedtls_ripemd160_self_test( int verbose );
\r
231 #endif /* MBEDTLS_SELF_TEST */
\r
237 #endif /* mbedtls_ripemd160.h */
\r