arm-trusted-firmware/drivers/auth/mbedtls/mbedtls_common.c
John Tsichritzis 17e1335c89 Remove Mbed TLS dependency from plat_bl_common.c
Due to the shared Mbed TLS heap optimisation introduced in 6d01a463,
common code files were depending on Mbed TLS specific headers. This
dependency is now removed by moving the default, unoptimised heap
implementation inside the Mbed TLS specific files.

Change-Id: I11ea3eb4474f0d9b6cb79a2afd73a51a4a9b8994
Signed-off-by: John Tsichritzis <john.tsichritzis@arm.com>
2019-02-28 14:01:42 +00:00

74 lines
1.5 KiB
C

/*
* Copyright (c) 2015-2019, ARM Limited and Contributors. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <assert.h>
#include <stddef.h>
/* mbed TLS headers */
#include <mbedtls/memory_buffer_alloc.h>
#include <mbedtls/platform.h>
#include <common/debug.h>
#include <drivers/auth/mbedtls/mbedtls_common.h>
#include <drivers/auth/mbedtls/mbedtls_config.h>
#include <plat/common/platform.h>
#pragma weak plat_get_mbedtls_heap
static void cleanup(void)
{
ERROR("EXIT from BL2\n");
panic();
}
/*
* mbed TLS initialization function
*/
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);
/* Ensure heap setup is proper */
if (err < 0) {
ERROR("Mbed TLS failed to get a heap\n");
panic();
}
assert(heap_size >= TF_MBEDTLS_HEAP_SIZE);
/* Initialize the mbed TLS heap */
mbedtls_memory_buffer_alloc_init(heap_addr, heap_size);
#ifdef MBEDTLS_PLATFORM_SNPRINTF_ALT
mbedtls_platform_set_snprintf(snprintf);
#endif
ready = 1;
}
}
/*
* The following default implementation of the function simply returns the
* by default allocated heap.
*/
int plat_get_mbedtls_heap(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;
}