1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
#line 2 "suites/helpers.function"
/*----------------------------------------------------------------------------*/
/* Headers */
#include <test/helpers.h>
#include <test/macros.h>
#include <test/random.h>
#include <test/psa_crypto_helpers.h>
#include <stdlib.h>
#if defined (MBEDTLS_ERROR_C)
#include "mbedtls/error.h"
#endif
#include "mbedtls/platform.h"
#if defined(MBEDTLS_MEMORY_BUFFER_ALLOC_C)
#include "mbedtls/memory_buffer_alloc.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__)) || defined(__MINGW32__)
#include <strings.h>
#endif
#if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__))
#include <unistd.h>
#endif
/*----------------------------------------------------------------------------*/
/* 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 */
/*----------------------------------------------------------------------------*/
/* Helper flags for complex dependencies */
/* Indicates whether we expect mbedtls_entropy_init
* to initialize some strong entropy source. */
#if !defined(MBEDTLS_NO_DEFAULT_ENTROPY_SOURCES) && \
( !defined(MBEDTLS_NO_PLATFORM_ENTROPY) || \
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__ */
|