Add library setup and teardown APIs
Add the following two functions to allow platform setup and teardown operations for the full library to be hooked in: * mbedtls_platform_setup() * mbedtls_platform_teardown() An mbedtls_platform_context C structure is also added and two internal functions that are called by the corresponding setup and teardown functions above: * mbedtls_internal_platform_setup() * mbedtls_internal_plartform_teardown() Finally, the macro MBEDTLS_PLATFORM_SETUP_ALT is also added to allow mbedtls_platform_context and internal function to be overriden by the user as needed for a platform.
This commit is contained in:
parent
75c0c814e4
commit
122d899296
3 changed files with 76 additions and 0 deletions
|
@ -163,6 +163,7 @@
|
||||||
//#define MBEDTLS_PLATFORM_PRINTF_ALT
|
//#define MBEDTLS_PLATFORM_PRINTF_ALT
|
||||||
//#define MBEDTLS_PLATFORM_SNPRINTF_ALT
|
//#define MBEDTLS_PLATFORM_SNPRINTF_ALT
|
||||||
//#define MBEDTLS_PLATFORM_NV_SEED_ALT
|
//#define MBEDTLS_PLATFORM_NV_SEED_ALT
|
||||||
|
//#define MBEDTLS_PLATFORM_SETUP_ALT
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \def MBEDTLS_DEPRECATED_WARNING
|
* \def MBEDTLS_DEPRECATED_WARNING
|
||||||
|
|
|
@ -288,6 +288,51 @@ int mbedtls_platform_set_nv_seed(
|
||||||
#endif /* MBEDTLS_PLATFORM_NV_SEED_ALT */
|
#endif /* MBEDTLS_PLATFORM_NV_SEED_ALT */
|
||||||
#endif /* MBEDTLS_ENTROPY_NV_SEED */
|
#endif /* MBEDTLS_ENTROPY_NV_SEED */
|
||||||
|
|
||||||
|
#if !defined(MBEDTLS_PLATFORM_SETUP_ALT)
|
||||||
|
typedef struct mbedtls_platform_context mbedtls_platform_context;
|
||||||
|
#else
|
||||||
|
#include "platform_alt.h"
|
||||||
|
#endif /* !MBEDTLS_PLATFORM_SETUP_ALT */
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Perform any platform initialisation operations
|
||||||
|
*
|
||||||
|
* \param ctx mbed TLS context
|
||||||
|
*
|
||||||
|
* \return 0 if successful
|
||||||
|
*
|
||||||
|
* \note This function should be called before any other library function
|
||||||
|
*/
|
||||||
|
int mbedtls_platform_setup( mbedtls_platform_context *ctx );
|
||||||
|
/**
|
||||||
|
* \brief Perform any platform teardown operations
|
||||||
|
*
|
||||||
|
* \param ctx mbed TLS context
|
||||||
|
*
|
||||||
|
* \return 0 if successful
|
||||||
|
*
|
||||||
|
* \note This function should be after every other mbed TLS module has been
|
||||||
|
* correctly freed using the appropriate free function.
|
||||||
|
*/
|
||||||
|
void mbedtls_platform_teardown( mbedtls_platform_context *ctx );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief Internal function to perform any platform initialisation operations
|
||||||
|
* Only exposed to allow overriding it, see MBEDTLS_PLATFORM_SETUP_ALT
|
||||||
|
*
|
||||||
|
* \param ctx mbed TLS context
|
||||||
|
*
|
||||||
|
* \return 0 if successful
|
||||||
|
*/
|
||||||
|
int mbedtls_internal_platform_setup( mbedtls_platform_context *ctx );
|
||||||
|
/**
|
||||||
|
* \brief Internal function to perform any platform teardown operations
|
||||||
|
* Only exposed to allow overriding it, see MBEDTLS_PLATFORM_SETUP_ALT
|
||||||
|
*
|
||||||
|
* \param ctx mbed TLS context
|
||||||
|
*/
|
||||||
|
void mbedtls_internal_platform_teardown( mbedtls_platform_context *ctx );
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -304,4 +304,34 @@ int mbedtls_platform_set_nv_seed(
|
||||||
#endif /* MBEDTLS_PLATFORM_NV_SEED_ALT */
|
#endif /* MBEDTLS_PLATFORM_NV_SEED_ALT */
|
||||||
#endif /* MBEDTLS_ENTROPY_NV_SEED */
|
#endif /* MBEDTLS_ENTROPY_NV_SEED */
|
||||||
|
|
||||||
|
int mbedtls_platform_setup( mbedtls_platform_context *ctx )
|
||||||
|
{
|
||||||
|
return( mbedtls_internal_platform_setup( ctx ) );
|
||||||
|
}
|
||||||
|
|
||||||
|
void mbedtls_platform_teardown( mbedtls_platform_context *ctx )
|
||||||
|
{
|
||||||
|
mbedtls_internal_platform_teardown( ctx );
|
||||||
|
}
|
||||||
|
|
||||||
|
#if !defined(MBEDTLS_PLATFORM_SETUP_ALT)
|
||||||
|
/*
|
||||||
|
* Placeholder internal platform setup that does nothing by default
|
||||||
|
*/
|
||||||
|
int mbedtls_internal_platform_setup( mbedtls_platform_context *ctx )
|
||||||
|
{
|
||||||
|
(void)ctx;
|
||||||
|
|
||||||
|
return( 0 );
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Placeholder internal platform teardown that does nothing by default
|
||||||
|
*/
|
||||||
|
void mbedtls_internal_platform_teardown( mbedtls_platform_context *ctx )
|
||||||
|
{
|
||||||
|
(void)ctx;
|
||||||
|
}
|
||||||
|
#endif /* MBEDTLS_PLATFORM_SETUP_ALT */
|
||||||
|
|
||||||
#endif /* MBEDTLS_PLATFORM_C */
|
#endif /* MBEDTLS_PLATFORM_C */
|
||||||
|
|
Loading…
Reference in a new issue