mbedtls ported to mbed-classic

Fork of mbedtls by Christopher Haster

Committer:
Brian Daniels
Date:
Thu Apr 07 11:11:18 2016 +0100
Revision:
4:bef26f687287
Adding ported selftest test case

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Brian Daniels 4:bef26f687287 1 /*
Brian Daniels 4:bef26f687287 2 * Self-test demonstration program
Brian Daniels 4:bef26f687287 3 *
Brian Daniels 4:bef26f687287 4 * Copyright (C) 2006-2015, ARM Limited, All Rights Reserved
Brian Daniels 4:bef26f687287 5 * SPDX-License-Identifier: Apache-2.0
Brian Daniels 4:bef26f687287 6 *
Brian Daniels 4:bef26f687287 7 * Licensed under the Apache License, Version 2.0 (the "License"); you may
Brian Daniels 4:bef26f687287 8 * not use this file except in compliance with the License.
Brian Daniels 4:bef26f687287 9 * You may obtain a copy of the License at
Brian Daniels 4:bef26f687287 10 *
Brian Daniels 4:bef26f687287 11 * http://www.apache.org/licenses/LICENSE-2.0
Brian Daniels 4:bef26f687287 12 *
Brian Daniels 4:bef26f687287 13 * Unless required by applicable law or agreed to in writing, software
Brian Daniels 4:bef26f687287 14 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
Brian Daniels 4:bef26f687287 15 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
Brian Daniels 4:bef26f687287 16 * See the License for the specific language governing permissions and
Brian Daniels 4:bef26f687287 17 * limitations under the License.
Brian Daniels 4:bef26f687287 18 *
Brian Daniels 4:bef26f687287 19 * This file is part of mbed TLS (https://tls.mbed.org)
Brian Daniels 4:bef26f687287 20 */
Brian Daniels 4:bef26f687287 21
Brian Daniels 4:bef26f687287 22 #if !defined(POLARSSL_CONFIG_FILE)
Brian Daniels 4:bef26f687287 23 #include "mbedtls/config.h"
Brian Daniels 4:bef26f687287 24 #else
Brian Daniels 4:bef26f687287 25 #include MBEDTLS_CONFIG_FILE
Brian Daniels 4:bef26f687287 26 #endif
Brian Daniels 4:bef26f687287 27
Brian Daniels 4:bef26f687287 28 #include "mbedtls/entropy.h"
Brian Daniels 4:bef26f687287 29 #include "mbedtls/hmac_drbg.h"
Brian Daniels 4:bef26f687287 30 #include "mbedtls/ctr_drbg.h"
Brian Daniels 4:bef26f687287 31 #include "mbedtls/dhm.h"
Brian Daniels 4:bef26f687287 32 #include "mbedtls/gcm.h"
Brian Daniels 4:bef26f687287 33 #include "mbedtls/ccm.h"
Brian Daniels 4:bef26f687287 34 #include "mbedtls/md2.h"
Brian Daniels 4:bef26f687287 35 #include "mbedtls/md4.h"
Brian Daniels 4:bef26f687287 36 #include "mbedtls/md5.h"
Brian Daniels 4:bef26f687287 37 #include "mbedtls/ripemd160.h"
Brian Daniels 4:bef26f687287 38 #include "mbedtls/sha1.h"
Brian Daniels 4:bef26f687287 39 #include "mbedtls/sha256.h"
Brian Daniels 4:bef26f687287 40 #include "mbedtls/sha512.h"
Brian Daniels 4:bef26f687287 41 #include "mbedtls/arc4.h"
Brian Daniels 4:bef26f687287 42 #include "mbedtls/des.h"
Brian Daniels 4:bef26f687287 43 #include "mbedtls/aes.h"
Brian Daniels 4:bef26f687287 44 #include "mbedtls/camellia.h"
Brian Daniels 4:bef26f687287 45 #include "mbedtls/base64.h"
Brian Daniels 4:bef26f687287 46 #include "mbedtls/bignum.h"
Brian Daniels 4:bef26f687287 47 #include "mbedtls/rsa.h"
Brian Daniels 4:bef26f687287 48 #include "mbedtls/x509.h"
Brian Daniels 4:bef26f687287 49 #include "mbedtls/xtea.h"
Brian Daniels 4:bef26f687287 50 #include "mbedtls/pkcs5.h"
Brian Daniels 4:bef26f687287 51 #include "mbedtls/ecp.h"
Brian Daniels 4:bef26f687287 52
Brian Daniels 4:bef26f687287 53 #include <stdio.h>
Brian Daniels 4:bef26f687287 54 #include <string.h>
Brian Daniels 4:bef26f687287 55
Brian Daniels 4:bef26f687287 56 #if defined(MBEDTLS_PLATFORM_C)
Brian Daniels 4:bef26f687287 57 #include "mbedtls/platform.h"
Brian Daniels 4:bef26f687287 58 #else
Brian Daniels 4:bef26f687287 59 #include <stdio.h>
Brian Daniels 4:bef26f687287 60 #define mbedtls_printf printf
Brian Daniels 4:bef26f687287 61 #endif
Brian Daniels 4:bef26f687287 62
Brian Daniels 4:bef26f687287 63 #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C)
Brian Daniels 4:bef26f687287 64 #include "mbedtls/memory_buffer_alloc.h"
Brian Daniels 4:bef26f687287 65 #endif
Brian Daniels 4:bef26f687287 66
Brian Daniels 4:bef26f687287 67 int selftest( int argc, char *argv[] )
Brian Daniels 4:bef26f687287 68 {
Brian Daniels 4:bef26f687287 69 int ret = 0, v;
Brian Daniels 4:bef26f687287 70 #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C)
Brian Daniels 4:bef26f687287 71 unsigned char buf[1000000];
Brian Daniels 4:bef26f687287 72 #endif
Brian Daniels 4:bef26f687287 73
Brian Daniels 4:bef26f687287 74 if( argc == 2 && strcmp( argv[1], "-quiet" ) == 0 )
Brian Daniels 4:bef26f687287 75 v = 0;
Brian Daniels 4:bef26f687287 76 else
Brian Daniels 4:bef26f687287 77 {
Brian Daniels 4:bef26f687287 78 v = 1;
Brian Daniels 4:bef26f687287 79 mbedtls_printf( "\n" );
Brian Daniels 4:bef26f687287 80 }
Brian Daniels 4:bef26f687287 81
Brian Daniels 4:bef26f687287 82 #if defined(MBEDTLS_SELF_TEST)
Brian Daniels 4:bef26f687287 83
Brian Daniels 4:bef26f687287 84 #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C)
Brian Daniels 4:bef26f687287 85 mbedtls_memory_buffer_alloc_init( buf, sizeof(buf) );
Brian Daniels 4:bef26f687287 86 #endif
Brian Daniels 4:bef26f687287 87
Brian Daniels 4:bef26f687287 88 #if defined(MBEDTLS_MD2_C)
Brian Daniels 4:bef26f687287 89 if( ( ret = mbedtls_md2_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 90 return( ret );
Brian Daniels 4:bef26f687287 91 #endif
Brian Daniels 4:bef26f687287 92
Brian Daniels 4:bef26f687287 93 #if defined(MBEDTLS_MD4_C)
Brian Daniels 4:bef26f687287 94 if( ( ret = mbedtls_md4_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 95 return( ret );
Brian Daniels 4:bef26f687287 96 #endif
Brian Daniels 4:bef26f687287 97
Brian Daniels 4:bef26f687287 98 #if defined(MBEDTLS_MD5_C)
Brian Daniels 4:bef26f687287 99 if( ( ret = mbedtls_md5_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 100 return( ret );
Brian Daniels 4:bef26f687287 101 #endif
Brian Daniels 4:bef26f687287 102
Brian Daniels 4:bef26f687287 103 #if defined(MBEDTLS_RIPEMD160_C)
Brian Daniels 4:bef26f687287 104 if( ( ret = mbedtls_ripemd160_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 105 return( ret );
Brian Daniels 4:bef26f687287 106 #endif
Brian Daniels 4:bef26f687287 107
Brian Daniels 4:bef26f687287 108 #if defined(MBEDTLS_SHA1_C)
Brian Daniels 4:bef26f687287 109 if( ( ret = mbedtls_sha1_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 110 return( ret );
Brian Daniels 4:bef26f687287 111 #endif
Brian Daniels 4:bef26f687287 112
Brian Daniels 4:bef26f687287 113 #if defined(MBEDTLS_SHA256_C)
Brian Daniels 4:bef26f687287 114 if( ( ret = mbedtls_sha256_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 115 return( ret );
Brian Daniels 4:bef26f687287 116 #endif
Brian Daniels 4:bef26f687287 117
Brian Daniels 4:bef26f687287 118 #if defined(MBEDTLS_SHA512_C)
Brian Daniels 4:bef26f687287 119 if( ( ret = mbedtls_sha512_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 120 return( ret );
Brian Daniels 4:bef26f687287 121 #endif
Brian Daniels 4:bef26f687287 122
Brian Daniels 4:bef26f687287 123 #if defined(MBEDTLS_ARC4_C)
Brian Daniels 4:bef26f687287 124 if( ( ret = mbedtls_arc4_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 125 return( ret );
Brian Daniels 4:bef26f687287 126 #endif
Brian Daniels 4:bef26f687287 127
Brian Daniels 4:bef26f687287 128 #if defined(MBEDTLS_DES_C)
Brian Daniels 4:bef26f687287 129 if( ( ret = mbedtls_des_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 130 return( ret );
Brian Daniels 4:bef26f687287 131 #endif
Brian Daniels 4:bef26f687287 132
Brian Daniels 4:bef26f687287 133 #if defined(MBEDTLS_AES_C)
Brian Daniels 4:bef26f687287 134 if( ( ret = mbedtls_aes_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 135 return( ret );
Brian Daniels 4:bef26f687287 136 #endif
Brian Daniels 4:bef26f687287 137
Brian Daniels 4:bef26f687287 138 #if defined(MBEDTLS_GCM_C) && defined(MBEDTLS_AES_C)
Brian Daniels 4:bef26f687287 139 if( ( ret = mbedtls_gcm_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 140 return( ret );
Brian Daniels 4:bef26f687287 141 #endif
Brian Daniels 4:bef26f687287 142
Brian Daniels 4:bef26f687287 143 #if defined(MBEDTLS_CCM_C) && defined(MBEDTLS_AES_C)
Brian Daniels 4:bef26f687287 144 if( ( ret = mbedtls_ccm_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 145 return( ret );
Brian Daniels 4:bef26f687287 146 #endif
Brian Daniels 4:bef26f687287 147
Brian Daniels 4:bef26f687287 148 #if defined(MBEDTLS_BASE64_C)
Brian Daniels 4:bef26f687287 149 if( ( ret = mbedtls_base64_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 150 return( ret );
Brian Daniels 4:bef26f687287 151 #endif
Brian Daniels 4:bef26f687287 152
Brian Daniels 4:bef26f687287 153 #if defined(MBEDTLS_BIGNUM_C)
Brian Daniels 4:bef26f687287 154 if( ( ret = mbedtls_mpi_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 155 return( ret );
Brian Daniels 4:bef26f687287 156 #endif
Brian Daniels 4:bef26f687287 157
Brian Daniels 4:bef26f687287 158 #if defined(MBEDTLS_RSA_C)
Brian Daniels 4:bef26f687287 159 if( ( ret = mbedtls_rsa_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 160 return( ret );
Brian Daniels 4:bef26f687287 161 #endif
Brian Daniels 4:bef26f687287 162
Brian Daniels 4:bef26f687287 163 #if defined(MBEDTLS_X509_USE_C)
Brian Daniels 4:bef26f687287 164 if( ( ret = mbedtls_x509_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 165 return( ret );
Brian Daniels 4:bef26f687287 166 #endif
Brian Daniels 4:bef26f687287 167
Brian Daniels 4:bef26f687287 168 #if defined(MBEDTLS_XTEA_C)
Brian Daniels 4:bef26f687287 169 if( ( ret = mbedtls_xtea_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 170 return( ret );
Brian Daniels 4:bef26f687287 171 #endif
Brian Daniels 4:bef26f687287 172
Brian Daniels 4:bef26f687287 173 #if defined(MBEDTLS_CAMELLIA_C)
Brian Daniels 4:bef26f687287 174 if( ( ret = mbedtls_camellia_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 175 return( ret );
Brian Daniels 4:bef26f687287 176 #endif
Brian Daniels 4:bef26f687287 177
Brian Daniels 4:bef26f687287 178 #if defined(MBEDTLS_CTR_DRBG_C)
Brian Daniels 4:bef26f687287 179 if( ( ret = mbedtls_ctr_drbg_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 180 return( ret );
Brian Daniels 4:bef26f687287 181 #endif
Brian Daniels 4:bef26f687287 182
Brian Daniels 4:bef26f687287 183 #if defined(MBEDTLS_HMAC_DRBG_C)
Brian Daniels 4:bef26f687287 184 if( ( ret = mbedtls_hmac_drbg_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 185 return( ret );
Brian Daniels 4:bef26f687287 186 #endif
Brian Daniels 4:bef26f687287 187
Brian Daniels 4:bef26f687287 188 #if defined(MBEDTLS_ECP_C)
Brian Daniels 4:bef26f687287 189 if( ( ret = mbedtls_ecp_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 190 return( ret );
Brian Daniels 4:bef26f687287 191 #endif
Brian Daniels 4:bef26f687287 192
Brian Daniels 4:bef26f687287 193 #if defined(MBEDTLS_DHM_C)
Brian Daniels 4:bef26f687287 194 if( ( ret = mbedtls_dhm_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 195 return( ret );
Brian Daniels 4:bef26f687287 196 #endif
Brian Daniels 4:bef26f687287 197
Brian Daniels 4:bef26f687287 198 #if defined(MBEDTLS_ENTROPY_C)
Brian Daniels 4:bef26f687287 199 if( ( ret = mbedtls_entropy_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 200 return( ret );
Brian Daniels 4:bef26f687287 201 #endif
Brian Daniels 4:bef26f687287 202
Brian Daniels 4:bef26f687287 203 #if defined(MBEDTLS_PKCS5_C)
Brian Daniels 4:bef26f687287 204 if( ( ret = mbedtls_pkcs5_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 205 return( ret );
Brian Daniels 4:bef26f687287 206 #endif
Brian Daniels 4:bef26f687287 207
Brian Daniels 4:bef26f687287 208 #if defined(MBEDTLS_TIMING_C)
Brian Daniels 4:bef26f687287 209 if( ( ret = mbedtls_timing_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 210 return( ret );
Brian Daniels 4:bef26f687287 211 #endif
Brian Daniels 4:bef26f687287 212
Brian Daniels 4:bef26f687287 213 #else
Brian Daniels 4:bef26f687287 214 mbedtls_printf( " POLARSSL_SELF_TEST not defined.\n" );
Brian Daniels 4:bef26f687287 215 #endif
Brian Daniels 4:bef26f687287 216
Brian Daniels 4:bef26f687287 217 if( v != 0 )
Brian Daniels 4:bef26f687287 218 {
Brian Daniels 4:bef26f687287 219 #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C) && defined(MBEDTLS_MEMORY_DEBUG)
Brian Daniels 4:bef26f687287 220 mbedtls_memory_buffer_alloc_status();
Brian Daniels 4:bef26f687287 221 #endif
Brian Daniels 4:bef26f687287 222 }
Brian Daniels 4:bef26f687287 223
Brian Daniels 4:bef26f687287 224 #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C)
Brian Daniels 4:bef26f687287 225 mbedtls_memory_buffer_alloc_free();
Brian Daniels 4:bef26f687287 226
Brian Daniels 4:bef26f687287 227 if( ( ret = mbedtls_memory_buffer_alloc_self_test( v ) ) != 0 )
Brian Daniels 4:bef26f687287 228 return( ret );
Brian Daniels 4:bef26f687287 229 #endif
Brian Daniels 4:bef26f687287 230
Brian Daniels 4:bef26f687287 231 if( v != 0 )
Brian Daniels 4:bef26f687287 232 {
Brian Daniels 4:bef26f687287 233 mbedtls_printf( " [ All tests passed ]\n\n" );
Brian Daniels 4:bef26f687287 234 #if defined(_WIN32)
Brian Daniels 4:bef26f687287 235 mbedtls_printf( " Press Enter to exit this program.\n" );
Brian Daniels 4:bef26f687287 236 fflush( stdout ); getchar();
Brian Daniels 4:bef26f687287 237 #endif
Brian Daniels 4:bef26f687287 238 }
Brian Daniels 4:bef26f687287 239
Brian Daniels 4:bef26f687287 240 return( ret );
Brian Daniels 4:bef26f687287 241 }
Brian Daniels 4:bef26f687287 242
Brian Daniels 4:bef26f687287 243 #if defined(TARGET_LIKE_MBED)
Brian Daniels 4:bef26f687287 244
Brian Daniels 4:bef26f687287 245 #include "test_env.h"
Brian Daniels 4:bef26f687287 246
Brian Daniels 4:bef26f687287 247 int main() {
Brian Daniels 4:bef26f687287 248 greentea_send_kv("description", "mbed TLS selftest program");
Brian Daniels 4:bef26f687287 249 GREENTEA_SETUP(40, "default_auto");
Brian Daniels 4:bef26f687287 250 GREENTEA_TESTSUITE_RESULT(selftest(0, NULL) == 0);
Brian Daniels 4:bef26f687287 251 }
Brian Daniels 4:bef26f687287 252
Brian Daniels 4:bef26f687287 253 #else
Brian Daniels 4:bef26f687287 254
Brian Daniels 4:bef26f687287 255 int main() {
Brian Daniels 4:bef26f687287 256 return selftest(0, NULL);
Brian Daniels 4:bef26f687287 257 }
Brian Daniels 4:bef26f687287 258
Brian Daniels 4:bef26f687287 259 #endif