| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | #line 2 "suites/main_test.function" | 
					
						
							|  |  |  | /* | 
					
						
							|  |  |  |  * *** THIS FILE HAS BEEN MACHINE GENERATED *** | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This file has been machine generated using the script: | 
					
						
							|  |  |  |  * $generator_script | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Test file      : $test_file | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * The following files were used to create this file. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *      Main code file      : $test_main_file | 
					
						
							|  |  |  |  *      Platform code file  : $test_platform_file | 
					
						
							|  |  |  |  *      Helper file         : $test_common_helper_file | 
					
						
							|  |  |  |  *      Test suite file     : $test_case_file | 
					
						
							|  |  |  |  *      Test suite data     : $test_case_data_file | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | #if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) | 
					
						
							|  |  |  | #if !defined(_POSIX_C_SOURCE) | 
					
						
							|  |  |  | #define _POSIX_C_SOURCE 1 // for fileno() from <stdio.h> | 
					
						
							|  |  |  | #endif | 
					
						
							|  |  |  | #endif | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | /* | 
					
						
							|  |  |  |  * for arc4random_buf() from <stdlib.h> | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | #if defined(__NetBSD__) | 
					
						
							|  |  |  | #define _NETBSD_SOURCE 1 | 
					
						
							|  |  |  | #elif defined(__OpenBSD__) | 
					
						
							|  |  |  | #define _BSD_SOURCE 1 | 
					
						
							|  |  |  | #endif | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | #if !defined(MBEDTLS_CONFIG_FILE) | 
					
						
							|  |  |  | #include <mbedtls/config.h> | 
					
						
							|  |  |  | #else | 
					
						
							|  |  |  | #include MBEDTLS_CONFIG_FILE | 
					
						
							|  |  |  | #endif | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | /*----------------------------------------------------------------------------*/ | 
					
						
							|  |  |  | /* Common helper code */ | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | $test_common_helpers | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | #line $line_no "suites/main_test.function" | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | /*----------------------------------------------------------------------------*/ | 
					
						
							|  |  |  | /* Test Suite Code */ | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | #define TEST_SUITE_ACTIVE | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | $functions_code | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | #line $line_no "suites/main_test.function" | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /*----------------------------------------------------------------------------*/ | 
					
						
							|  |  |  | /* Test dispatch code */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | /** | 
					
						
							|  |  |  |  * \brief       Evaluates an expression/macro into its literal integer value. | 
					
						
							|  |  |  |  *              For optimizing space for embedded targets each expression/macro | 
					
						
							|  |  |  |  *              is identified by a unique identifier instead of string literals. | 
					
						
							|  |  |  |  *              Identifiers and evaluation code is generated by script: | 
					
						
							|  |  |  |  *              $generator_script | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * \param exp_id    Expression identifier. | 
					
						
							|  |  |  |  * \param out_value Pointer to int to hold the integer. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * \return       0 if exp_id is found. 1 otherwise. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | int get_expression( int32_t exp_id, int32_t * out_value ) | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |     int ret = KEY_VALUE_MAPPING_FOUND; | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |     (void) exp_id; | 
					
						
							|  |  |  |     (void) out_value; | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |     switch( exp_id ) | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | $expression_code | 
					
						
							|  |  |  | #line $line_no "suites/main_test.function" | 
					
						
							|  |  |  |         default: | 
					
						
							|  |  |  |            { | 
					
						
							|  |  |  |                 ret = KEY_VALUE_MAPPING_NOT_FOUND; | 
					
						
							|  |  |  |            } | 
					
						
							|  |  |  |            break; | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |     } | 
					
						
							|  |  |  |     return( ret ); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | /** | 
					
						
							|  |  |  |  * \brief       Checks if the dependency i.e. the compile flag is set. | 
					
						
							|  |  |  |  *              For optimizing space for embedded targets each dependency | 
					
						
							|  |  |  |  *              is identified by a unique identifier instead of string literals. | 
					
						
							|  |  |  |  *              Identifiers and check code is generated by script: | 
					
						
							|  |  |  |  *              $generator_script | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * \param exp_id    Dependency identifier. | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |  * \return       DEPENDENCY_SUPPORTED if set else DEPENDENCY_NOT_SUPPORTED | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |  */ | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | int dep_check( int dep_id ) | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |     int ret = DEPENDENCY_NOT_SUPPORTED; | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |     (void) dep_id; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     switch( dep_id ) | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | $dep_check_code | 
					
						
							|  |  |  | #line $line_no "suites/main_test.function" | 
					
						
							|  |  |  |         default: | 
					
						
							|  |  |  |             break; | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |     return( ret ); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | /** | 
					
						
							|  |  |  |  * \brief       Function pointer type for test function wrappers. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * \param void **   Pointer to void pointers. Represents an array of test | 
					
						
							|  |  |  |  *                  function parameters. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * \return       void | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | typedef void (*TestWrapper_t)( void ** ); | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | /** | 
					
						
							|  |  |  |  * \brief       Table of test function wrappers. Used by dispatch_test(). | 
					
						
							|  |  |  |  *              This table is populated by script: | 
					
						
							|  |  |  |  *              $generator_script | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | TestWrapper_t test_funcs[] = | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | $dispatch_code | 
					
						
							|  |  |  | #line $line_no "suites/main_test.function" | 
					
						
							|  |  |  | }; | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | /** | 
					
						
							|  |  |  |  * \brief        Execute the test function. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  *               This is a wrapper function around the test function execution | 
					
						
							|  |  |  |  *               to allow the setjmp() call used to catch any calls to the | 
					
						
							|  |  |  |  *               parameter failure callback, to be used. Calls to setjmp() | 
					
						
							|  |  |  |  *               can invalidate the state of any local auto variables. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * \param fp     Function pointer to the test function | 
					
						
							|  |  |  |  * \param params Parameters to pass | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | void execute_function_ptr(TestWrapper_t fp, void **params) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | #if defined(MBEDTLS_CHECK_PARAMS) | 
					
						
							|  |  |  |     if ( setjmp( param_fail_jmp ) == 0 ) | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |         fp( params ); | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |         /* Unexpected parameter validation error */ | 
					
						
							|  |  |  |         test_info.result = TEST_RESULT_FAILED; | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |     memset( param_fail_jmp, 0, sizeof(jmp_buf) ); | 
					
						
							|  |  |  | #else | 
					
						
							|  |  |  |     fp( params ); | 
					
						
							|  |  |  | #endif | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if defined(MBEDTLS_TEST_MUTEX_USAGE) | 
					
						
							|  |  |  |     mbedtls_test_mutex_usage_check( ); | 
					
						
							|  |  |  | #endif /* MBEDTLS_TEST_MUTEX_USAGE */ | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | /** | 
					
						
							|  |  |  |  * \brief        Dispatches test functions based on function index. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * \param exp_id    Test function index. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * \return       DISPATCH_TEST_SUCCESS if found | 
					
						
							|  |  |  |  *               DISPATCH_TEST_FN_NOT_FOUND if not found | 
					
						
							|  |  |  |  *               DISPATCH_UNSUPPORTED_SUITE if not compile time enabled. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | int dispatch_test( size_t func_idx, void ** params ) | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |     int ret = DISPATCH_TEST_SUCCESS; | 
					
						
							|  |  |  |     TestWrapper_t fp = NULL; | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |     if ( func_idx < (int)( sizeof( test_funcs ) / sizeof( TestWrapper_t ) ) ) | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |         fp = test_funcs[func_idx]; | 
					
						
							|  |  |  |         if ( fp ) | 
					
						
							|  |  |  |             execute_function_ptr(fp, params); | 
					
						
							|  |  |  |         else | 
					
						
							|  |  |  |             ret = DISPATCH_UNSUPPORTED_SUITE; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         ret = DISPATCH_TEST_FN_NOT_FOUND; | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |     return( ret ); | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | /** | 
					
						
							|  |  |  |  * \brief       Checks if test function is supported | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * \param exp_id    Test function index. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * \return       DISPATCH_TEST_SUCCESS if found | 
					
						
							|  |  |  |  *               DISPATCH_TEST_FN_NOT_FOUND if not found | 
					
						
							|  |  |  |  *               DISPATCH_UNSUPPORTED_SUITE if not compile time enabled. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | int check_test( size_t func_idx ) | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |     int ret = DISPATCH_TEST_SUCCESS; | 
					
						
							|  |  |  |     TestWrapper_t fp = NULL; | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |     if ( func_idx < (int)( sizeof(test_funcs)/sizeof( TestWrapper_t ) ) ) | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |         fp = test_funcs[func_idx]; | 
					
						
							|  |  |  |         if ( fp == NULL ) | 
					
						
							|  |  |  |             ret = DISPATCH_UNSUPPORTED_SUITE; | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |         ret = DISPATCH_TEST_FN_NOT_FOUND; | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |     return( ret ); | 
					
						
							|  |  |  | } | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | $platform_code | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | #line $line_no "suites/main_test.function" | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | /*----------------------------------------------------------------------------*/ | 
					
						
							|  |  |  | /* Main Test code */ | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | /** | 
					
						
							|  |  |  |  * \brief       Program main. Invokes platform specific execute_tests(). | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * \param argc      Command line arguments count. | 
					
						
							|  |  |  |  * \param argv      Array of command line arguments. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * \return       Exit code. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | int main( int argc, const char *argv[] ) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     int ret = platform_setup(); | 
					
						
							|  |  |  |     if( ret != 0 ) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         mbedtls_fprintf( stderr, | 
					
						
							|  |  |  |                          "FATAL: Failed to initialize platform - error %d\n", | 
					
						
							|  |  |  |                          ret ); | 
					
						
							|  |  |  |         return( -1 ); | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |     ret = execute_tests( argc, argv ); | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  |     platform_teardown(); | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  |     return( ret ); | 
					
						
							| 
									
										
										
										
											2020-12-28 15:15:37 +00:00
										 |  |  | } | 
					
						
							| 
									
										
										
										
											2021-03-06 01:41:47 +01:00
										 |  |  | 
 |