12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- #include <assert.h>
- #include <stddef.h>
- #include <mbedtls/memory_buffer_alloc.h>
- #include <mbedtls/platform.h>
- #include <mbedtls/version.h>
- #include <common/debug.h>
- #include <drivers/auth/mbedtls/mbedtls_common.h>
- #include <plat/common/platform.h>
- static void cleanup(void)
- {
- ERROR("EXIT from BL2\n");
- panic();
- }
- void mbedtls_init(void)
- {
- static int ready;
- void *heap_addr;
- size_t heap_size = 0;
- int err;
- if (!ready) {
- if (atexit(cleanup))
- panic();
- err = plat_get_mbedtls_heap(&heap_addr, &heap_size);
-
- if (err < 0) {
- ERROR("Mbed TLS failed to get a heap\n");
- panic();
- }
- assert(heap_size >= TF_MBEDTLS_HEAP_SIZE);
-
- mbedtls_memory_buffer_alloc_init(heap_addr, heap_size);
- #ifdef MBEDTLS_PLATFORM_SNPRINTF_ALT
- mbedtls_platform_set_snprintf(snprintf);
- #endif
- ready = 1;
- }
- }
- int get_mbedtls_heap_helper(void **heap_addr, size_t *heap_size)
- {
- static unsigned char heap[TF_MBEDTLS_HEAP_SIZE];
- assert(heap_addr != NULL);
- assert(heap_size != NULL);
- *heap_addr = heap;
- *heap_size = sizeof(heap);
- return 0;
- }
|