mbed TLS Build

Dependents:   Encrypt_Decrypt1 mbed_blink_tls encrypt encrypt

Committer:
markrad
Date:
Thu Jan 05 00:18:44 2017 +0000
Revision:
0:cdf462088d13
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
markrad 0:cdf462088d13 1 /**
markrad 0:cdf462088d13 2 * \file md_wrap.c
markrad 0:cdf462088d13 3 *
markrad 0:cdf462088d13 4 * \brief Generic message digest wrapper for mbed TLS
markrad 0:cdf462088d13 5 *
markrad 0:cdf462088d13 6 * \author Adriaan de Jong <dejong@fox-it.com>
markrad 0:cdf462088d13 7 *
markrad 0:cdf462088d13 8 * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved
markrad 0:cdf462088d13 9 * SPDX-License-Identifier: Apache-2.0
markrad 0:cdf462088d13 10 *
markrad 0:cdf462088d13 11 * Licensed under the Apache License, Version 2.0 (the "License"); you may
markrad 0:cdf462088d13 12 * not use this file except in compliance with the License.
markrad 0:cdf462088d13 13 * You may obtain a copy of the License at
markrad 0:cdf462088d13 14 *
markrad 0:cdf462088d13 15 * http://www.apache.org/licenses/LICENSE-2.0
markrad 0:cdf462088d13 16 *
markrad 0:cdf462088d13 17 * Unless required by applicable law or agreed to in writing, software
markrad 0:cdf462088d13 18 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
markrad 0:cdf462088d13 19 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
markrad 0:cdf462088d13 20 * See the License for the specific language governing permissions and
markrad 0:cdf462088d13 21 * limitations under the License.
markrad 0:cdf462088d13 22 *
markrad 0:cdf462088d13 23 * This file is part of mbed TLS (https://tls.mbed.org)
markrad 0:cdf462088d13 24 */
markrad 0:cdf462088d13 25
markrad 0:cdf462088d13 26 #if !defined(MBEDTLS_CONFIG_FILE)
markrad 0:cdf462088d13 27 #include "mbedtls/config.h"
markrad 0:cdf462088d13 28 #else
markrad 0:cdf462088d13 29 #include MBEDTLS_CONFIG_FILE
markrad 0:cdf462088d13 30 #endif
markrad 0:cdf462088d13 31
markrad 0:cdf462088d13 32 #if defined(MBEDTLS_MD_C)
markrad 0:cdf462088d13 33
markrad 0:cdf462088d13 34 #include "mbedtls/md_internal.h"
markrad 0:cdf462088d13 35
markrad 0:cdf462088d13 36 #if defined(MBEDTLS_MD2_C)
markrad 0:cdf462088d13 37 #include "mbedtls/md2.h"
markrad 0:cdf462088d13 38 #endif
markrad 0:cdf462088d13 39
markrad 0:cdf462088d13 40 #if defined(MBEDTLS_MD4_C)
markrad 0:cdf462088d13 41 #include "mbedtls/md4.h"
markrad 0:cdf462088d13 42 #endif
markrad 0:cdf462088d13 43
markrad 0:cdf462088d13 44 #if defined(MBEDTLS_MD5_C)
markrad 0:cdf462088d13 45 #include "mbedtls/md5.h"
markrad 0:cdf462088d13 46 #endif
markrad 0:cdf462088d13 47
markrad 0:cdf462088d13 48 #if defined(MBEDTLS_RIPEMD160_C)
markrad 0:cdf462088d13 49 #include "mbedtls/ripemd160.h"
markrad 0:cdf462088d13 50 #endif
markrad 0:cdf462088d13 51
markrad 0:cdf462088d13 52 #if defined(MBEDTLS_SHA1_C)
markrad 0:cdf462088d13 53 #include "mbedtls/sha1.h"
markrad 0:cdf462088d13 54 #endif
markrad 0:cdf462088d13 55
markrad 0:cdf462088d13 56 #if defined(MBEDTLS_SHA256_C)
markrad 0:cdf462088d13 57 #include "mbedtls/sha256.h"
markrad 0:cdf462088d13 58 #endif
markrad 0:cdf462088d13 59
markrad 0:cdf462088d13 60 #if defined(MBEDTLS_SHA512_C)
markrad 0:cdf462088d13 61 #include "mbedtls/sha512.h"
markrad 0:cdf462088d13 62 #endif
markrad 0:cdf462088d13 63
markrad 0:cdf462088d13 64 #if defined(MBEDTLS_PLATFORM_C)
markrad 0:cdf462088d13 65 #include "mbedtls/platform.h"
markrad 0:cdf462088d13 66 #else
markrad 0:cdf462088d13 67 #include <stdlib.h>
markrad 0:cdf462088d13 68 #define mbedtls_calloc calloc
markrad 0:cdf462088d13 69 #define mbedtls_free free
markrad 0:cdf462088d13 70 #endif
markrad 0:cdf462088d13 71
markrad 0:cdf462088d13 72 #if defined(MBEDTLS_MD2_C)
markrad 0:cdf462088d13 73
markrad 0:cdf462088d13 74 static void md2_starts_wrap( void *ctx )
markrad 0:cdf462088d13 75 {
markrad 0:cdf462088d13 76 mbedtls_md2_starts( (mbedtls_md2_context *) ctx );
markrad 0:cdf462088d13 77 }
markrad 0:cdf462088d13 78
markrad 0:cdf462088d13 79 static void md2_update_wrap( void *ctx, const unsigned char *input,
markrad 0:cdf462088d13 80 size_t ilen )
markrad 0:cdf462088d13 81 {
markrad 0:cdf462088d13 82 mbedtls_md2_update( (mbedtls_md2_context *) ctx, input, ilen );
markrad 0:cdf462088d13 83 }
markrad 0:cdf462088d13 84
markrad 0:cdf462088d13 85 static void md2_finish_wrap( void *ctx, unsigned char *output )
markrad 0:cdf462088d13 86 {
markrad 0:cdf462088d13 87 mbedtls_md2_finish( (mbedtls_md2_context *) ctx, output );
markrad 0:cdf462088d13 88 }
markrad 0:cdf462088d13 89
markrad 0:cdf462088d13 90 static void *md2_ctx_alloc( void )
markrad 0:cdf462088d13 91 {
markrad 0:cdf462088d13 92 void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_md2_context ) );
markrad 0:cdf462088d13 93
markrad 0:cdf462088d13 94 if( ctx != NULL )
markrad 0:cdf462088d13 95 mbedtls_md2_init( (mbedtls_md2_context *) ctx );
markrad 0:cdf462088d13 96
markrad 0:cdf462088d13 97 return( ctx );
markrad 0:cdf462088d13 98 }
markrad 0:cdf462088d13 99
markrad 0:cdf462088d13 100 static void md2_ctx_free( void *ctx )
markrad 0:cdf462088d13 101 {
markrad 0:cdf462088d13 102 mbedtls_md2_free( (mbedtls_md2_context *) ctx );
markrad 0:cdf462088d13 103 mbedtls_free( ctx );
markrad 0:cdf462088d13 104 }
markrad 0:cdf462088d13 105
markrad 0:cdf462088d13 106 static void md2_clone_wrap( void *dst, const void *src )
markrad 0:cdf462088d13 107 {
markrad 0:cdf462088d13 108 mbedtls_md2_clone( (mbedtls_md2_context *) dst,
markrad 0:cdf462088d13 109 (const mbedtls_md2_context *) src );
markrad 0:cdf462088d13 110 }
markrad 0:cdf462088d13 111
markrad 0:cdf462088d13 112 static void md2_process_wrap( void *ctx, const unsigned char *data )
markrad 0:cdf462088d13 113 {
markrad 0:cdf462088d13 114 ((void) data);
markrad 0:cdf462088d13 115
markrad 0:cdf462088d13 116 mbedtls_md2_process( (mbedtls_md2_context *) ctx );
markrad 0:cdf462088d13 117 }
markrad 0:cdf462088d13 118
markrad 0:cdf462088d13 119 const mbedtls_md_info_t mbedtls_md2_info = {
markrad 0:cdf462088d13 120 MBEDTLS_MD_MD2,
markrad 0:cdf462088d13 121 "MD2",
markrad 0:cdf462088d13 122 16,
markrad 0:cdf462088d13 123 16,
markrad 0:cdf462088d13 124 md2_starts_wrap,
markrad 0:cdf462088d13 125 md2_update_wrap,
markrad 0:cdf462088d13 126 md2_finish_wrap,
markrad 0:cdf462088d13 127 mbedtls_md2,
markrad 0:cdf462088d13 128 md2_ctx_alloc,
markrad 0:cdf462088d13 129 md2_ctx_free,
markrad 0:cdf462088d13 130 md2_clone_wrap,
markrad 0:cdf462088d13 131 md2_process_wrap,
markrad 0:cdf462088d13 132 };
markrad 0:cdf462088d13 133
markrad 0:cdf462088d13 134 #endif /* MBEDTLS_MD2_C */
markrad 0:cdf462088d13 135
markrad 0:cdf462088d13 136 #if defined(MBEDTLS_MD4_C)
markrad 0:cdf462088d13 137
markrad 0:cdf462088d13 138 static void md4_starts_wrap( void *ctx )
markrad 0:cdf462088d13 139 {
markrad 0:cdf462088d13 140 mbedtls_md4_starts( (mbedtls_md4_context *) ctx );
markrad 0:cdf462088d13 141 }
markrad 0:cdf462088d13 142
markrad 0:cdf462088d13 143 static void md4_update_wrap( void *ctx, const unsigned char *input,
markrad 0:cdf462088d13 144 size_t ilen )
markrad 0:cdf462088d13 145 {
markrad 0:cdf462088d13 146 mbedtls_md4_update( (mbedtls_md4_context *) ctx, input, ilen );
markrad 0:cdf462088d13 147 }
markrad 0:cdf462088d13 148
markrad 0:cdf462088d13 149 static void md4_finish_wrap( void *ctx, unsigned char *output )
markrad 0:cdf462088d13 150 {
markrad 0:cdf462088d13 151 mbedtls_md4_finish( (mbedtls_md4_context *) ctx, output );
markrad 0:cdf462088d13 152 }
markrad 0:cdf462088d13 153
markrad 0:cdf462088d13 154 static void *md4_ctx_alloc( void )
markrad 0:cdf462088d13 155 {
markrad 0:cdf462088d13 156 void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_md4_context ) );
markrad 0:cdf462088d13 157
markrad 0:cdf462088d13 158 if( ctx != NULL )
markrad 0:cdf462088d13 159 mbedtls_md4_init( (mbedtls_md4_context *) ctx );
markrad 0:cdf462088d13 160
markrad 0:cdf462088d13 161 return( ctx );
markrad 0:cdf462088d13 162 }
markrad 0:cdf462088d13 163
markrad 0:cdf462088d13 164 static void md4_ctx_free( void *ctx )
markrad 0:cdf462088d13 165 {
markrad 0:cdf462088d13 166 mbedtls_md4_free( (mbedtls_md4_context *) ctx );
markrad 0:cdf462088d13 167 mbedtls_free( ctx );
markrad 0:cdf462088d13 168 }
markrad 0:cdf462088d13 169
markrad 0:cdf462088d13 170 static void md4_clone_wrap( void *dst, const void *src )
markrad 0:cdf462088d13 171 {
markrad 0:cdf462088d13 172 mbedtls_md4_clone( (mbedtls_md4_context *) dst,
markrad 0:cdf462088d13 173 (const mbedtls_md4_context *) src );
markrad 0:cdf462088d13 174 }
markrad 0:cdf462088d13 175
markrad 0:cdf462088d13 176 static void md4_process_wrap( void *ctx, const unsigned char *data )
markrad 0:cdf462088d13 177 {
markrad 0:cdf462088d13 178 mbedtls_md4_process( (mbedtls_md4_context *) ctx, data );
markrad 0:cdf462088d13 179 }
markrad 0:cdf462088d13 180
markrad 0:cdf462088d13 181 const mbedtls_md_info_t mbedtls_md4_info = {
markrad 0:cdf462088d13 182 MBEDTLS_MD_MD4,
markrad 0:cdf462088d13 183 "MD4",
markrad 0:cdf462088d13 184 16,
markrad 0:cdf462088d13 185 64,
markrad 0:cdf462088d13 186 md4_starts_wrap,
markrad 0:cdf462088d13 187 md4_update_wrap,
markrad 0:cdf462088d13 188 md4_finish_wrap,
markrad 0:cdf462088d13 189 mbedtls_md4,
markrad 0:cdf462088d13 190 md4_ctx_alloc,
markrad 0:cdf462088d13 191 md4_ctx_free,
markrad 0:cdf462088d13 192 md4_clone_wrap,
markrad 0:cdf462088d13 193 md4_process_wrap,
markrad 0:cdf462088d13 194 };
markrad 0:cdf462088d13 195
markrad 0:cdf462088d13 196 #endif /* MBEDTLS_MD4_C */
markrad 0:cdf462088d13 197
markrad 0:cdf462088d13 198 #if defined(MBEDTLS_MD5_C)
markrad 0:cdf462088d13 199
markrad 0:cdf462088d13 200 static void md5_starts_wrap( void *ctx )
markrad 0:cdf462088d13 201 {
markrad 0:cdf462088d13 202 mbedtls_md5_starts( (mbedtls_md5_context *) ctx );
markrad 0:cdf462088d13 203 }
markrad 0:cdf462088d13 204
markrad 0:cdf462088d13 205 static void md5_update_wrap( void *ctx, const unsigned char *input,
markrad 0:cdf462088d13 206 size_t ilen )
markrad 0:cdf462088d13 207 {
markrad 0:cdf462088d13 208 mbedtls_md5_update( (mbedtls_md5_context *) ctx, input, ilen );
markrad 0:cdf462088d13 209 }
markrad 0:cdf462088d13 210
markrad 0:cdf462088d13 211 static void md5_finish_wrap( void *ctx, unsigned char *output )
markrad 0:cdf462088d13 212 {
markrad 0:cdf462088d13 213 mbedtls_md5_finish( (mbedtls_md5_context *) ctx, output );
markrad 0:cdf462088d13 214 }
markrad 0:cdf462088d13 215
markrad 0:cdf462088d13 216 static void *md5_ctx_alloc( void )
markrad 0:cdf462088d13 217 {
markrad 0:cdf462088d13 218 void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_md5_context ) );
markrad 0:cdf462088d13 219
markrad 0:cdf462088d13 220 if( ctx != NULL )
markrad 0:cdf462088d13 221 mbedtls_md5_init( (mbedtls_md5_context *) ctx );
markrad 0:cdf462088d13 222
markrad 0:cdf462088d13 223 return( ctx );
markrad 0:cdf462088d13 224 }
markrad 0:cdf462088d13 225
markrad 0:cdf462088d13 226 static void md5_ctx_free( void *ctx )
markrad 0:cdf462088d13 227 {
markrad 0:cdf462088d13 228 mbedtls_md5_free( (mbedtls_md5_context *) ctx );
markrad 0:cdf462088d13 229 mbedtls_free( ctx );
markrad 0:cdf462088d13 230 }
markrad 0:cdf462088d13 231
markrad 0:cdf462088d13 232 static void md5_clone_wrap( void *dst, const void *src )
markrad 0:cdf462088d13 233 {
markrad 0:cdf462088d13 234 mbedtls_md5_clone( (mbedtls_md5_context *) dst,
markrad 0:cdf462088d13 235 (const mbedtls_md5_context *) src );
markrad 0:cdf462088d13 236 }
markrad 0:cdf462088d13 237
markrad 0:cdf462088d13 238 static void md5_process_wrap( void *ctx, const unsigned char *data )
markrad 0:cdf462088d13 239 {
markrad 0:cdf462088d13 240 mbedtls_md5_process( (mbedtls_md5_context *) ctx, data );
markrad 0:cdf462088d13 241 }
markrad 0:cdf462088d13 242
markrad 0:cdf462088d13 243 const mbedtls_md_info_t mbedtls_md5_info = {
markrad 0:cdf462088d13 244 MBEDTLS_MD_MD5,
markrad 0:cdf462088d13 245 "MD5",
markrad 0:cdf462088d13 246 16,
markrad 0:cdf462088d13 247 64,
markrad 0:cdf462088d13 248 md5_starts_wrap,
markrad 0:cdf462088d13 249 md5_update_wrap,
markrad 0:cdf462088d13 250 md5_finish_wrap,
markrad 0:cdf462088d13 251 mbedtls_md5,
markrad 0:cdf462088d13 252 md5_ctx_alloc,
markrad 0:cdf462088d13 253 md5_ctx_free,
markrad 0:cdf462088d13 254 md5_clone_wrap,
markrad 0:cdf462088d13 255 md5_process_wrap,
markrad 0:cdf462088d13 256 };
markrad 0:cdf462088d13 257
markrad 0:cdf462088d13 258 #endif /* MBEDTLS_MD5_C */
markrad 0:cdf462088d13 259
markrad 0:cdf462088d13 260 #if defined(MBEDTLS_RIPEMD160_C)
markrad 0:cdf462088d13 261
markrad 0:cdf462088d13 262 static void ripemd160_starts_wrap( void *ctx )
markrad 0:cdf462088d13 263 {
markrad 0:cdf462088d13 264 mbedtls_ripemd160_starts( (mbedtls_ripemd160_context *) ctx );
markrad 0:cdf462088d13 265 }
markrad 0:cdf462088d13 266
markrad 0:cdf462088d13 267 static void ripemd160_update_wrap( void *ctx, const unsigned char *input,
markrad 0:cdf462088d13 268 size_t ilen )
markrad 0:cdf462088d13 269 {
markrad 0:cdf462088d13 270 mbedtls_ripemd160_update( (mbedtls_ripemd160_context *) ctx, input, ilen );
markrad 0:cdf462088d13 271 }
markrad 0:cdf462088d13 272
markrad 0:cdf462088d13 273 static void ripemd160_finish_wrap( void *ctx, unsigned char *output )
markrad 0:cdf462088d13 274 {
markrad 0:cdf462088d13 275 mbedtls_ripemd160_finish( (mbedtls_ripemd160_context *) ctx, output );
markrad 0:cdf462088d13 276 }
markrad 0:cdf462088d13 277
markrad 0:cdf462088d13 278 static void *ripemd160_ctx_alloc( void )
markrad 0:cdf462088d13 279 {
markrad 0:cdf462088d13 280 void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_ripemd160_context ) );
markrad 0:cdf462088d13 281
markrad 0:cdf462088d13 282 if( ctx != NULL )
markrad 0:cdf462088d13 283 mbedtls_ripemd160_init( (mbedtls_ripemd160_context *) ctx );
markrad 0:cdf462088d13 284
markrad 0:cdf462088d13 285 return( ctx );
markrad 0:cdf462088d13 286 }
markrad 0:cdf462088d13 287
markrad 0:cdf462088d13 288 static void ripemd160_ctx_free( void *ctx )
markrad 0:cdf462088d13 289 {
markrad 0:cdf462088d13 290 mbedtls_ripemd160_free( (mbedtls_ripemd160_context *) ctx );
markrad 0:cdf462088d13 291 mbedtls_free( ctx );
markrad 0:cdf462088d13 292 }
markrad 0:cdf462088d13 293
markrad 0:cdf462088d13 294 static void ripemd160_clone_wrap( void *dst, const void *src )
markrad 0:cdf462088d13 295 {
markrad 0:cdf462088d13 296 mbedtls_ripemd160_clone( (mbedtls_ripemd160_context *) dst,
markrad 0:cdf462088d13 297 (const mbedtls_ripemd160_context *) src );
markrad 0:cdf462088d13 298 }
markrad 0:cdf462088d13 299
markrad 0:cdf462088d13 300 static void ripemd160_process_wrap( void *ctx, const unsigned char *data )
markrad 0:cdf462088d13 301 {
markrad 0:cdf462088d13 302 mbedtls_ripemd160_process( (mbedtls_ripemd160_context *) ctx, data );
markrad 0:cdf462088d13 303 }
markrad 0:cdf462088d13 304
markrad 0:cdf462088d13 305 const mbedtls_md_info_t mbedtls_ripemd160_info = {
markrad 0:cdf462088d13 306 MBEDTLS_MD_RIPEMD160,
markrad 0:cdf462088d13 307 "RIPEMD160",
markrad 0:cdf462088d13 308 20,
markrad 0:cdf462088d13 309 64,
markrad 0:cdf462088d13 310 ripemd160_starts_wrap,
markrad 0:cdf462088d13 311 ripemd160_update_wrap,
markrad 0:cdf462088d13 312 ripemd160_finish_wrap,
markrad 0:cdf462088d13 313 mbedtls_ripemd160,
markrad 0:cdf462088d13 314 ripemd160_ctx_alloc,
markrad 0:cdf462088d13 315 ripemd160_ctx_free,
markrad 0:cdf462088d13 316 ripemd160_clone_wrap,
markrad 0:cdf462088d13 317 ripemd160_process_wrap,
markrad 0:cdf462088d13 318 };
markrad 0:cdf462088d13 319
markrad 0:cdf462088d13 320 #endif /* MBEDTLS_RIPEMD160_C */
markrad 0:cdf462088d13 321
markrad 0:cdf462088d13 322 #if defined(MBEDTLS_SHA1_C)
markrad 0:cdf462088d13 323
markrad 0:cdf462088d13 324 static void sha1_starts_wrap( void *ctx )
markrad 0:cdf462088d13 325 {
markrad 0:cdf462088d13 326 mbedtls_sha1_starts( (mbedtls_sha1_context *) ctx );
markrad 0:cdf462088d13 327 }
markrad 0:cdf462088d13 328
markrad 0:cdf462088d13 329 static void sha1_update_wrap( void *ctx, const unsigned char *input,
markrad 0:cdf462088d13 330 size_t ilen )
markrad 0:cdf462088d13 331 {
markrad 0:cdf462088d13 332 mbedtls_sha1_update( (mbedtls_sha1_context *) ctx, input, ilen );
markrad 0:cdf462088d13 333 }
markrad 0:cdf462088d13 334
markrad 0:cdf462088d13 335 static void sha1_finish_wrap( void *ctx, unsigned char *output )
markrad 0:cdf462088d13 336 {
markrad 0:cdf462088d13 337 mbedtls_sha1_finish( (mbedtls_sha1_context *) ctx, output );
markrad 0:cdf462088d13 338 }
markrad 0:cdf462088d13 339
markrad 0:cdf462088d13 340 static void *sha1_ctx_alloc( void )
markrad 0:cdf462088d13 341 {
markrad 0:cdf462088d13 342 void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_sha1_context ) );
markrad 0:cdf462088d13 343
markrad 0:cdf462088d13 344 if( ctx != NULL )
markrad 0:cdf462088d13 345 mbedtls_sha1_init( (mbedtls_sha1_context *) ctx );
markrad 0:cdf462088d13 346
markrad 0:cdf462088d13 347 return( ctx );
markrad 0:cdf462088d13 348 }
markrad 0:cdf462088d13 349
markrad 0:cdf462088d13 350 static void sha1_clone_wrap( void *dst, const void *src )
markrad 0:cdf462088d13 351 {
markrad 0:cdf462088d13 352 mbedtls_sha1_clone( (mbedtls_sha1_context *) dst,
markrad 0:cdf462088d13 353 (const mbedtls_sha1_context *) src );
markrad 0:cdf462088d13 354 }
markrad 0:cdf462088d13 355
markrad 0:cdf462088d13 356 static void sha1_ctx_free( void *ctx )
markrad 0:cdf462088d13 357 {
markrad 0:cdf462088d13 358 mbedtls_sha1_free( (mbedtls_sha1_context *) ctx );
markrad 0:cdf462088d13 359 mbedtls_free( ctx );
markrad 0:cdf462088d13 360 }
markrad 0:cdf462088d13 361
markrad 0:cdf462088d13 362 static void sha1_process_wrap( void *ctx, const unsigned char *data )
markrad 0:cdf462088d13 363 {
markrad 0:cdf462088d13 364 mbedtls_sha1_process( (mbedtls_sha1_context *) ctx, data );
markrad 0:cdf462088d13 365 }
markrad 0:cdf462088d13 366
markrad 0:cdf462088d13 367 const mbedtls_md_info_t mbedtls_sha1_info = {
markrad 0:cdf462088d13 368 MBEDTLS_MD_SHA1,
markrad 0:cdf462088d13 369 "SHA1",
markrad 0:cdf462088d13 370 20,
markrad 0:cdf462088d13 371 64,
markrad 0:cdf462088d13 372 sha1_starts_wrap,
markrad 0:cdf462088d13 373 sha1_update_wrap,
markrad 0:cdf462088d13 374 sha1_finish_wrap,
markrad 0:cdf462088d13 375 mbedtls_sha1,
markrad 0:cdf462088d13 376 sha1_ctx_alloc,
markrad 0:cdf462088d13 377 sha1_ctx_free,
markrad 0:cdf462088d13 378 sha1_clone_wrap,
markrad 0:cdf462088d13 379 sha1_process_wrap,
markrad 0:cdf462088d13 380 };
markrad 0:cdf462088d13 381
markrad 0:cdf462088d13 382 #endif /* MBEDTLS_SHA1_C */
markrad 0:cdf462088d13 383
markrad 0:cdf462088d13 384 /*
markrad 0:cdf462088d13 385 * Wrappers for generic message digests
markrad 0:cdf462088d13 386 */
markrad 0:cdf462088d13 387 #if defined(MBEDTLS_SHA256_C)
markrad 0:cdf462088d13 388
markrad 0:cdf462088d13 389 static void sha224_starts_wrap( void *ctx )
markrad 0:cdf462088d13 390 {
markrad 0:cdf462088d13 391 mbedtls_sha256_starts( (mbedtls_sha256_context *) ctx, 1 );
markrad 0:cdf462088d13 392 }
markrad 0:cdf462088d13 393
markrad 0:cdf462088d13 394 static void sha224_update_wrap( void *ctx, const unsigned char *input,
markrad 0:cdf462088d13 395 size_t ilen )
markrad 0:cdf462088d13 396 {
markrad 0:cdf462088d13 397 mbedtls_sha256_update( (mbedtls_sha256_context *) ctx, input, ilen );
markrad 0:cdf462088d13 398 }
markrad 0:cdf462088d13 399
markrad 0:cdf462088d13 400 static void sha224_finish_wrap( void *ctx, unsigned char *output )
markrad 0:cdf462088d13 401 {
markrad 0:cdf462088d13 402 mbedtls_sha256_finish( (mbedtls_sha256_context *) ctx, output );
markrad 0:cdf462088d13 403 }
markrad 0:cdf462088d13 404
markrad 0:cdf462088d13 405 static void sha224_wrap( const unsigned char *input, size_t ilen,
markrad 0:cdf462088d13 406 unsigned char *output )
markrad 0:cdf462088d13 407 {
markrad 0:cdf462088d13 408 mbedtls_sha256( input, ilen, output, 1 );
markrad 0:cdf462088d13 409 }
markrad 0:cdf462088d13 410
markrad 0:cdf462088d13 411 static void *sha224_ctx_alloc( void )
markrad 0:cdf462088d13 412 {
markrad 0:cdf462088d13 413 void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_sha256_context ) );
markrad 0:cdf462088d13 414
markrad 0:cdf462088d13 415 if( ctx != NULL )
markrad 0:cdf462088d13 416 mbedtls_sha256_init( (mbedtls_sha256_context *) ctx );
markrad 0:cdf462088d13 417
markrad 0:cdf462088d13 418 return( ctx );
markrad 0:cdf462088d13 419 }
markrad 0:cdf462088d13 420
markrad 0:cdf462088d13 421 static void sha224_ctx_free( void *ctx )
markrad 0:cdf462088d13 422 {
markrad 0:cdf462088d13 423 mbedtls_sha256_free( (mbedtls_sha256_context *) ctx );
markrad 0:cdf462088d13 424 mbedtls_free( ctx );
markrad 0:cdf462088d13 425 }
markrad 0:cdf462088d13 426
markrad 0:cdf462088d13 427 static void sha224_clone_wrap( void *dst, const void *src )
markrad 0:cdf462088d13 428 {
markrad 0:cdf462088d13 429 mbedtls_sha256_clone( (mbedtls_sha256_context *) dst,
markrad 0:cdf462088d13 430 (const mbedtls_sha256_context *) src );
markrad 0:cdf462088d13 431 }
markrad 0:cdf462088d13 432
markrad 0:cdf462088d13 433 static void sha224_process_wrap( void *ctx, const unsigned char *data )
markrad 0:cdf462088d13 434 {
markrad 0:cdf462088d13 435 mbedtls_sha256_process( (mbedtls_sha256_context *) ctx, data );
markrad 0:cdf462088d13 436 }
markrad 0:cdf462088d13 437
markrad 0:cdf462088d13 438 const mbedtls_md_info_t mbedtls_sha224_info = {
markrad 0:cdf462088d13 439 MBEDTLS_MD_SHA224,
markrad 0:cdf462088d13 440 "SHA224",
markrad 0:cdf462088d13 441 28,
markrad 0:cdf462088d13 442 64,
markrad 0:cdf462088d13 443 sha224_starts_wrap,
markrad 0:cdf462088d13 444 sha224_update_wrap,
markrad 0:cdf462088d13 445 sha224_finish_wrap,
markrad 0:cdf462088d13 446 sha224_wrap,
markrad 0:cdf462088d13 447 sha224_ctx_alloc,
markrad 0:cdf462088d13 448 sha224_ctx_free,
markrad 0:cdf462088d13 449 sha224_clone_wrap,
markrad 0:cdf462088d13 450 sha224_process_wrap,
markrad 0:cdf462088d13 451 };
markrad 0:cdf462088d13 452
markrad 0:cdf462088d13 453 static void sha256_starts_wrap( void *ctx )
markrad 0:cdf462088d13 454 {
markrad 0:cdf462088d13 455 mbedtls_sha256_starts( (mbedtls_sha256_context *) ctx, 0 );
markrad 0:cdf462088d13 456 }
markrad 0:cdf462088d13 457
markrad 0:cdf462088d13 458 static void sha256_wrap( const unsigned char *input, size_t ilen,
markrad 0:cdf462088d13 459 unsigned char *output )
markrad 0:cdf462088d13 460 {
markrad 0:cdf462088d13 461 mbedtls_sha256( input, ilen, output, 0 );
markrad 0:cdf462088d13 462 }
markrad 0:cdf462088d13 463
markrad 0:cdf462088d13 464 const mbedtls_md_info_t mbedtls_sha256_info = {
markrad 0:cdf462088d13 465 MBEDTLS_MD_SHA256,
markrad 0:cdf462088d13 466 "SHA256",
markrad 0:cdf462088d13 467 32,
markrad 0:cdf462088d13 468 64,
markrad 0:cdf462088d13 469 sha256_starts_wrap,
markrad 0:cdf462088d13 470 sha224_update_wrap,
markrad 0:cdf462088d13 471 sha224_finish_wrap,
markrad 0:cdf462088d13 472 sha256_wrap,
markrad 0:cdf462088d13 473 sha224_ctx_alloc,
markrad 0:cdf462088d13 474 sha224_ctx_free,
markrad 0:cdf462088d13 475 sha224_clone_wrap,
markrad 0:cdf462088d13 476 sha224_process_wrap,
markrad 0:cdf462088d13 477 };
markrad 0:cdf462088d13 478
markrad 0:cdf462088d13 479 #endif /* MBEDTLS_SHA256_C */
markrad 0:cdf462088d13 480
markrad 0:cdf462088d13 481 #if defined(MBEDTLS_SHA512_C)
markrad 0:cdf462088d13 482
markrad 0:cdf462088d13 483 static void sha384_starts_wrap( void *ctx )
markrad 0:cdf462088d13 484 {
markrad 0:cdf462088d13 485 mbedtls_sha512_starts( (mbedtls_sha512_context *) ctx, 1 );
markrad 0:cdf462088d13 486 }
markrad 0:cdf462088d13 487
markrad 0:cdf462088d13 488 static void sha384_update_wrap( void *ctx, const unsigned char *input,
markrad 0:cdf462088d13 489 size_t ilen )
markrad 0:cdf462088d13 490 {
markrad 0:cdf462088d13 491 mbedtls_sha512_update( (mbedtls_sha512_context *) ctx, input, ilen );
markrad 0:cdf462088d13 492 }
markrad 0:cdf462088d13 493
markrad 0:cdf462088d13 494 static void sha384_finish_wrap( void *ctx, unsigned char *output )
markrad 0:cdf462088d13 495 {
markrad 0:cdf462088d13 496 mbedtls_sha512_finish( (mbedtls_sha512_context *) ctx, output );
markrad 0:cdf462088d13 497 }
markrad 0:cdf462088d13 498
markrad 0:cdf462088d13 499 static void sha384_wrap( const unsigned char *input, size_t ilen,
markrad 0:cdf462088d13 500 unsigned char *output )
markrad 0:cdf462088d13 501 {
markrad 0:cdf462088d13 502 mbedtls_sha512( input, ilen, output, 1 );
markrad 0:cdf462088d13 503 }
markrad 0:cdf462088d13 504
markrad 0:cdf462088d13 505 static void *sha384_ctx_alloc( void )
markrad 0:cdf462088d13 506 {
markrad 0:cdf462088d13 507 void *ctx = mbedtls_calloc( 1, sizeof( mbedtls_sha512_context ) );
markrad 0:cdf462088d13 508
markrad 0:cdf462088d13 509 if( ctx != NULL )
markrad 0:cdf462088d13 510 mbedtls_sha512_init( (mbedtls_sha512_context *) ctx );
markrad 0:cdf462088d13 511
markrad 0:cdf462088d13 512 return( ctx );
markrad 0:cdf462088d13 513 }
markrad 0:cdf462088d13 514
markrad 0:cdf462088d13 515 static void sha384_ctx_free( void *ctx )
markrad 0:cdf462088d13 516 {
markrad 0:cdf462088d13 517 mbedtls_sha512_free( (mbedtls_sha512_context *) ctx );
markrad 0:cdf462088d13 518 mbedtls_free( ctx );
markrad 0:cdf462088d13 519 }
markrad 0:cdf462088d13 520
markrad 0:cdf462088d13 521 static void sha384_clone_wrap( void *dst, const void *src )
markrad 0:cdf462088d13 522 {
markrad 0:cdf462088d13 523 mbedtls_sha512_clone( (mbedtls_sha512_context *) dst,
markrad 0:cdf462088d13 524 (const mbedtls_sha512_context *) src );
markrad 0:cdf462088d13 525 }
markrad 0:cdf462088d13 526
markrad 0:cdf462088d13 527 static void sha384_process_wrap( void *ctx, const unsigned char *data )
markrad 0:cdf462088d13 528 {
markrad 0:cdf462088d13 529 mbedtls_sha512_process( (mbedtls_sha512_context *) ctx, data );
markrad 0:cdf462088d13 530 }
markrad 0:cdf462088d13 531
markrad 0:cdf462088d13 532 const mbedtls_md_info_t mbedtls_sha384_info = {
markrad 0:cdf462088d13 533 MBEDTLS_MD_SHA384,
markrad 0:cdf462088d13 534 "SHA384",
markrad 0:cdf462088d13 535 48,
markrad 0:cdf462088d13 536 128,
markrad 0:cdf462088d13 537 sha384_starts_wrap,
markrad 0:cdf462088d13 538 sha384_update_wrap,
markrad 0:cdf462088d13 539 sha384_finish_wrap,
markrad 0:cdf462088d13 540 sha384_wrap,
markrad 0:cdf462088d13 541 sha384_ctx_alloc,
markrad 0:cdf462088d13 542 sha384_ctx_free,
markrad 0:cdf462088d13 543 sha384_clone_wrap,
markrad 0:cdf462088d13 544 sha384_process_wrap,
markrad 0:cdf462088d13 545 };
markrad 0:cdf462088d13 546
markrad 0:cdf462088d13 547 static void sha512_starts_wrap( void *ctx )
markrad 0:cdf462088d13 548 {
markrad 0:cdf462088d13 549 mbedtls_sha512_starts( (mbedtls_sha512_context *) ctx, 0 );
markrad 0:cdf462088d13 550 }
markrad 0:cdf462088d13 551
markrad 0:cdf462088d13 552 static void sha512_wrap( const unsigned char *input, size_t ilen,
markrad 0:cdf462088d13 553 unsigned char *output )
markrad 0:cdf462088d13 554 {
markrad 0:cdf462088d13 555 mbedtls_sha512( input, ilen, output, 0 );
markrad 0:cdf462088d13 556 }
markrad 0:cdf462088d13 557
markrad 0:cdf462088d13 558 const mbedtls_md_info_t mbedtls_sha512_info = {
markrad 0:cdf462088d13 559 MBEDTLS_MD_SHA512,
markrad 0:cdf462088d13 560 "SHA512",
markrad 0:cdf462088d13 561 64,
markrad 0:cdf462088d13 562 128,
markrad 0:cdf462088d13 563 sha512_starts_wrap,
markrad 0:cdf462088d13 564 sha384_update_wrap,
markrad 0:cdf462088d13 565 sha384_finish_wrap,
markrad 0:cdf462088d13 566 sha512_wrap,
markrad 0:cdf462088d13 567 sha384_ctx_alloc,
markrad 0:cdf462088d13 568 sha384_ctx_free,
markrad 0:cdf462088d13 569 sha384_clone_wrap,
markrad 0:cdf462088d13 570 sha384_process_wrap,
markrad 0:cdf462088d13 571 };
markrad 0:cdf462088d13 572
markrad 0:cdf462088d13 573 #endif /* MBEDTLS_SHA512_C */
markrad 0:cdf462088d13 574
markrad 0:cdf462088d13 575 #endif /* MBEDTLS_MD_C */