1 /** 2 * \file ripemd160.h 3 * 4 * \brief RIPE MD-160 message digest 5 */ 6 /* 7 * Copyright The Mbed TLS Contributors 8 * SPDX-License-Identifier: Apache-2.0 9 * 10 * Licensed under the Apache License, Version 2.0 (the "License"); you may 11 * not use this file except in compliance with the License. 12 * You may obtain a copy of the License at 13 * 14 * http://www.apache.org/licenses/LICENSE-2.0 15 * 16 * Unless required by applicable law or agreed to in writing, software 17 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT 18 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19 * See the License for the specific language governing permissions and 20 * limitations under the License. 21 */ 22 #ifndef MBEDTLS_RIPEMD160_H 23 #define MBEDTLS_RIPEMD160_H 24 25 #if !defined(MBEDTLS_CONFIG_FILE) 26 #include "mbedtls/config.h" 27 #else 28 #include MBEDTLS_CONFIG_FILE 29 #endif 30 31 #include <stddef.h> 32 #include <stdint.h> 33 34 /* MBEDTLS_ERR_RIPEMD160_HW_ACCEL_FAILED is deprecated and should not be used. 35 */ 36 /** RIPEMD160 hardware accelerator failed */ 37 #define MBEDTLS_ERR_RIPEMD160_HW_ACCEL_FAILED -0x0031 38 39 #ifdef __cplusplus 40 extern "C" { 41 #endif 42 43 #if !defined(MBEDTLS_RIPEMD160_ALT) 44 // Regular implementation 45 // 46 47 /** 48 * \brief RIPEMD-160 context structure 49 */ 50 typedef struct mbedtls_ripemd160_context 51 { 52 uint32_t total[2]; /*!< number of bytes processed */ 53 uint32_t state[5]; /*!< intermediate digest state */ 54 unsigned char buffer[64]; /*!< data block being processed */ 55 } 56 mbedtls_ripemd160_context; 57 58 #else /* MBEDTLS_RIPEMD160_ALT */ 59 #include "ripemd160_alt.h" 60 #endif /* MBEDTLS_RIPEMD160_ALT */ 61 62 /** 63 * \brief Initialize RIPEMD-160 context 64 * 65 * \param ctx RIPEMD-160 context to be initialized 66 */ 67 void mbedtls_ripemd160_init( mbedtls_ripemd160_context *ctx ); 68 69 /** 70 * \brief Clear RIPEMD-160 context 71 * 72 * \param ctx RIPEMD-160 context to be cleared 73 */ 74 void mbedtls_ripemd160_free( mbedtls_ripemd160_context *ctx ); 75 76 /** 77 * \brief Clone (the state of) an RIPEMD-160 context 78 * 79 * \param dst The destination context 80 * \param src The context to be cloned 81 */ 82 void mbedtls_ripemd160_clone( mbedtls_ripemd160_context *dst, 83 const mbedtls_ripemd160_context *src ); 84 85 /** 86 * \brief RIPEMD-160 context setup 87 * 88 * \param ctx context to be initialized 89 * 90 * \return 0 if successful 91 */ 92 int mbedtls_ripemd160_starts_ret( mbedtls_ripemd160_context *ctx ); 93 94 /** 95 * \brief RIPEMD-160 process buffer 96 * 97 * \param ctx RIPEMD-160 context 98 * \param input buffer holding the data 99 * \param ilen length of the input data 100 * 101 * \return 0 if successful 102 */ 103 int mbedtls_ripemd160_update_ret( mbedtls_ripemd160_context *ctx, 104 const unsigned char *input, 105 size_t ilen ); 106 107 /** 108 * \brief RIPEMD-160 final digest 109 * 110 * \param ctx RIPEMD-160 context 111 * \param output RIPEMD-160 checksum result 112 * 113 * \return 0 if successful 114 */ 115 int mbedtls_ripemd160_finish_ret( mbedtls_ripemd160_context *ctx, 116 unsigned char output[20] ); 117 118 /** 119 * \brief RIPEMD-160 process data block (internal use only) 120 * 121 * \param ctx RIPEMD-160 context 122 * \param data buffer holding one block of data 123 * 124 * \return 0 if successful 125 */ 126 int mbedtls_internal_ripemd160_process( mbedtls_ripemd160_context *ctx, 127 const unsigned char data[64] ); 128 129 #if !defined(MBEDTLS_DEPRECATED_REMOVED) 130 #if defined(MBEDTLS_DEPRECATED_WARNING) 131 #define MBEDTLS_DEPRECATED __attribute__((deprecated)) 132 #else 133 #define MBEDTLS_DEPRECATED 134 #endif 135 /** 136 * \brief RIPEMD-160 context setup 137 * 138 * \deprecated Superseded by mbedtls_ripemd160_starts_ret() in 2.7.0 139 * 140 * \param ctx context to be initialized 141 */ 142 MBEDTLS_DEPRECATED void mbedtls_ripemd160_starts( 143 mbedtls_ripemd160_context *ctx ); 144 145 /** 146 * \brief RIPEMD-160 process buffer 147 * 148 * \deprecated Superseded by mbedtls_ripemd160_update_ret() in 2.7.0 149 * 150 * \param ctx RIPEMD-160 context 151 * \param input buffer holding the data 152 * \param ilen length of the input data 153 */ 154 MBEDTLS_DEPRECATED void mbedtls_ripemd160_update( 155 mbedtls_ripemd160_context *ctx, 156 const unsigned char *input, 157 size_t ilen ); 158 159 /** 160 * \brief RIPEMD-160 final digest 161 * 162 * \deprecated Superseded by mbedtls_ripemd160_finish_ret() in 2.7.0 163 * 164 * \param ctx RIPEMD-160 context 165 * \param output RIPEMD-160 checksum result 166 */ 167 MBEDTLS_DEPRECATED void mbedtls_ripemd160_finish( 168 mbedtls_ripemd160_context *ctx, 169 unsigned char output[20] ); 170 171 /** 172 * \brief RIPEMD-160 process data block (internal use only) 173 * 174 * \deprecated Superseded by mbedtls_internal_ripemd160_process() in 2.7.0 175 * 176 * \param ctx RIPEMD-160 context 177 * \param data buffer holding one block of data 178 */ 179 MBEDTLS_DEPRECATED void mbedtls_ripemd160_process( 180 mbedtls_ripemd160_context *ctx, 181 const unsigned char data[64] ); 182 183 #undef MBEDTLS_DEPRECATED 184 #endif /* !MBEDTLS_DEPRECATED_REMOVED */ 185 186 /** 187 * \brief Output = RIPEMD-160( input buffer ) 188 * 189 * \param input buffer holding the data 190 * \param ilen length of the input data 191 * \param output RIPEMD-160 checksum result 192 * 193 * \return 0 if successful 194 */ 195 int mbedtls_ripemd160_ret( const unsigned char *input, 196 size_t ilen, 197 unsigned char output[20] ); 198 199 #if !defined(MBEDTLS_DEPRECATED_REMOVED) 200 #if defined(MBEDTLS_DEPRECATED_WARNING) 201 #define MBEDTLS_DEPRECATED __attribute__((deprecated)) 202 #else 203 #define MBEDTLS_DEPRECATED 204 #endif 205 /** 206 * \brief Output = RIPEMD-160( input buffer ) 207 * 208 * \deprecated Superseded by mbedtls_ripemd160_ret() in 2.7.0 209 * 210 * \param input buffer holding the data 211 * \param ilen length of the input data 212 * \param output RIPEMD-160 checksum result 213 */ 214 MBEDTLS_DEPRECATED void mbedtls_ripemd160( const unsigned char *input, 215 size_t ilen, 216 unsigned char output[20] ); 217 218 #undef MBEDTLS_DEPRECATED 219 #endif /* !MBEDTLS_DEPRECATED_REMOVED */ 220 221 #if defined(MBEDTLS_SELF_TEST) 222 223 /** 224 * \brief Checkup routine 225 * 226 * \return 0 if successful, or 1 if the test failed 227 */ 228 int mbedtls_ripemd160_self_test( int verbose ); 229 230 #endif /* MBEDTLS_SELF_TEST */ 231 232 #ifdef __cplusplus 233 } 234 #endif 235 236 #endif /* mbedtls_ripemd160.h */ 237