xref: /rk3399_ARM-atf/drivers/auth/mbedtls/mbedtls_common.c (revision 6d01a463348b04af2afa3c00579ebc6ecd12eaf1)
17d37aa17SJuan Castillo /*
23b94189aSRoberto Vargas  * Copyright (c) 2015-2018, ARM Limited and Contributors. All rights reserved.
37d37aa17SJuan Castillo  *
482cb2c1aSdp-arm  * SPDX-License-Identifier: BSD-3-Clause
57d37aa17SJuan Castillo  */
67d37aa17SJuan Castillo 
7*6d01a463SJohn Tsichritzis #include <assert.h>
8ab1794f5SAntonio Nino Diaz #include <debug.h>
97d37aa17SJuan Castillo /* mbed TLS headers */
10649dbf6fSJuan Castillo #include <mbedtls/memory_buffer_alloc.h>
11ab1794f5SAntonio Nino Diaz #include <mbedtls/platform.h>
123b94189aSRoberto Vargas #include <mbedtls_common.h>
13*6d01a463SJohn Tsichritzis #include <mbedtls_config.h>
14*6d01a463SJohn Tsichritzis #include <platform.h>
15*6d01a463SJohn Tsichritzis #include <stddef.h>
167d37aa17SJuan Castillo 
176c373345SRoberto Vargas static void cleanup(void)
186c373345SRoberto Vargas {
196c373345SRoberto Vargas 	ERROR("EXIT from BL2\n");
206c373345SRoberto Vargas 	panic();
216c373345SRoberto Vargas }
226c373345SRoberto Vargas 
237d37aa17SJuan Castillo /*
247d37aa17SJuan Castillo  * mbed TLS initialization function
257d37aa17SJuan Castillo  */
267d37aa17SJuan Castillo void mbedtls_init(void)
277d37aa17SJuan Castillo {
287d37aa17SJuan Castillo 	static int ready;
29*6d01a463SJohn Tsichritzis 	void *heap_addr;
30*6d01a463SJohn Tsichritzis 	size_t heap_size = 0;
31*6d01a463SJohn Tsichritzis 	int err;
327d37aa17SJuan Castillo 
337d37aa17SJuan Castillo 	if (!ready) {
346c373345SRoberto Vargas 		if (atexit(cleanup))
356c373345SRoberto Vargas 			panic();
366c373345SRoberto Vargas 
37*6d01a463SJohn Tsichritzis 		err = plat_get_mbedtls_heap(&heap_addr, &heap_size);
38*6d01a463SJohn Tsichritzis 
39*6d01a463SJohn Tsichritzis 		/* Ensure heap setup is proper */
40*6d01a463SJohn Tsichritzis 		if (err < 0) {
41*6d01a463SJohn Tsichritzis 			ERROR("Mbed TLS failed to get a heap\n");
42*6d01a463SJohn Tsichritzis 			panic();
43*6d01a463SJohn Tsichritzis 		}
44*6d01a463SJohn Tsichritzis 		assert(heap_size >= TF_MBEDTLS_HEAP_SIZE);
45*6d01a463SJohn Tsichritzis 
467d37aa17SJuan Castillo 		/* Initialize the mbed TLS heap */
47*6d01a463SJohn Tsichritzis 		mbedtls_memory_buffer_alloc_init(heap_addr, heap_size);
48ab1794f5SAntonio Nino Diaz 
49c46c18c5SAntonio Nino Diaz #ifdef MBEDTLS_PLATFORM_SNPRINTF_ALT
5039b6cc66SAntonio Nino Diaz 		mbedtls_platform_set_snprintf(snprintf);
51c46c18c5SAntonio Nino Diaz #endif
527d37aa17SJuan Castillo 		ready = 1;
537d37aa17SJuan Castillo 	}
547d37aa17SJuan Castillo }
55