1#line 2 "suites/main_test.function" 2/* 3 * *** THIS FILE HAS BEEN MACHINE GENERATED *** 4 * 5 * This file has been machine generated using the script: 6 * __MBEDTLS_TEST_TEMPLATE__GENERATOR_SCRIPT 7 * 8 * Test file : __MBEDTLS_TEST_TEMPLATE__TEST_FILE 9 * 10 * The following files were used to create this file. 11 * 12 * Main code file : __MBEDTLS_TEST_TEMPLATE__TEST_MAIN_FILE 13 * Platform code file : __MBEDTLS_TEST_TEMPLATE__TEST_PLATFORM_FILE 14 * Helper file : __MBEDTLS_TEST_TEMPLATE__TEST_COMMON_HELPER_FILE 15 * Test suite file : __MBEDTLS_TEST_TEMPLATE__TEST_CASE_FILE 16 * Test suite data : __MBEDTLS_TEST_TEMPLATE__TEST_CASE_DATA_FILE 17 * 18 */ 19 20#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) 21#if !defined(_POSIX_C_SOURCE) 22#define _POSIX_C_SOURCE 200112L // for fileno() from <stdio.h> 23#endif 24#endif 25 26#include "mbedtls/build_info.h" 27 28/* Test code may use deprecated identifiers only if the preprocessor symbol 29 * MBEDTLS_TEST_DEPRECATED is defined. When building tests, set 30 * MBEDTLS_TEST_DEPRECATED explicitly if MBEDTLS_DEPRECATED_WARNING is 31 * enabled but the corresponding warnings are not treated as errors. 32 */ 33#if !defined(MBEDTLS_DEPRECATED_REMOVED) && !defined(MBEDTLS_DEPRECATED_WARNING) 34#define MBEDTLS_TEST_DEPRECATED 35#endif 36 37/*----------------------------------------------------------------------------*/ 38/* Common helper code */ 39 40__MBEDTLS_TEST_TEMPLATE__TEST_COMMON_HELPERS 41 42#line __MBEDTLS_TEST_TEMPLATE__LINE_NO "suites/main_test.function" 43 44 45/*----------------------------------------------------------------------------*/ 46/* Test Suite Code */ 47 48 49#define TEST_SUITE_ACTIVE 50 51__MBEDTLS_TEST_TEMPLATE__FUNCTIONS_CODE 52 53#line __MBEDTLS_TEST_TEMPLATE__LINE_NO "suites/main_test.function" 54 55 56/*----------------------------------------------------------------------------*/ 57/* Test dispatch code */ 58 59 60/** 61 * \brief Evaluates an expression/macro into its literal integer value. 62 * For optimizing space for embedded targets each expression/macro 63 * is identified by a unique identifier instead of string literals. 64 * Identifiers and evaluation code is generated by script: 65 * __MBEDTLS_TEST_TEMPLATE__GENERATOR_SCRIPT 66 * 67 * \param exp_id Expression identifier. 68 * \param out_value Pointer to int to hold the integer. 69 * 70 * \return 0 if exp_id is found. 1 otherwise. 71 */ 72int get_expression( int32_t exp_id, int32_t * out_value ) 73{ 74 int ret = KEY_VALUE_MAPPING_FOUND; 75 76 (void) exp_id; 77 (void) out_value; 78 79 switch( exp_id ) 80 { 81__MBEDTLS_TEST_TEMPLATE__EXPRESSION_CODE 82#line __MBEDTLS_TEST_TEMPLATE__LINE_NO "suites/main_test.function" 83 default: 84 { 85 ret = KEY_VALUE_MAPPING_NOT_FOUND; 86 } 87 break; 88 } 89 return( ret ); 90} 91 92 93/** 94 * \brief Checks if the dependency i.e. the compile flag is set. 95 * For optimizing space for embedded targets each dependency 96 * is identified by a unique identifier instead of string literals. 97 * Identifiers and check code is generated by script: 98 * __MBEDTLS_TEST_TEMPLATE__GENERATOR_SCRIPT 99 * 100 * \param dep_id Dependency identifier. 101 * 102 * \return DEPENDENCY_SUPPORTED if set else DEPENDENCY_NOT_SUPPORTED 103 */ 104int dep_check( int dep_id ) 105{ 106 int ret = DEPENDENCY_NOT_SUPPORTED; 107 108 (void) dep_id; 109 110 switch( dep_id ) 111 { 112__MBEDTLS_TEST_TEMPLATE__DEP_CHECK_CODE 113#line __MBEDTLS_TEST_TEMPLATE__LINE_NO "suites/main_test.function" 114 default: 115 break; 116 } 117 return( ret ); 118} 119 120 121/** 122 * \brief Function pointer type for test function wrappers. 123 * 124 * A test function wrapper decodes the parameters and passes them to the 125 * underlying test function. Both the wrapper and the underlying function 126 * return void. Test wrappers assume that they are passed a suitable 127 * parameter array and do not perform any error detection. 128 * 129 * \param param_array The array of parameters. Each element is a `void *` 130 * which the wrapper casts to the correct type and 131 * dereferences. Each wrapper function hard-codes the 132 * number and types of the parameters. 133 */ 134typedef void (*TestWrapper_t)( void **param_array ); 135 136 137/** 138 * \brief Table of test function wrappers. Used by dispatch_test(). 139 * This table is populated by script: 140 * __MBEDTLS_TEST_TEMPLATE__GENERATOR_SCRIPT 141 * 142 */ 143TestWrapper_t test_funcs[] = 144{ 145__MBEDTLS_TEST_TEMPLATE__DISPATCH_CODE 146#line __MBEDTLS_TEST_TEMPLATE__LINE_NO "suites/main_test.function" 147}; 148 149/** 150 * \brief Dispatches test functions based on function index. 151 * 152 * \param func_idx Test function index. 153 * \param params The array of parameters to pass to the test function. 154 * It will be decoded by the #TestWrapper_t wrapper function. 155 * 156 * \return DISPATCH_TEST_SUCCESS if found 157 * DISPATCH_TEST_FN_NOT_FOUND if not found 158 * DISPATCH_UNSUPPORTED_SUITE if not compile time enabled. 159 */ 160int dispatch_test( size_t func_idx, void ** params ) 161{ 162 int ret = DISPATCH_TEST_SUCCESS; 163 TestWrapper_t fp = NULL; 164 165 if ( func_idx < (int)( sizeof( test_funcs ) / sizeof( TestWrapper_t ) ) ) 166 { 167 fp = test_funcs[func_idx]; 168 if ( fp ) 169 { 170 #if defined(MBEDTLS_PSA_CRYPTO_EXTERNAL_RNG) 171 mbedtls_test_enable_insecure_external_rng( ); 172 #endif 173 174 fp( params ); 175 176 #if defined(MBEDTLS_TEST_MUTEX_USAGE) 177 mbedtls_test_mutex_usage_check( ); 178 #endif /* MBEDTLS_TEST_MUTEX_USAGE */ 179 } 180 else 181 ret = DISPATCH_UNSUPPORTED_SUITE; 182 } 183 else 184 { 185 ret = DISPATCH_TEST_FN_NOT_FOUND; 186 } 187 188 return( ret ); 189} 190 191 192/** 193 * \brief Checks if test function is supported in this build-time 194 * configuration. 195 * 196 * \param func_idx Test function index. 197 * 198 * \return DISPATCH_TEST_SUCCESS if found 199 * DISPATCH_TEST_FN_NOT_FOUND if not found 200 * DISPATCH_UNSUPPORTED_SUITE if not compile time enabled. 201 */ 202int check_test( size_t func_idx ) 203{ 204 int ret = DISPATCH_TEST_SUCCESS; 205 TestWrapper_t fp = NULL; 206 207 if ( func_idx < (int)( sizeof(test_funcs)/sizeof( TestWrapper_t ) ) ) 208 { 209 fp = test_funcs[func_idx]; 210 if ( fp == NULL ) 211 ret = DISPATCH_UNSUPPORTED_SUITE; 212 } 213 else 214 { 215 ret = DISPATCH_TEST_FN_NOT_FOUND; 216 } 217 218 return( ret ); 219} 220 221 222__MBEDTLS_TEST_TEMPLATE__PLATFORM_CODE 223 224#line __MBEDTLS_TEST_TEMPLATE__LINE_NO "suites/main_test.function" 225 226/*----------------------------------------------------------------------------*/ 227/* Main Test code */ 228 229 230/** 231 * \brief Program main. Invokes platform specific execute_tests(). 232 * 233 * \param argc Command line arguments count. 234 * \param argv Array of command line arguments. 235 * 236 * \return Exit code. 237 */ 238int main( int argc, const char *argv[] ) 239{ 240#if defined(MBEDTLS_TEST_HOOKS) 241 extern void (*mbedtls_test_hook_test_fail)( const char * test, int line, const char * file ); 242 mbedtls_test_hook_test_fail = &mbedtls_test_fail; 243#if defined(MBEDTLS_ERROR_C) 244 mbedtls_test_hook_error_add = &mbedtls_test_err_add_check; 245#endif 246#endif 247 248 int ret = mbedtls_test_platform_setup(); 249 if( ret != 0 ) 250 { 251 mbedtls_fprintf( stderr, 252 "FATAL: Failed to initialize platform - error %d\n", 253 ret ); 254 return( -1 ); 255 } 256 257 ret = execute_tests( argc, argv ); 258 mbedtls_test_platform_teardown(); 259 return( ret ); 260} 261