Dependents:   blinky_max32630fthr

Committer:
switches
Date:
Fri Dec 16 16:27:57 2016 +0000
Revision:
3:1198227e6421
Parent:
0:5c4d7b2438d3
Changed ADC scale for MAX32625 platforms to 1.2V full scale to match MAX32630 platforms

Who changed what in which revision?

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