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
51e8c3ed7e
commit
2a6f39cb63
3 changed files with 76 additions and 0 deletions
|
@ -163,6 +163,7 @@
|
|||
//#define MBEDTLS_PLATFORM_PRINTF_ALT
|
||||
//#define MBEDTLS_PLATFORM_SNPRINTF_ALT
|
||||
//#define MBEDTLS_PLATFORM_NV_SEED_ALT
|
||||
//#define MBEDTLS_PLATFORM_SETUP_ALT
|
||||
|
||||
/**
|
||||
* \def MBEDTLS_DEPRECATED_WARNING
|
||||
|
|
|
@ -288,6 +288,51 @@ int mbedtls_platform_set_nv_seed(
|
|||
#endif /* MBEDTLS_PLATFORM_NV_SEED_ALT */
|
||||
#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
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -304,4 +304,34 @@ int mbedtls_platform_set_nv_seed(
|
|||
#endif /* MBEDTLS_PLATFORM_NV_SEED_ALT */
|
||||
#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 */
|
||||
|
|
Loading…
Reference in a new issue