I added functionality to get the RSSI, BER, and Cell Neighbor for reporting connection issues to M2X

Dependencies:   WncControllerK64F

Committer:
JMF
Date:
Thu Nov 17 16:13:29 2016 +0000
Revision:
18:198e9b0acf11
Parent:
12:0071cb144c7a
Updates to mbed os resulted in mutex.h going away and rtos.h needed to be used; This fixes the Mutex typedef failure.  Also cast data buffers from 'char *' to (const std::uint8_t*) to conform with Fred's changes in WncController

Who changed what in which revision?

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