123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- #line 2 "suites/helpers.function"
- /*----------------------------------------------------------------------------*/
- /* Headers */
- #include <test/macros.h>
- #include <test/helpers.h>
- #include <test/random.h>
- #include <test/psa_crypto_helpers.h>
- #include <stdlib.h>
- #if defined(MBEDTLS_PLATFORM_C)
- #include "mbedtls/platform.h"
- #else
- #include <stdio.h>
- #define mbedtls_fprintf fprintf
- #define mbedtls_snprintf snprintf
- #define mbedtls_calloc calloc
- #define mbedtls_free free
- #define mbedtls_exit exit
- #define mbedtls_time time
- #define mbedtls_time_t time_t
- #define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS
- #define MBEDTLS_EXIT_FAILURE EXIT_FAILURE
- #endif
- #if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C)
- #include "mbedtls/memory_buffer_alloc.h"
- #endif
- #if defined(MBEDTLS_CHECK_PARAMS)
- #include "mbedtls/platform_util.h"
- #include <setjmp.h>
- #endif
- #ifdef _MSC_VER
- #include <basetsd.h>
- typedef UINT8 uint8_t;
- typedef INT32 int32_t;
- typedef UINT32 uint32_t;
- #define strncasecmp _strnicmp
- #define strcasecmp _stricmp
- #else
- #include <stdint.h>
- #endif
- #include <string.h>
- #if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
- #include <unistd.h>
- #include <strings.h>
- #endif
- /* Type for Hex parameters */
- typedef struct data_tag
- {
- uint8_t * x;
- uint32_t len;
- } data_t;
- /*----------------------------------------------------------------------------*/
- /* Status and error constants */
- #define DEPENDENCY_SUPPORTED 0 /* Dependency supported by build */
- #define KEY_VALUE_MAPPING_FOUND 0 /* Integer expression found */
- #define DISPATCH_TEST_SUCCESS 0 /* Test dispatch successful */
- #define KEY_VALUE_MAPPING_NOT_FOUND -1 /* Integer expression not found */
- #define DEPENDENCY_NOT_SUPPORTED -2 /* Dependency not supported */
- #define DISPATCH_TEST_FN_NOT_FOUND -3 /* Test function not found */
- #define DISPATCH_INVALID_TEST_DATA -4 /* Invalid test parameter type.
- Only int, string, binary data
- and integer expressions are
- allowed */
- #define DISPATCH_UNSUPPORTED_SUITE -5 /* Test suite not supported by the
- build */
- /*----------------------------------------------------------------------------*/
- /* Global variables */
- #if defined(MBEDTLS_CHECK_PARAMS)
- jmp_buf jmp_tmp;
- #endif
- /*----------------------------------------------------------------------------*/
- /* Helper flags for complex dependencies */
- /* Indicates whether we expect mbedtls_entropy_init
- * to initialize some strong entropy source. */
- #if defined(MBEDTLS_TEST_NULL_ENTROPY) || \
- ( !defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES) && \
- ( !defined(MBEDTLS_NO_PLATFORM_ENTROPY) || \
- defined(MBEDTLS_HAVEGE_C) || \
- defined(MBEDTLS_ENTROPY_HARDWARE_ALT) || \
- defined(ENTROPY_NV_SEED) ) )
- #define ENTROPY_HAVE_STRONG
- #endif
- /*----------------------------------------------------------------------------*/
- /* Helper Functions */
- #if defined(MBEDTLS_PSA_CRYPTO_C)
- /** Check that no PSA Crypto key slots are in use.
- *
- * If any slots are in use, mark the current test as failed.
- *
- * \return 0 if the key store is empty, 1 otherwise.
- */
- int test_fail_if_psa_leaking( int line_no, const char *filename )
- {
- const char *msg = mbedtls_test_helper_is_psa_leaking( );
- if( msg == NULL )
- return 0;
- else
- {
- mbedtls_test_fail( msg, line_no, filename );
- return 1;
- }
- }
- #endif /* defined(MBEDTLS_PSA_CRYPTO_C) */
- #if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
- static int redirect_output( FILE* out_stream, const char* path )
- {
- int out_fd, dup_fd;
- FILE* path_stream;
- out_fd = fileno( out_stream );
- dup_fd = dup( out_fd );
- if( dup_fd == -1 )
- {
- return( -1 );
- }
- path_stream = fopen( path, "w" );
- if( path_stream == NULL )
- {
- close( dup_fd );
- return( -1 );
- }
- fflush( out_stream );
- if( dup2( fileno( path_stream ), out_fd ) == -1 )
- {
- close( dup_fd );
- fclose( path_stream );
- return( -1 );
- }
- fclose( path_stream );
- return( dup_fd );
- }
- static int restore_output( FILE* out_stream, int dup_fd )
- {
- int out_fd = fileno( out_stream );
- fflush( out_stream );
- if( dup2( dup_fd, out_fd ) == -1 )
- {
- close( out_fd );
- close( dup_fd );
- return( -1 );
- }
- close( dup_fd );
- return( 0 );
- }
- #endif /* __unix__ || __APPLE__ __MACH__ */
|