Merge branch 'development'
This commit is contained in:
commit
e4a46f696f
29 changed files with 268 additions and 91 deletions
10
ChangeLog
10
ChangeLog
|
@ -12,6 +12,10 @@ Security
|
||||||
mbedtls_rsa_rsaes_oaep_decrypt. It is not triggerable remotely in
|
mbedtls_rsa_rsaes_oaep_decrypt. It is not triggerable remotely in
|
||||||
SSL/TLS.
|
SSL/TLS.
|
||||||
|
|
||||||
|
Features
|
||||||
|
* Support for platform abstraction of the standard C library time()
|
||||||
|
function.
|
||||||
|
|
||||||
Bugfix
|
Bugfix
|
||||||
* Fix bug in mbedtls_mpi_add_mpi() that caused wrong results when the three
|
* Fix bug in mbedtls_mpi_add_mpi() that caused wrong results when the three
|
||||||
arguments where the same (in-place doubling). Found and fixed by Janos
|
arguments where the same (in-place doubling). Found and fixed by Janos
|
||||||
|
@ -29,12 +33,16 @@ Bugfix
|
||||||
* Fix issue that caused a hang when generating RSA keys of odd bitlength
|
* Fix issue that caused a hang when generating RSA keys of odd bitlength
|
||||||
* Fix bug in mbedtls_rsa_rsaes_pkcs1_v15_encrypt that made null pointer
|
* Fix bug in mbedtls_rsa_rsaes_pkcs1_v15_encrypt that made null pointer
|
||||||
dereference possible.
|
dereference possible.
|
||||||
|
* Fix issue that caused a crash if invalid curves were passed to
|
||||||
|
mbedtls_ssl_conf_curves. #373
|
||||||
|
|
||||||
Changes
|
Changes
|
||||||
* On ARM platforms, when compiling with -O0 with GCC, Clang or armcc5,
|
* On ARM platforms, when compiling with -O0 with GCC, Clang or armcc5,
|
||||||
don't use the optimized assembly for bignum multiplication. This removes
|
don't use the optimized assembly for bignum multiplication. This removes
|
||||||
the need to pass -fomit-frame-pointer to avoid a build error with -O0.
|
the need to pass -fomit-frame-pointer to avoid a build error with -O0.
|
||||||
* Disabled SSLv3 in the default configuration.
|
* Disabled SSLv3 in the default configuration.
|
||||||
|
* Optimized mbedtls_mpi_zeroize() for MPI integer size. (Fix by Alexey
|
||||||
|
Skalozub).
|
||||||
|
|
||||||
= mbed TLS 2.2.1 released 2016-01-05
|
= mbed TLS 2.2.1 released 2016-01-05
|
||||||
|
|
||||||
|
|
|
@ -152,6 +152,7 @@
|
||||||
* platform function
|
* platform function
|
||||||
*/
|
*/
|
||||||
//#define MBEDTLS_PLATFORM_EXIT_ALT
|
//#define MBEDTLS_PLATFORM_EXIT_ALT
|
||||||
|
//#define MBEDTLS_PLATFORM_TIME_ALT
|
||||||
//#define MBEDTLS_PLATFORM_FPRINTF_ALT
|
//#define MBEDTLS_PLATFORM_FPRINTF_ALT
|
||||||
//#define MBEDTLS_PLATFORM_PRINTF_ALT
|
//#define MBEDTLS_PLATFORM_PRINTF_ALT
|
||||||
//#define MBEDTLS_PLATFORM_SNPRINTF_ALT
|
//#define MBEDTLS_PLATFORM_SNPRINTF_ALT
|
||||||
|
@ -2465,6 +2466,7 @@
|
||||||
//#define MBEDTLS_PLATFORM_STD_CALLOC calloc /**< Default allocator to use, can be undefined */
|
//#define MBEDTLS_PLATFORM_STD_CALLOC calloc /**< Default allocator to use, can be undefined */
|
||||||
//#define MBEDTLS_PLATFORM_STD_FREE free /**< Default free to use, can be undefined */
|
//#define MBEDTLS_PLATFORM_STD_FREE free /**< Default free to use, can be undefined */
|
||||||
//#define MBEDTLS_PLATFORM_STD_EXIT exit /**< Default exit to use, can be undefined */
|
//#define MBEDTLS_PLATFORM_STD_EXIT exit /**< Default exit to use, can be undefined */
|
||||||
|
//#define MBEDTLS_PLATFORM_STD_TIME time /**< Default time to use, can be undefined */
|
||||||
//#define MBEDTLS_PLATFORM_STD_FPRINTF fprintf /**< Default fprintf to use, can be undefined */
|
//#define MBEDTLS_PLATFORM_STD_FPRINTF fprintf /**< Default fprintf to use, can be undefined */
|
||||||
//#define MBEDTLS_PLATFORM_STD_PRINTF printf /**< Default printf to use, can be undefined */
|
//#define MBEDTLS_PLATFORM_STD_PRINTF printf /**< Default printf to use, can be undefined */
|
||||||
/* Note: your snprintf must correclty zero-terminate the buffer! */
|
/* Note: your snprintf must correclty zero-terminate the buffer! */
|
||||||
|
@ -2477,6 +2479,8 @@
|
||||||
//#define MBEDTLS_PLATFORM_CALLOC_MACRO calloc /**< Default allocator macro to use, can be undefined */
|
//#define MBEDTLS_PLATFORM_CALLOC_MACRO calloc /**< Default allocator macro to use, can be undefined */
|
||||||
//#define MBEDTLS_PLATFORM_FREE_MACRO free /**< Default free macro to use, can be undefined */
|
//#define MBEDTLS_PLATFORM_FREE_MACRO free /**< Default free macro to use, can be undefined */
|
||||||
//#define MBEDTLS_PLATFORM_EXIT_MACRO exit /**< Default exit macro to use, can be undefined */
|
//#define MBEDTLS_PLATFORM_EXIT_MACRO exit /**< Default exit macro to use, can be undefined */
|
||||||
|
//#define MBEDTLS_PLATFORM_TIME_MACRO time /**< Default time macro to use, can be undefined */
|
||||||
|
//#define MBEDTLS_PLATFORM_TIME_TYPE_MACRO time_t /**< Default time macro to use, can be undefined */
|
||||||
//#define MBEDTLS_PLATFORM_FPRINTF_MACRO fprintf /**< Default fprintf macro to use, can be undefined */
|
//#define MBEDTLS_PLATFORM_FPRINTF_MACRO fprintf /**< Default fprintf macro to use, can be undefined */
|
||||||
//#define MBEDTLS_PLATFORM_PRINTF_MACRO printf /**< Default printf macro to use, can be undefined */
|
//#define MBEDTLS_PLATFORM_PRINTF_MACRO printf /**< Default printf macro to use, can be undefined */
|
||||||
/* Note: your snprintf must correclty zero-terminate the buffer! */
|
/* Note: your snprintf must correclty zero-terminate the buffer! */
|
||||||
|
|
|
@ -44,6 +44,7 @@ extern "C" {
|
||||||
#if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS)
|
#if !defined(MBEDTLS_PLATFORM_NO_STD_FUNCTIONS)
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <time.h>
|
||||||
#if !defined(MBEDTLS_PLATFORM_STD_SNPRINTF)
|
#if !defined(MBEDTLS_PLATFORM_STD_SNPRINTF)
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
#define MBEDTLS_PLATFORM_STD_SNPRINTF mbedtls_platform_win32_snprintf /**< Default snprintf to use */
|
#define MBEDTLS_PLATFORM_STD_SNPRINTF mbedtls_platform_win32_snprintf /**< Default snprintf to use */
|
||||||
|
@ -66,6 +67,9 @@ extern "C" {
|
||||||
#if !defined(MBEDTLS_PLATFORM_STD_EXIT)
|
#if !defined(MBEDTLS_PLATFORM_STD_EXIT)
|
||||||
#define MBEDTLS_PLATFORM_STD_EXIT exit /**< Default exit to use */
|
#define MBEDTLS_PLATFORM_STD_EXIT exit /**< Default exit to use */
|
||||||
#endif
|
#endif
|
||||||
|
#if !defined(MBEDTLS_PLATFORM_STD_TIME)
|
||||||
|
#define MBEDTLS_PLATFORM_STD_TIME time /**< Default time to use */
|
||||||
|
#endif
|
||||||
#if !defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
|
#if !defined(MBEDTLS_PLATFORM_STD_EXIT_SUCCESS)
|
||||||
#define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS EXIT_SUCCESS /**< Default exit value to use */
|
#define MBEDTLS_PLATFORM_STD_EXIT_SUCCESS EXIT_SUCCESS /**< Default exit value to use */
|
||||||
#endif
|
#endif
|
||||||
|
@ -227,6 +231,37 @@ int mbedtls_platform_set_exit( void (*exit_func)( int status ) );
|
||||||
#define MBEDTLS_EXIT_FAILURE 1
|
#define MBEDTLS_EXIT_FAILURE 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The time_t datatype
|
||||||
|
*/
|
||||||
|
#if defined(MBEDTLS_PLATFORM_TIME_TYPE_MACRO)
|
||||||
|
typedef MBEDTLS_PLATFORM_TIME_TYPE_MACRO mbedtls_time_t;
|
||||||
|
#else
|
||||||
|
typedef time_t mbedtls_time_t;
|
||||||
|
#endif /* MBEDTLS_PLATFORM_TIME_TYPE_MACRO */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* The function pointers for time
|
||||||
|
*/
|
||||||
|
#if defined(MBEDTLS_PLATFORM_TIME_ALT)
|
||||||
|
extern mbedtls_time_t (*mbedtls_time)( mbedtls_time_t* time );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Set your own time function pointer
|
||||||
|
*
|
||||||
|
* \param time_func the time function implementation
|
||||||
|
*
|
||||||
|
* \return 0
|
||||||
|
*/
|
||||||
|
int mbedtls_platform_set_time( mbedtls_time_t (*time_func)( mbedtls_time_t* time ) );
|
||||||
|
#else
|
||||||
|
#if defined(MBEDTLS_PLATFORM_TIME_MACRO)
|
||||||
|
#define mbedtls_time MBEDTLS_PLATFORM_TIME_MACRO
|
||||||
|
#else
|
||||||
|
#define mbedtls_time time
|
||||||
|
#endif /* MBEDTLS_PLATFORM_TIME_MACRO */
|
||||||
|
#endif /* MBEDTLS_PLATFORM_TIME_ALT */
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -542,7 +542,7 @@ typedef struct mbedtls_ssl_flight_item mbedtls_ssl_flight_item;
|
||||||
struct mbedtls_ssl_session
|
struct mbedtls_ssl_session
|
||||||
{
|
{
|
||||||
#if defined(MBEDTLS_HAVE_TIME)
|
#if defined(MBEDTLS_HAVE_TIME)
|
||||||
time_t start; /*!< starting time */
|
mbedtls_time_t start; /*!< starting time */
|
||||||
#endif
|
#endif
|
||||||
int ciphersuite; /*!< chosen ciphersuite */
|
int ciphersuite; /*!< chosen ciphersuite */
|
||||||
int compression; /*!< chosen compression */
|
int compression; /*!< chosen compression */
|
||||||
|
|
|
@ -60,7 +60,7 @@ typedef struct mbedtls_ssl_cache_entry mbedtls_ssl_cache_entry;
|
||||||
struct mbedtls_ssl_cache_entry
|
struct mbedtls_ssl_cache_entry
|
||||||
{
|
{
|
||||||
#if defined(MBEDTLS_HAVE_TIME)
|
#if defined(MBEDTLS_HAVE_TIME)
|
||||||
time_t timestamp; /*!< entry timestamp */
|
mbedtls_time_t timestamp; /*!< entry timestamp */
|
||||||
#endif
|
#endif
|
||||||
mbedtls_ssl_session session; /*!< entry session */
|
mbedtls_ssl_session session; /*!< entry session */
|
||||||
#if defined(MBEDTLS_X509_CRT_PARSE_C)
|
#if defined(MBEDTLS_X509_CRT_PARSE_C)
|
||||||
|
|
|
@ -59,8 +59,8 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Implementation that should never be optimized out by the compiler */
|
/* Implementation that should never be optimized out by the compiler */
|
||||||
static void mbedtls_zeroize( void *v, size_t n ) {
|
static void mbedtls_mpi_zeroize( mbedtls_mpi_uint *v, size_t n ) {
|
||||||
volatile unsigned char *p = v; while( n-- ) *p++ = 0;
|
volatile mbedtls_mpi_uint *p = v; while( n-- ) *p++ = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define ciL (sizeof(mbedtls_mpi_uint)) /* chars in limb */
|
#define ciL (sizeof(mbedtls_mpi_uint)) /* chars in limb */
|
||||||
|
@ -99,7 +99,7 @@ void mbedtls_mpi_free( mbedtls_mpi *X )
|
||||||
|
|
||||||
if( X->p != NULL )
|
if( X->p != NULL )
|
||||||
{
|
{
|
||||||
mbedtls_zeroize( X->p, X->n * ciL );
|
mbedtls_mpi_zeroize( X->p, X->n );
|
||||||
mbedtls_free( X->p );
|
mbedtls_free( X->p );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -126,7 +126,7 @@ int mbedtls_mpi_grow( mbedtls_mpi *X, size_t nblimbs )
|
||||||
if( X->p != NULL )
|
if( X->p != NULL )
|
||||||
{
|
{
|
||||||
memcpy( p, X->p, X->n * ciL );
|
memcpy( p, X->p, X->n * ciL );
|
||||||
mbedtls_zeroize( X->p, X->n * ciL );
|
mbedtls_mpi_zeroize( X->p, X->n );
|
||||||
mbedtls_free( X->p );
|
mbedtls_free( X->p );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -164,7 +164,7 @@ int mbedtls_mpi_shrink( mbedtls_mpi *X, size_t nblimbs )
|
||||||
if( X->p != NULL )
|
if( X->p != NULL )
|
||||||
{
|
{
|
||||||
memcpy( p, X->p, i * ciL );
|
memcpy( p, X->p, i * ciL );
|
||||||
mbedtls_zeroize( X->p, X->n * ciL );
|
mbedtls_mpi_zeroize( X->p, X->n );
|
||||||
mbedtls_free( X->p );
|
mbedtls_free( X->p );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -27,21 +27,22 @@
|
||||||
|
|
||||||
#if defined(MBEDTLS_DEBUG_C)
|
#if defined(MBEDTLS_DEBUG_C)
|
||||||
|
|
||||||
#include "mbedtls/debug.h"
|
|
||||||
|
|
||||||
#include <stdarg.h>
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_PLATFORM_C)
|
#if defined(MBEDTLS_PLATFORM_C)
|
||||||
#include "mbedtls/platform.h"
|
#include "mbedtls/platform.h"
|
||||||
#else
|
#else
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#define mbedtls_calloc calloc
|
#define mbedtls_calloc calloc
|
||||||
#define mbedtls_free free
|
#define mbedtls_free free
|
||||||
|
#define mbedtls_time_t time_t
|
||||||
#define mbedtls_snprintf snprintf
|
#define mbedtls_snprintf snprintf
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "mbedtls/debug.h"
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \
|
#if ( defined(__ARMCC_VERSION) || defined(_MSC_VER) ) && \
|
||||||
!defined(inline) && !defined(__cplusplus)
|
!defined(inline) && !defined(__cplusplus)
|
||||||
#define inline __inline
|
#define inline __inline
|
||||||
|
|
|
@ -32,6 +32,13 @@
|
||||||
#error "This module only works on Unix and Windows, see MBEDTLS_NET_C in config.h"
|
#error "This module only works on Unix and Windows, see MBEDTLS_NET_C in config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_PLATFORM_C)
|
||||||
|
#include "mbedtls/platform.h"
|
||||||
|
#else
|
||||||
|
#include <stdlib.h>
|
||||||
|
#define mbedtls_time_t time_t
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "mbedtls/net.h"
|
#include "mbedtls/net.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@ -86,7 +93,6 @@ static int wsa_init_done = 0;
|
||||||
#define MSVC_INT_CAST
|
#define MSVC_INT_CAST
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
|
@ -190,4 +190,27 @@ int mbedtls_platform_set_exit( void (*exit_func)( int status ) )
|
||||||
}
|
}
|
||||||
#endif /* MBEDTLS_PLATFORM_EXIT_ALT */
|
#endif /* MBEDTLS_PLATFORM_EXIT_ALT */
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_PLATFORM_TIME_ALT)
|
||||||
|
#if !defined(MBEDTLS_PLATFORM_STD_TIME)
|
||||||
|
/*
|
||||||
|
* Make dummy function to prevent NULL pointer dereferences
|
||||||
|
*/
|
||||||
|
static mbedtls_time_t platform_time_uninit( mbedtls_time_t* timer )
|
||||||
|
{
|
||||||
|
((void) timer);
|
||||||
|
return( 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
#define MBEDTLS_PLATFORM_STD_TIME platform_time_uninit
|
||||||
|
#endif /* !MBEDTLS_PLATFORM_STD_TIME */
|
||||||
|
|
||||||
|
mbedtls_time_t (*mbedtls_time)( mbedtls_time_t* timer ) = MBEDTLS_PLATFORM_STD_TIME;
|
||||||
|
|
||||||
|
int mbedtls_platform_set_time( mbedtls_time_t (*time_func)( mbedtls_time_t* timer ) )
|
||||||
|
{
|
||||||
|
mbedtls_time = time_func;
|
||||||
|
return( 0 );
|
||||||
|
}
|
||||||
|
#endif /* MBEDTLS_PLATFORM_TIME_ALT */
|
||||||
|
|
||||||
#endif /* MBEDTLS_PLATFORM_C */
|
#endif /* MBEDTLS_PLATFORM_C */
|
||||||
|
|
|
@ -31,18 +31,20 @@
|
||||||
|
|
||||||
#if defined(MBEDTLS_SSL_CACHE_C)
|
#if defined(MBEDTLS_SSL_CACHE_C)
|
||||||
|
|
||||||
#include "mbedtls/ssl_cache.h"
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_PLATFORM_C)
|
#if defined(MBEDTLS_PLATFORM_C)
|
||||||
#include "mbedtls/platform.h"
|
#include "mbedtls/platform.h"
|
||||||
#else
|
#else
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#define mbedtls_calloc calloc
|
#define mbedtls_calloc calloc
|
||||||
#define mbedtls_free free
|
#define mbedtls_free free
|
||||||
|
#define mbedtls_time time
|
||||||
|
#define mbedtls_time_t time_t
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "mbedtls/ssl_cache.h"
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
void mbedtls_ssl_cache_init( mbedtls_ssl_cache_context *cache )
|
void mbedtls_ssl_cache_init( mbedtls_ssl_cache_context *cache )
|
||||||
{
|
{
|
||||||
memset( cache, 0, sizeof( mbedtls_ssl_cache_context ) );
|
memset( cache, 0, sizeof( mbedtls_ssl_cache_context ) );
|
||||||
|
@ -59,7 +61,7 @@ int mbedtls_ssl_cache_get( void *data, mbedtls_ssl_session *session )
|
||||||
{
|
{
|
||||||
int ret = 1;
|
int ret = 1;
|
||||||
#if defined(MBEDTLS_HAVE_TIME)
|
#if defined(MBEDTLS_HAVE_TIME)
|
||||||
time_t t = time( NULL );
|
mbedtls_time_t t = mbedtls_time( NULL );
|
||||||
#endif
|
#endif
|
||||||
mbedtls_ssl_cache_context *cache = (mbedtls_ssl_cache_context *) data;
|
mbedtls_ssl_cache_context *cache = (mbedtls_ssl_cache_context *) data;
|
||||||
mbedtls_ssl_cache_entry *cur, *entry;
|
mbedtls_ssl_cache_entry *cur, *entry;
|
||||||
|
@ -138,7 +140,7 @@ int mbedtls_ssl_cache_set( void *data, const mbedtls_ssl_session *session )
|
||||||
{
|
{
|
||||||
int ret = 1;
|
int ret = 1;
|
||||||
#if defined(MBEDTLS_HAVE_TIME)
|
#if defined(MBEDTLS_HAVE_TIME)
|
||||||
time_t t = time( NULL ), oldest = 0;
|
mbedtls_time_t t = time( NULL ), oldest = 0;
|
||||||
mbedtls_ssl_cache_entry *old = NULL;
|
mbedtls_ssl_cache_entry *old = NULL;
|
||||||
#endif
|
#endif
|
||||||
mbedtls_ssl_cache_context *cache = (mbedtls_ssl_cache_context *) data;
|
mbedtls_ssl_cache_context *cache = (mbedtls_ssl_cache_context *) data;
|
||||||
|
|
|
@ -29,10 +29,16 @@
|
||||||
|
|
||||||
#if defined(MBEDTLS_SSL_TLS_C)
|
#if defined(MBEDTLS_SSL_TLS_C)
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_PLATFORM_C)
|
||||||
|
#include "mbedtls/platform.h"
|
||||||
|
#else
|
||||||
|
#include <stdlib.h>
|
||||||
|
#define mbedtls_time_t time_t
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "mbedtls/ssl_ciphersuites.h"
|
#include "mbedtls/ssl_ciphersuites.h"
|
||||||
#include "mbedtls/ssl.h"
|
#include "mbedtls/ssl.h"
|
||||||
|
|
||||||
// #include <stdlib.h>
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -27,20 +27,22 @@
|
||||||
|
|
||||||
#if defined(MBEDTLS_SSL_CLI_C)
|
#if defined(MBEDTLS_SSL_CLI_C)
|
||||||
|
|
||||||
#include "mbedtls/debug.h"
|
|
||||||
#include "mbedtls/ssl.h"
|
|
||||||
#include "mbedtls/ssl_internal.h"
|
|
||||||
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_PLATFORM_C)
|
#if defined(MBEDTLS_PLATFORM_C)
|
||||||
#include "mbedtls/platform.h"
|
#include "mbedtls/platform.h"
|
||||||
#else
|
#else
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#define mbedtls_calloc calloc
|
#define mbedtls_calloc calloc
|
||||||
#define mbedtls_free free
|
#define mbedtls_free free
|
||||||
|
#define mbedtls_time time
|
||||||
|
#define mbedtls_time_t time_t
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "mbedtls/debug.h"
|
||||||
|
#include "mbedtls/ssl.h"
|
||||||
|
#include "mbedtls/ssl_internal.h"
|
||||||
|
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
#if defined(MBEDTLS_HAVE_TIME)
|
#if defined(MBEDTLS_HAVE_TIME)
|
||||||
|
@ -270,6 +272,12 @@ static void ssl_write_supported_elliptic_curves_ext( mbedtls_ssl_context *ssl,
|
||||||
for( info = mbedtls_ecp_curve_list(); info->grp_id != MBEDTLS_ECP_DP_NONE; info++ )
|
for( info = mbedtls_ecp_curve_list(); info->grp_id != MBEDTLS_ECP_DP_NONE; info++ )
|
||||||
{
|
{
|
||||||
#endif
|
#endif
|
||||||
|
if( info == NULL )
|
||||||
|
{
|
||||||
|
MBEDTLS_SSL_DEBUG_MSG( 1, ( "invalid curve in ssl configuration" ) );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
elliptic_curve_len += 2;
|
elliptic_curve_len += 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -289,7 +297,6 @@ static void ssl_write_supported_elliptic_curves_ext( mbedtls_ssl_context *ssl,
|
||||||
for( info = mbedtls_ecp_curve_list(); info->grp_id != MBEDTLS_ECP_DP_NONE; info++ )
|
for( info = mbedtls_ecp_curve_list(); info->grp_id != MBEDTLS_ECP_DP_NONE; info++ )
|
||||||
{
|
{
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
elliptic_curve_list[elliptic_curve_len++] = info->tls_id >> 8;
|
elliptic_curve_list[elliptic_curve_len++] = info->tls_id >> 8;
|
||||||
elliptic_curve_list[elliptic_curve_len++] = info->tls_id & 0xFF;
|
elliptic_curve_list[elliptic_curve_len++] = info->tls_id & 0xFF;
|
||||||
}
|
}
|
||||||
|
@ -664,7 +671,7 @@ static int ssl_generate_random( mbedtls_ssl_context *ssl )
|
||||||
int ret;
|
int ret;
|
||||||
unsigned char *p = ssl->handshake->randbytes;
|
unsigned char *p = ssl->handshake->randbytes;
|
||||||
#if defined(MBEDTLS_HAVE_TIME)
|
#if defined(MBEDTLS_HAVE_TIME)
|
||||||
time_t t;
|
mbedtls_time_t t;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -679,7 +686,7 @@ static int ssl_generate_random( mbedtls_ssl_context *ssl )
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(MBEDTLS_HAVE_TIME)
|
#if defined(MBEDTLS_HAVE_TIME)
|
||||||
t = time( NULL );
|
t = mbedtls_time( NULL );
|
||||||
*p++ = (unsigned char)( t >> 24 );
|
*p++ = (unsigned char)( t >> 24 );
|
||||||
*p++ = (unsigned char)( t >> 16 );
|
*p++ = (unsigned char)( t >> 16 );
|
||||||
*p++ = (unsigned char)( t >> 8 );
|
*p++ = (unsigned char)( t >> 8 );
|
||||||
|
@ -1587,7 +1594,7 @@ static int ssl_parse_server_hello( mbedtls_ssl_context *ssl )
|
||||||
ssl->state++;
|
ssl->state++;
|
||||||
ssl->handshake->resume = 0;
|
ssl->handshake->resume = 0;
|
||||||
#if defined(MBEDTLS_HAVE_TIME)
|
#if defined(MBEDTLS_HAVE_TIME)
|
||||||
ssl->session_negotiate->start = time( NULL );
|
ssl->session_negotiate->start = mbedtls_time( NULL );
|
||||||
#endif
|
#endif
|
||||||
ssl->session_negotiate->ciphersuite = i;
|
ssl->session_negotiate->ciphersuite = i;
|
||||||
ssl->session_negotiate->compression = comp;
|
ssl->session_negotiate->compression = comp;
|
||||||
|
|
|
@ -31,16 +31,18 @@
|
||||||
|
|
||||||
#if defined(MBEDTLS_SSL_COOKIE_C)
|
#if defined(MBEDTLS_SSL_COOKIE_C)
|
||||||
|
|
||||||
#include "mbedtls/ssl_cookie.h"
|
|
||||||
#include "mbedtls/ssl_internal.h"
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_PLATFORM_C)
|
#if defined(MBEDTLS_PLATFORM_C)
|
||||||
#include "mbedtls/platform.h"
|
#include "mbedtls/platform.h"
|
||||||
#else
|
#else
|
||||||
#define mbedtls_calloc calloc
|
#define mbedtls_calloc calloc
|
||||||
#define mbedtls_free free
|
#define mbedtls_free free
|
||||||
|
#define mbedtls_time time
|
||||||
|
#define mbedtls_time_t time_t
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "mbedtls/ssl_cookie.h"
|
||||||
|
#include "mbedtls/ssl_internal.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
/* Implementation that should never be optimized out by the compiler */
|
/* Implementation that should never be optimized out by the compiler */
|
||||||
|
@ -172,7 +174,7 @@ int mbedtls_ssl_cookie_write( void *p_ctx,
|
||||||
return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL );
|
return( MBEDTLS_ERR_SSL_BUFFER_TOO_SMALL );
|
||||||
|
|
||||||
#if defined(MBEDTLS_HAVE_TIME)
|
#if defined(MBEDTLS_HAVE_TIME)
|
||||||
t = (unsigned long) time( NULL );
|
t = (unsigned long) mbedtls_time( NULL );
|
||||||
#else
|
#else
|
||||||
t = ctx->serial++;
|
t = ctx->serial++;
|
||||||
#endif
|
#endif
|
||||||
|
@ -242,7 +244,7 @@ int mbedtls_ssl_cookie_check( void *p_ctx,
|
||||||
return( -1 );
|
return( -1 );
|
||||||
|
|
||||||
#if defined(MBEDTLS_HAVE_TIME)
|
#if defined(MBEDTLS_HAVE_TIME)
|
||||||
cur_time = (unsigned long) time( NULL );
|
cur_time = (unsigned long) mbedtls_time( NULL );
|
||||||
#else
|
#else
|
||||||
cur_time = ctx->serial;
|
cur_time = ctx->serial;
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -27,6 +27,16 @@
|
||||||
|
|
||||||
#if defined(MBEDTLS_SSL_SRV_C)
|
#if defined(MBEDTLS_SSL_SRV_C)
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_PLATFORM_C)
|
||||||
|
#include "mbedtls/platform.h"
|
||||||
|
#else
|
||||||
|
#include <stdlib.h>
|
||||||
|
#define mbedtls_calloc calloc
|
||||||
|
#define mbedtls_free free
|
||||||
|
#define mbedtls_time time
|
||||||
|
#define mbedtls_time_t time_t
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "mbedtls/debug.h"
|
#include "mbedtls/debug.h"
|
||||||
#include "mbedtls/ssl.h"
|
#include "mbedtls/ssl.h"
|
||||||
#include "mbedtls/ssl_internal.h"
|
#include "mbedtls/ssl_internal.h"
|
||||||
|
@ -37,14 +47,6 @@
|
||||||
#include "mbedtls/ecp.h"
|
#include "mbedtls/ecp.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(MBEDTLS_PLATFORM_C)
|
|
||||||
#include "mbedtls/platform.h"
|
|
||||||
#else
|
|
||||||
#include <stdlib.h>
|
|
||||||
#define mbedtls_calloc calloc
|
|
||||||
#define mbedtls_free free
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_HAVE_TIME)
|
#if defined(MBEDTLS_HAVE_TIME)
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -2210,7 +2212,7 @@ static int ssl_write_hello_verify_request( mbedtls_ssl_context *ssl )
|
||||||
static int ssl_write_server_hello( mbedtls_ssl_context *ssl )
|
static int ssl_write_server_hello( mbedtls_ssl_context *ssl )
|
||||||
{
|
{
|
||||||
#if defined(MBEDTLS_HAVE_TIME)
|
#if defined(MBEDTLS_HAVE_TIME)
|
||||||
time_t t;
|
mbedtls_time_t t;
|
||||||
#endif
|
#endif
|
||||||
int ret;
|
int ret;
|
||||||
size_t olen, ext_len = 0, n;
|
size_t olen, ext_len = 0, n;
|
||||||
|
@ -2253,7 +2255,7 @@ static int ssl_write_server_hello( mbedtls_ssl_context *ssl )
|
||||||
buf[4], buf[5] ) );
|
buf[4], buf[5] ) );
|
||||||
|
|
||||||
#if defined(MBEDTLS_HAVE_TIME)
|
#if defined(MBEDTLS_HAVE_TIME)
|
||||||
t = time( NULL );
|
t = mbedtls_time( NULL );
|
||||||
*p++ = (unsigned char)( t >> 24 );
|
*p++ = (unsigned char)( t >> 24 );
|
||||||
*p++ = (unsigned char)( t >> 16 );
|
*p++ = (unsigned char)( t >> 16 );
|
||||||
*p++ = (unsigned char)( t >> 8 );
|
*p++ = (unsigned char)( t >> 8 );
|
||||||
|
@ -2302,7 +2304,7 @@ static int ssl_write_server_hello( mbedtls_ssl_context *ssl )
|
||||||
ssl->state++;
|
ssl->state++;
|
||||||
|
|
||||||
#if defined(MBEDTLS_HAVE_TIME)
|
#if defined(MBEDTLS_HAVE_TIME)
|
||||||
ssl->session_negotiate->start = time( NULL );
|
ssl->session_negotiate->start = mbedtls_time( NULL );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(MBEDTLS_SSL_SESSION_TICKETS)
|
#if defined(MBEDTLS_SSL_SESSION_TICKETS)
|
||||||
|
|
|
@ -27,16 +27,18 @@
|
||||||
|
|
||||||
#if defined(MBEDTLS_SSL_TICKET_C)
|
#if defined(MBEDTLS_SSL_TICKET_C)
|
||||||
|
|
||||||
#include "mbedtls/ssl_ticket.h"
|
|
||||||
|
|
||||||
#if defined(MBEDTLS_PLATFORM_C)
|
#if defined(MBEDTLS_PLATFORM_C)
|
||||||
#include "mbedtls/platform.h"
|
#include "mbedtls/platform.h"
|
||||||
#else
|
#else
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#define mbedtls_calloc calloc
|
#define mbedtls_calloc calloc
|
||||||
#define mbedtls_free free
|
#define mbedtls_free free
|
||||||
|
#define mbedtls_time time
|
||||||
|
#define mbedtls_time_t time_t
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include "mbedtls/ssl_ticket.h"
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
/* Implementation that should never be optimized out by the compiler */
|
/* Implementation that should never be optimized out by the compiler */
|
||||||
|
@ -69,7 +71,7 @@ static int ssl_ticket_gen_key( mbedtls_ssl_ticket_context *ctx,
|
||||||
mbedtls_ssl_ticket_key *key = ctx->keys + index;
|
mbedtls_ssl_ticket_key *key = ctx->keys + index;
|
||||||
|
|
||||||
#if defined(MBEDTLS_HAVE_TIME)
|
#if defined(MBEDTLS_HAVE_TIME)
|
||||||
key->generation_time = (uint32_t) time( NULL );
|
key->generation_time = (uint32_t) mbedtls_time( NULL );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if( ( ret = ctx->f_rng( ctx->p_rng, key->name, sizeof( key->name ) ) ) != 0 )
|
if( ( ret = ctx->f_rng( ctx->p_rng, key->name, sizeof( key->name ) ) ) != 0 )
|
||||||
|
@ -98,7 +100,7 @@ static int ssl_ticket_update_keys( mbedtls_ssl_ticket_context *ctx )
|
||||||
#else
|
#else
|
||||||
if( ctx->ticket_lifetime != 0 )
|
if( ctx->ticket_lifetime != 0 )
|
||||||
{
|
{
|
||||||
uint32_t current_time = (uint32_t) time( NULL );
|
uint32_t current_time = (uint32_t) mbedtls_time( NULL );
|
||||||
uint32_t key_time = ctx->keys[ctx->active].generation_time;
|
uint32_t key_time = ctx->keys[ctx->active].generation_time;
|
||||||
|
|
||||||
if( current_time > key_time &&
|
if( current_time > key_time &&
|
||||||
|
@ -451,7 +453,7 @@ int mbedtls_ssl_ticket_parse( void *p_ticket,
|
||||||
#if defined(MBEDTLS_HAVE_TIME)
|
#if defined(MBEDTLS_HAVE_TIME)
|
||||||
{
|
{
|
||||||
/* Check for expiration */
|
/* Check for expiration */
|
||||||
time_t current_time = time( NULL );
|
mbedtls_time_t current_time = mbedtls_time( NULL );
|
||||||
|
|
||||||
if( current_time < session->start ||
|
if( current_time < session->start ||
|
||||||
(uint32_t)( current_time - session->start ) > ctx->ticket_lifetime )
|
(uint32_t)( current_time - session->start ) > ctx->ticket_lifetime )
|
||||||
|
|
|
@ -35,6 +35,15 @@
|
||||||
|
|
||||||
#if defined(MBEDTLS_SSL_TLS_C)
|
#if defined(MBEDTLS_SSL_TLS_C)
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_PLATFORM_C)
|
||||||
|
#include "mbedtls/platform.h"
|
||||||
|
#else
|
||||||
|
#include <stdlib.h>
|
||||||
|
#define mbedtls_calloc calloc
|
||||||
|
#define mbedtls_free free
|
||||||
|
#define mbedtls_time_t time_t
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "mbedtls/debug.h"
|
#include "mbedtls/debug.h"
|
||||||
#include "mbedtls/ssl.h"
|
#include "mbedtls/ssl.h"
|
||||||
#include "mbedtls/ssl_internal.h"
|
#include "mbedtls/ssl_internal.h"
|
||||||
|
@ -46,14 +55,6 @@
|
||||||
#include "mbedtls/oid.h"
|
#include "mbedtls/oid.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(MBEDTLS_PLATFORM_C)
|
|
||||||
#include "mbedtls/platform.h"
|
|
||||||
#else
|
|
||||||
#include <stdlib.h>
|
|
||||||
#define mbedtls_calloc calloc
|
|
||||||
#define mbedtls_free free
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Implementation that should never be optimized out by the compiler */
|
/* Implementation that should never be optimized out by the compiler */
|
||||||
static void mbedtls_zeroize( void *v, size_t n ) {
|
static void mbedtls_zeroize( void *v, size_t n ) {
|
||||||
volatile unsigned char *p = v; while( n-- ) *p++ = 0;
|
volatile unsigned char *p = v; while( n-- ) *p++ = 0;
|
||||||
|
|
|
@ -54,6 +54,9 @@ static const char *features[] = {
|
||||||
#if defined(MBEDTLS_PLATFORM_EXIT_ALT)
|
#if defined(MBEDTLS_PLATFORM_EXIT_ALT)
|
||||||
"MBEDTLS_PLATFORM_EXIT_ALT",
|
"MBEDTLS_PLATFORM_EXIT_ALT",
|
||||||
#endif /* MBEDTLS_PLATFORM_EXIT_ALT */
|
#endif /* MBEDTLS_PLATFORM_EXIT_ALT */
|
||||||
|
#if defined(MBEDTLS_PLATFORM_TIME_ALT)
|
||||||
|
"MBEDTLS_PLATFORM_TIME_ALT",
|
||||||
|
#endif /* MBEDTLS_PLATFORM_TIME_ALT */
|
||||||
#if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
|
#if defined(MBEDTLS_PLATFORM_FPRINTF_ALT)
|
||||||
"MBEDTLS_PLATFORM_FPRINTF_ALT",
|
"MBEDTLS_PLATFORM_FPRINTF_ALT",
|
||||||
#endif /* MBEDTLS_PLATFORM_FPRINTF_ALT */
|
#endif /* MBEDTLS_PLATFORM_FPRINTF_ALT */
|
||||||
|
|
|
@ -53,10 +53,12 @@
|
||||||
#else
|
#else
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#define mbedtls_free free
|
#define mbedtls_free free
|
||||||
#define mbedtls_calloc calloc
|
#define mbedtls_calloc calloc
|
||||||
#define mbedtls_printf printf
|
#define mbedtls_time time
|
||||||
#define mbedtls_snprintf snprintf
|
#define mbedtls_time_t time_t
|
||||||
|
#define mbedtls_printf printf
|
||||||
|
#define mbedtls_snprintf snprintf
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32)
|
#if defined(_WIN32) && !defined(EFIX64) && !defined(EFI32)
|
||||||
|
@ -843,7 +845,7 @@ static int x509_get_current_time( mbedtls_x509_time *now )
|
||||||
static int x509_get_current_time( mbedtls_x509_time *now )
|
static int x509_get_current_time( mbedtls_x509_time *now )
|
||||||
{
|
{
|
||||||
struct tm *lt;
|
struct tm *lt;
|
||||||
time_t tt;
|
mbedtls_time_t tt;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
|
||||||
#if defined(MBEDTLS_THREADING_C)
|
#if defined(MBEDTLS_THREADING_C)
|
||||||
|
@ -851,7 +853,7 @@ static int x509_get_current_time( mbedtls_x509_time *now )
|
||||||
return( MBEDTLS_ERR_THREADING_MUTEX_ERROR );
|
return( MBEDTLS_ERR_THREADING_MUTEX_ERROR );
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
tt = time( NULL );
|
tt = mbedtls_time( NULL );
|
||||||
lt = gmtime( &tt );
|
lt = gmtime( &tt );
|
||||||
|
|
||||||
if( lt == NULL )
|
if( lt == NULL )
|
||||||
|
|
|
@ -43,12 +43,14 @@
|
||||||
#if !defined(MBEDTLS_CTR_DRBG_C) || !defined(MBEDTLS_ENTROPY_C) || \
|
#if !defined(MBEDTLS_CTR_DRBG_C) || !defined(MBEDTLS_ENTROPY_C) || \
|
||||||
!defined(MBEDTLS_NET_C) || !defined(MBEDTLS_SSL_CLI_C) || \
|
!defined(MBEDTLS_NET_C) || !defined(MBEDTLS_SSL_CLI_C) || \
|
||||||
!defined(UNIX)
|
!defined(UNIX)
|
||||||
|
|
||||||
#if defined(MBEDTLS_PLATFORM_C)
|
#if defined(MBEDTLS_PLATFORM_C)
|
||||||
#include "mbedtls/platform.h"
|
#include "mbedtls/platform.h"
|
||||||
#else
|
#else
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#define mbedtls_printf printf
|
#define mbedtls_printf printf
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
int main( void )
|
int main( void )
|
||||||
{
|
{
|
||||||
mbedtls_printf( "MBEDTLS_CTR_DRBG_C and/or MBEDTLS_ENTROPY_C and/or "
|
mbedtls_printf( "MBEDTLS_CTR_DRBG_C and/or MBEDTLS_ENTROPY_C and/or "
|
||||||
|
@ -58,6 +60,15 @@ int main( void )
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
|
|
||||||
|
#if defined(MBEDTLS_PLATFORM_C)
|
||||||
|
#include "mbedtls/platform.h"
|
||||||
|
#else
|
||||||
|
#include <stdlib.h>
|
||||||
|
#define mbedtls_time_t time_t
|
||||||
|
#define MBEDTLS_EXIT_SUCCESS EXIT_SUCCESS
|
||||||
|
#define MBEDTLS_EXIT_FAILURE EXIT_FAILURE
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "mbedtls/net.h"
|
#include "mbedtls/net.h"
|
||||||
|
|
|
@ -29,6 +29,9 @@
|
||||||
#include "mbedtls/platform.h"
|
#include "mbedtls/platform.h"
|
||||||
#else
|
#else
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#define mbedtls_time time
|
||||||
|
#define mbedtls_time_t time_t
|
||||||
#define mbedtls_fprintf fprintf
|
#define mbedtls_fprintf fprintf
|
||||||
#define mbedtls_printf printf
|
#define mbedtls_printf printf
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -29,6 +29,9 @@
|
||||||
#include "mbedtls/platform.h"
|
#include "mbedtls/platform.h"
|
||||||
#else
|
#else
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#define mbedtls_time time
|
||||||
|
#define mbedtls_time_t time_t
|
||||||
#define mbedtls_printf printf
|
#define mbedtls_printf printf
|
||||||
#define mbedtls_fprintf fprintf
|
#define mbedtls_fprintf fprintf
|
||||||
#define mbedtls_snprintf snprintf
|
#define mbedtls_snprintf snprintf
|
||||||
|
|
|
@ -29,6 +29,9 @@
|
||||||
#include "mbedtls/platform.h"
|
#include "mbedtls/platform.h"
|
||||||
#else
|
#else
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#define mbedtls_time time
|
||||||
|
#define mbedtls_time_t time_t
|
||||||
#define mbedtls_fprintf fprintf
|
#define mbedtls_fprintf fprintf
|
||||||
#define mbedtls_printf printf
|
#define mbedtls_printf printf
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -29,6 +29,9 @@
|
||||||
#include "mbedtls/platform.h"
|
#include "mbedtls/platform.h"
|
||||||
#else
|
#else
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#define mbedtls_time time
|
||||||
|
#define mbedtls_time_t time_t
|
||||||
#define mbedtls_fprintf fprintf
|
#define mbedtls_fprintf fprintf
|
||||||
#define mbedtls_printf printf
|
#define mbedtls_printf printf
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -29,7 +29,10 @@
|
||||||
#include "mbedtls/platform.h"
|
#include "mbedtls/platform.h"
|
||||||
#else
|
#else
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
#define mbedtls_free free
|
#define mbedtls_free free
|
||||||
|
#define mbedtls_time time
|
||||||
|
#define mbedtls_time_t time_t
|
||||||
#define mbedtls_calloc calloc
|
#define mbedtls_calloc calloc
|
||||||
#define mbedtls_fprintf fprintf
|
#define mbedtls_fprintf fprintf
|
||||||
#define mbedtls_printf printf
|
#define mbedtls_printf printf
|
||||||
|
|
|
@ -34,11 +34,15 @@
|
||||||
#if defined(MBEDTLS_PLATFORM_C)
|
#if defined(MBEDTLS_PLATFORM_C)
|
||||||
#include "mbedtls/platform.h"
|
#include "mbedtls/platform.h"
|
||||||
#else
|
#else
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <time.h>
|
||||||
|
#define mbedtls_time time
|
||||||
|
#define mbedtls_time_t time_t
|
||||||
#define mbedtls_printf printf
|
#define mbedtls_printf printf
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(MBEDTLS_NET_C)
|
#if !defined(MBEDTLS_NET_C)
|
||||||
#include <stdio.h>
|
|
||||||
int main( void )
|
int main( void )
|
||||||
{
|
{
|
||||||
mbedtls_printf( "MBEDTLS_NET_C not defined.\n" );
|
mbedtls_printf( "MBEDTLS_NET_C not defined.\n" );
|
||||||
|
@ -50,10 +54,7 @@ int main( void )
|
||||||
#include "mbedtls/error.h"
|
#include "mbedtls/error.h"
|
||||||
#include "mbedtls/ssl.h"
|
#include "mbedtls/ssl.h"
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <time.h>
|
|
||||||
|
|
||||||
/* For select() */
|
/* For select() */
|
||||||
#if (defined(_WIN32) || defined(_WIN32_WCE)) && !defined(EFIX64) && \
|
#if (defined(_WIN32) || defined(_WIN32_WCE)) && !defined(EFIX64) && \
|
||||||
|
|
|
@ -29,6 +29,9 @@
|
||||||
#include "mbedtls/platform.h"
|
#include "mbedtls/platform.h"
|
||||||
#else
|
#else
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#define mbedtls_time time
|
||||||
|
#define mbedtls_time_t time_t
|
||||||
#define mbedtls_fprintf fprintf
|
#define mbedtls_fprintf fprintf
|
||||||
#define mbedtls_printf printf
|
#define mbedtls_printf printf
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -21,13 +21,15 @@
|
||||||
# test dispatch code as well as support functions. It contains the
|
# test dispatch code as well as support functions. It contains the
|
||||||
# following symbols which are substituted by this script during
|
# following symbols which are substituted by this script during
|
||||||
# processing:
|
# processing:
|
||||||
# TEST_FILENAME
|
# TESTCASE_FILENAME
|
||||||
|
# TESTCODE_FILENAME
|
||||||
# SUITE_PRE_DEP
|
# SUITE_PRE_DEP
|
||||||
# MAPPING_CODE
|
# MAPPING_CODE
|
||||||
# FUNCTION CODE
|
# FUNCTION CODE
|
||||||
# SUITE_POST_DEP
|
# SUITE_POST_DEP
|
||||||
# DEP_CHECK_CODE
|
# DEP_CHECK_CODE
|
||||||
# DISPATCH_FUNCTION
|
# DISPATCH_FUNCTION
|
||||||
|
# !LINE_NO!
|
||||||
#
|
#
|
||||||
# - common helper code file - 'helpers.function'
|
# - common helper code file - 'helpers.function'
|
||||||
# Common helper functions
|
# Common helper functions
|
||||||
|
@ -44,8 +46,8 @@
|
||||||
#
|
#
|
||||||
# - test data file - file name in the form 'test_suite_xxxx.data'
|
# - test data file - file name in the form 'test_suite_xxxx.data'
|
||||||
# The test case parameters to to be used in execution of the test. The
|
# The test case parameters to to be used in execution of the test. The
|
||||||
# file name is used to replace the symbol 'TEST_FILENAME' in the main code
|
# file name is used to replace the symbol 'TESTCASE_FILENAME' in the main
|
||||||
# file above.
|
# code file above.
|
||||||
#
|
#
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
|
@ -62,23 +64,52 @@ my $test_case_data = $suite_dir."/".$data_name.".data";
|
||||||
my $line_separator = $/;
|
my $line_separator = $/;
|
||||||
undef $/;
|
undef $/;
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Open and read in the input files
|
||||||
|
#
|
||||||
|
|
||||||
open(TEST_HELPERS, "$test_common_helper_file") or die "Opening test helpers
|
open(TEST_HELPERS, "$test_common_helper_file") or die "Opening test helpers
|
||||||
'$test_common_helper_file': $!";
|
'$test_common_helper_file': $!";
|
||||||
my $test_common_helpers = <TEST_HELPERS>;
|
my $test_common_helpers = <TEST_HELPERS>;
|
||||||
close(TEST_HELPERS);
|
close(TEST_HELPERS);
|
||||||
|
|
||||||
open(TEST_MAIN, "$test_main_file") or die "Opening test main '$test_main_file': $!";
|
open(TEST_MAIN, "$test_main_file") or die "Opening test main '$test_main_file': $!";
|
||||||
my $test_main = <TEST_MAIN>;
|
my @test_main_lines = split/^/, <TEST_MAIN>;
|
||||||
|
my $test_main;
|
||||||
|
my $index = 1;
|
||||||
|
for my $line (@test_main_lines) {
|
||||||
|
$line =~ s/!LINE_NO!/$index/;
|
||||||
|
$test_main = $test_main.$line;
|
||||||
|
$index++;
|
||||||
|
}
|
||||||
close(TEST_MAIN);
|
close(TEST_MAIN);
|
||||||
|
|
||||||
open(TEST_CASES, "$test_case_file") or die "Opening test cases '$test_case_file': $!";
|
open(TEST_CASES, "$test_case_file") or die "Opening test cases '$test_case_file': $!";
|
||||||
my $test_cases = <TEST_CASES>;
|
my @test_cases_lines = split/^/, <TEST_CASES>;
|
||||||
|
my $test_cases;
|
||||||
|
my $index = 1;
|
||||||
|
for my $line (@test_cases_lines) {
|
||||||
|
if ($line =~ /^\/\* BEGIN_CASE .*\*\//)
|
||||||
|
{
|
||||||
|
$line = $line."#line $index \"$test_case_file\"\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
$test_cases = $test_cases.$line;
|
||||||
|
$index++;
|
||||||
|
}
|
||||||
|
|
||||||
close(TEST_CASES);
|
close(TEST_CASES);
|
||||||
|
|
||||||
open(TEST_DATA, "$test_case_data") or die "Opening test data '$test_case_data': $!";
|
open(TEST_DATA, "$test_case_data") or die "Opening test data '$test_case_data': $!";
|
||||||
my $test_data = <TEST_DATA>;
|
my $test_data = <TEST_DATA>;
|
||||||
close(TEST_DATA);
|
close(TEST_DATA);
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Find the headers, dependencies, and suites in the test cases file
|
||||||
|
#
|
||||||
|
|
||||||
my ( $suite_header ) = $test_cases =~ /\/\* BEGIN_HEADER \*\/\n(.*?)\n\/\* END_HEADER \*\//s;
|
my ( $suite_header ) = $test_cases =~ /\/\* BEGIN_HEADER \*\/\n(.*?)\n\/\* END_HEADER \*\//s;
|
||||||
my ( $suite_defines ) = $test_cases =~ /\/\* BEGIN_DEPENDENCIES\n \* (.*?)\n \* END_DEPENDENCIES/s;
|
my ( $suite_defines ) = $test_cases =~ /\/\* BEGIN_DEPENDENCIES\n \* (.*?)\n \* END_DEPENDENCIES/s;
|
||||||
my ( $suite_helpers ) = $test_cases =~ /\/\* BEGIN_SUITE_HELPERS \*\/\n(.*?)\n\/\* END_SUITE_HELPERS \*\//s;
|
my ( $suite_helpers ) = $test_cases =~ /\/\* BEGIN_SUITE_HELPERS \*\/\n(.*?)\n\/\* END_SUITE_HELPERS \*\//s;
|
||||||
|
@ -159,16 +190,19 @@ while($test_cases =~ /\/\* BEGIN_CASE *([\w:]*) \*\/\n(.*?)\n\/\* END_CASE \*\//
|
||||||
my $function_decl = $2;
|
my $function_decl = $2;
|
||||||
|
|
||||||
# Sanity checks of function
|
# Sanity checks of function
|
||||||
if ($function_decl !~ /^void /)
|
if ($function_decl !~ /^#line\s*.*\nvoid /)
|
||||||
{
|
{
|
||||||
die "Test function does not have 'void' as return type\n";
|
die "Test function does not have 'void' as return type.\n" .
|
||||||
|
"Function declaration:\n" .
|
||||||
|
$function_decl;
|
||||||
}
|
}
|
||||||
if ($function_decl !~ /^void (\w+)\(\s*(.*?)\s*\)\s*{(.*)}/ms)
|
if ($function_decl !~ /^(#line\s*.*)\nvoid (\w+)\(\s*(.*?)\s*\)\s*{(.*)}/ms)
|
||||||
{
|
{
|
||||||
die "Function declaration not in expected format\n";
|
die "Function declaration not in expected format\n";
|
||||||
}
|
}
|
||||||
my $function_name = $1;
|
my $line_directive = $1;
|
||||||
my $function_params = $2;
|
my $function_name = $2;
|
||||||
|
my $function_params = $3;
|
||||||
my $function_pre_code;
|
my $function_pre_code;
|
||||||
my $function_post_code;
|
my $function_post_code;
|
||||||
my $param_defs;
|
my $param_defs;
|
||||||
|
@ -179,7 +213,7 @@ while($test_cases =~ /\/\* BEGIN_CASE *([\w:]*) \*\/\n(.*?)\n\/\* END_CASE \*\//
|
||||||
my $mapping_regex = "".$function_name;
|
my $mapping_regex = "".$function_name;
|
||||||
my $mapping_count = 0;
|
my $mapping_count = 0;
|
||||||
|
|
||||||
$function_decl =~ s/^void /void test_suite_/;
|
$function_decl =~ s/(^#line\s*.*)\nvoid /$1\nvoid test_suite_/;
|
||||||
|
|
||||||
# Add exit label if not present
|
# Add exit label if not present
|
||||||
if ($function_decl !~ /^exit:$/m)
|
if ($function_decl !~ /^exit:$/m)
|
||||||
|
@ -262,7 +296,8 @@ $function_post_code
|
||||||
else
|
else
|
||||||
END
|
END
|
||||||
|
|
||||||
my $function_code = $function_pre_code . $function_decl . "\n" . $function_post_code;
|
my $function_code = $function_pre_code . $function_decl . "\n" .
|
||||||
|
$function_post_code;
|
||||||
$test_main =~ s/FUNCTION_CODE/$function_code\nFUNCTION_CODE/;
|
$test_main =~ s/FUNCTION_CODE/$function_code\nFUNCTION_CODE/;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -317,7 +352,8 @@ END
|
||||||
|
|
||||||
$dispatch_code =~ s/^(.+)/ $1/mg;
|
$dispatch_code =~ s/^(.+)/ $1/mg;
|
||||||
|
|
||||||
$test_main =~ s/TEST_FILENAME/$test_case_data/g;
|
$test_main =~ s/TESTCASE_FILENAME/$test_case_data/g;
|
||||||
|
$test_main =~ s/TESTCODE_FILENAME/$test_case_file/g;
|
||||||
$test_main =~ s/FUNCTION_CODE//;
|
$test_main =~ s/FUNCTION_CODE//;
|
||||||
$test_main =~ s/DEP_CHECK_CODE/$dep_check_code/;
|
$test_main =~ s/DEP_CHECK_CODE/$dep_check_code/;
|
||||||
$test_main =~ s/DISPATCH_FUNCTION/$dispatch_code/;
|
$test_main =~ s/DISPATCH_FUNCTION/$dispatch_code/;
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#line 1 "helpers.function"
|
||||||
/*----------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* Headers */
|
/* Headers */
|
||||||
|
|
||||||
|
@ -5,11 +6,14 @@
|
||||||
#include "mbedtls/platform.h"
|
#include "mbedtls/platform.h"
|
||||||
#else
|
#else
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
#define mbedtls_printf printf
|
#define mbedtls_printf printf
|
||||||
#define mbedtls_fprintf fprintf
|
#define mbedtls_fprintf fprintf
|
||||||
#define mbedtls_calloc calloc
|
#define mbedtls_calloc calloc
|
||||||
#define mbedtls_free free
|
#define mbedtls_free free
|
||||||
#define mbedtls_exit exit
|
#define mbedtls_exit exit
|
||||||
|
#define mbedtls_time time
|
||||||
|
#define mbedtls_time_t time_t
|
||||||
#define mbedtls_fprintf fprintf
|
#define mbedtls_fprintf fprintf
|
||||||
#define mbedtls_printf printf
|
#define mbedtls_printf printf
|
||||||
#define mbedtls_snprintf snprintf
|
#define mbedtls_snprintf snprintf
|
||||||
|
@ -28,8 +32,6 @@ typedef UINT32 uint32_t;
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
#line 1 "main_test.function"
|
||||||
SUITE_PRE_DEP
|
SUITE_PRE_DEP
|
||||||
#define TEST_SUITE_ACTIVE
|
#define TEST_SUITE_ACTIVE
|
||||||
|
|
||||||
|
@ -70,6 +71,8 @@ MAPPING_CODE
|
||||||
FUNCTION_CODE
|
FUNCTION_CODE
|
||||||
SUITE_POST_DEP
|
SUITE_POST_DEP
|
||||||
|
|
||||||
|
#line !LINE_NO! "main_test.function"
|
||||||
|
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* Test dispatch code */
|
/* Test dispatch code */
|
||||||
|
@ -111,6 +114,8 @@ DISPATCH_FUNCTION
|
||||||
/*----------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------*/
|
||||||
/* Main Test code */
|
/* Main Test code */
|
||||||
|
|
||||||
|
#line !LINE_NO! "main_test.function"
|
||||||
|
|
||||||
#define USAGE \
|
#define USAGE \
|
||||||
"Usage: %s [OPTIONS] files...\n\n" \
|
"Usage: %s [OPTIONS] files...\n\n" \
|
||||||
" Command line arguments:\n" \
|
" Command line arguments:\n" \
|
||||||
|
@ -121,7 +126,7 @@ DISPATCH_FUNCTION
|
||||||
" -v | --verbose Display full information about each test\n" \
|
" -v | --verbose Display full information about each test\n" \
|
||||||
" -h | --help Display this information\n\n", \
|
" -h | --help Display this information\n\n", \
|
||||||
argv[0], \
|
argv[0], \
|
||||||
"TEST_FILENAME"
|
"TESTCASE_FILENAME"
|
||||||
|
|
||||||
|
|
||||||
int get_line( FILE *f, char *buf, size_t len )
|
int get_line( FILE *f, char *buf, size_t len )
|
||||||
|
@ -234,7 +239,7 @@ static int run_test_snprintf( void )
|
||||||
int main(int argc, const char *argv[])
|
int main(int argc, const char *argv[])
|
||||||
{
|
{
|
||||||
/* Local Configurations and options */
|
/* Local Configurations and options */
|
||||||
const char *default_filename = "TEST_FILENAME";
|
const char *default_filename = "TESTCASE_FILENAME";
|
||||||
const char *test_filename = NULL;
|
const char *test_filename = NULL;
|
||||||
const char **test_files = NULL;
|
const char **test_files = NULL;
|
||||||
int testfile_count = 0;
|
int testfile_count = 0;
|
||||||
|
|
Loading…
Reference in a new issue