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.
diff --git a/include/mbedtls/platform.h b/include/mbedtls/platform.h
index b1b019e..a9ff7e4 100644
--- a/include/mbedtls/platform.h
+++ b/include/mbedtls/platform.h
@@ -288,6 +288,51 @@
#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