1640ba634SRyan Everett /* 208f8c0a5SLauren Wehrmeister * Copyright (c) 2023-2025, Arm Limited. All rights reserved. 3640ba634SRyan Everett * 4640ba634SRyan Everett * SPDX-License-Identifier: BSD-3-Clause 5640ba634SRyan Everett */ 6640ba634SRyan Everett 7640ba634SRyan Everett /** 8640ba634SRyan Everett * This set of compile-time options may be used to enable 9640ba634SRyan Everett * or disable features selectively, and reduce the global 10640ba634SRyan Everett * memory footprint. 11640ba634SRyan Everett */ 12640ba634SRyan Everett 13640ba634SRyan Everett /* 14*5affb6a7SSlava Andrianov * This file is compatible with versions >= 3.6.5 15c307efceSRyan Everett */ 16*5affb6a7SSlava Andrianov #define MBEDTLS_CONFIG_VERSION 0x03060500 17c307efceSRyan Everett 18c307efceSRyan Everett /* 19640ba634SRyan Everett * Key algorithms currently supported on mbed TLS libraries 20640ba634SRyan Everett */ 21640ba634SRyan Everett #define TF_MBEDTLS_RSA 1 22640ba634SRyan Everett #define TF_MBEDTLS_ECDSA 2 23640ba634SRyan Everett #define TF_MBEDTLS_RSA_AND_ECDSA 3 24640ba634SRyan Everett 25640ba634SRyan Everett #define TF_MBEDTLS_USE_RSA (TF_MBEDTLS_KEY_ALG_ID == TF_MBEDTLS_RSA \ 26640ba634SRyan Everett || TF_MBEDTLS_KEY_ALG_ID == TF_MBEDTLS_RSA_AND_ECDSA) 27640ba634SRyan Everett #define TF_MBEDTLS_USE_ECDSA (TF_MBEDTLS_KEY_ALG_ID == TF_MBEDTLS_ECDSA \ 28640ba634SRyan Everett || TF_MBEDTLS_KEY_ALG_ID == TF_MBEDTLS_RSA_AND_ECDSA) 29640ba634SRyan Everett 30640ba634SRyan Everett /* 31640ba634SRyan Everett * Hash algorithms currently supported on mbed TLS libraries 32640ba634SRyan Everett */ 33640ba634SRyan Everett #define TF_MBEDTLS_SHA256 1 34640ba634SRyan Everett #define TF_MBEDTLS_SHA384 2 35640ba634SRyan Everett #define TF_MBEDTLS_SHA512 3 36640ba634SRyan Everett 37640ba634SRyan Everett /* 38640ba634SRyan Everett * Configuration file to build mbed TLS with the required features for 39640ba634SRyan Everett * Trusted Boot 40640ba634SRyan Everett */ 41640ba634SRyan Everett 42640ba634SRyan Everett #define MBEDTLS_PLATFORM_MEMORY 43640ba634SRyan Everett #define MBEDTLS_PLATFORM_NO_STD_FUNCTIONS 44640ba634SRyan Everett /* Prevent mbed TLS from using snprintf so that it can use tf_snprintf. */ 45640ba634SRyan Everett #define MBEDTLS_PLATFORM_SNPRINTF_ALT 46640ba634SRyan Everett 47640ba634SRyan Everett #define MBEDTLS_PKCS1_V21 48640ba634SRyan Everett 49640ba634SRyan Everett #define MBEDTLS_ASN1_PARSE_C 50640ba634SRyan Everett #define MBEDTLS_ASN1_WRITE_C 51640ba634SRyan Everett 52640ba634SRyan Everett #define MBEDTLS_BASE64_C 53640ba634SRyan Everett #define MBEDTLS_BIGNUM_C 54640ba634SRyan Everett 55640ba634SRyan Everett #define MBEDTLS_ERROR_C 56640ba634SRyan Everett #define MBEDTLS_MD_C 57640ba634SRyan Everett 58640ba634SRyan Everett #define MBEDTLS_MEMORY_BUFFER_ALLOC_C 59640ba634SRyan Everett #define MBEDTLS_OID_C 60640ba634SRyan Everett 61640ba634SRyan Everett #define MBEDTLS_PK_C 62640ba634SRyan Everett #define MBEDTLS_PK_PARSE_C 63640ba634SRyan Everett #define MBEDTLS_PK_WRITE_C 64640ba634SRyan Everett 65640ba634SRyan Everett #define MBEDTLS_PLATFORM_C 66640ba634SRyan Everett 67640ba634SRyan Everett #if TF_MBEDTLS_USE_ECDSA 68640ba634SRyan Everett #define MBEDTLS_ECDSA_C 69640ba634SRyan Everett #define MBEDTLS_ECP_C 70640ba634SRyan Everett #if TF_MBEDTLS_KEY_SIZE == 384 71640ba634SRyan Everett #define MBEDTLS_ECP_DP_SECP384R1_ENABLED 72640ba634SRyan Everett #else 73640ba634SRyan Everett #define MBEDTLS_ECP_DP_SECP256R1_ENABLED 74640ba634SRyan Everett #endif 75640ba634SRyan Everett #endif 76640ba634SRyan Everett #if TF_MBEDTLS_USE_RSA 77640ba634SRyan Everett #define MBEDTLS_RSA_C 78640ba634SRyan Everett #define MBEDTLS_X509_RSASSA_PSS_SUPPORT 79640ba634SRyan Everett #endif 80640ba634SRyan Everett 81640ba634SRyan Everett /* Enable hash algorithms based on TBB or Measured Boot */ 82640ba634SRyan Everett #if (TF_MBEDTLS_HASH_ALG_ID == TF_MBEDTLS_SHA256) || defined(TF_MBEDTLS_MBOOT_USE_SHA256) 83640ba634SRyan Everett #define MBEDTLS_SHA256_C 84640ba634SRyan Everett #endif 85640ba634SRyan Everett 86640ba634SRyan Everett #if (TF_MBEDTLS_HASH_ALG_ID == TF_MBEDTLS_SHA384) || defined(TF_MBEDTLS_MBOOT_USE_SHA384) 87640ba634SRyan Everett #define MBEDTLS_SHA384_C 88640ba634SRyan Everett #endif 89640ba634SRyan Everett 90640ba634SRyan Everett #if (TF_MBEDTLS_HASH_ALG_ID == TF_MBEDTLS_SHA512) || defined(TF_MBEDTLS_MBOOT_USE_SHA512) 91640ba634SRyan Everett #define MBEDTLS_SHA512_C 92640ba634SRyan Everett #endif 93640ba634SRyan Everett 94640ba634SRyan Everett #define MBEDTLS_VERSION_C 95640ba634SRyan Everett 96640ba634SRyan Everett #define MBEDTLS_X509_USE_C 97640ba634SRyan Everett #define MBEDTLS_X509_CRT_PARSE_C 98640ba634SRyan Everett 99640ba634SRyan Everett #if TF_MBEDTLS_USE_AES_GCM 100640ba634SRyan Everett #define MBEDTLS_AES_C 101640ba634SRyan Everett #define MBEDTLS_CIPHER_C 102640ba634SRyan Everett #define MBEDTLS_GCM_C 103640ba634SRyan Everett #endif 104640ba634SRyan Everett 105640ba634SRyan Everett /* MPI / BIGNUM options */ 106640ba634SRyan Everett 107640ba634SRyan Everett /* Note: Lower numbers trade longer execution time for less RAM allocation */ 108640ba634SRyan Everett #define MBEDTLS_MPI_WINDOW_SIZE 1 109640ba634SRyan Everett 110640ba634SRyan Everett #if TF_MBEDTLS_USE_RSA 111640ba634SRyan Everett #if TF_MBEDTLS_KEY_SIZE <= 2048 112640ba634SRyan Everett #define MBEDTLS_MPI_MAX_SIZE 256 113640ba634SRyan Everett #else 114640ba634SRyan Everett #define MBEDTLS_MPI_MAX_SIZE 512 115640ba634SRyan Everett #endif 116640ba634SRyan Everett #else 117640ba634SRyan Everett #define MBEDTLS_MPI_MAX_SIZE 256 118640ba634SRyan Everett #endif 119640ba634SRyan Everett 120640ba634SRyan Everett /* Memory buffer allocator options */ 121640ba634SRyan Everett #define MBEDTLS_MEMORY_ALIGN_MULTIPLE 8 122640ba634SRyan Everett 123640ba634SRyan Everett /* 124640ba634SRyan Everett * Prevent the use of 128-bit division which 125640ba634SRyan Everett * creates dependency on external libraries. 126640ba634SRyan Everett */ 127640ba634SRyan Everett #define MBEDTLS_NO_UDBL_DIVISION 128640ba634SRyan Everett 129640ba634SRyan Everett #ifndef __ASSEMBLER__ 130640ba634SRyan Everett /* System headers required to build mbed TLS with the current configuration */ 131640ba634SRyan Everett #include <stdlib.h> 132640ba634SRyan Everett #endif 133640ba634SRyan Everett 134640ba634SRyan Everett /* 13552d29345SRyan Everett * Determine Mbed TLS heap size. 136640ba634SRyan Everett */ 137640ba634SRyan Everett #if TF_MBEDTLS_USE_ECDSA 13852d29345SRyan Everett #define TF_MBEDTLS_HEAP_SIZE U(13 * 1024) 139640ba634SRyan Everett #elif TF_MBEDTLS_USE_RSA 140640ba634SRyan Everett #if TF_MBEDTLS_KEY_SIZE <= 2048 14152d29345SRyan Everett #define TF_MBEDTLS_HEAP_SIZE U(7 * 1024) 142640ba634SRyan Everett #else 14352d29345SRyan Everett #define TF_MBEDTLS_HEAP_SIZE U(11 * 1024) 144640ba634SRyan Everett #endif 145640ba634SRyan Everett #endif 146640ba634SRyan Everett 147640ba634SRyan Everett /* 148640ba634SRyan Everett * Warn if errors from certain functions are ignored. 149640ba634SRyan Everett * 150640ba634SRyan Everett * The warnings are always enabled (where supported) for critical functions 151640ba634SRyan Everett * where ignoring the return value is almost always a bug. This macro extends 152640ba634SRyan Everett * the warnings to more functions. 153640ba634SRyan Everett */ 154640ba634SRyan Everett #define MBEDTLS_CHECK_RETURN_WARNING 155b57468b3SManish V Badarkhe 156b57468b3SManish V Badarkhe /* 157b57468b3SManish V Badarkhe * Use an implementation of SHA-256 with a smaller memory footprint but reduced 158b57468b3SManish V Badarkhe * speed. 159b57468b3SManish V Badarkhe */ 160b57468b3SManish V Badarkhe #define MBEDTLS_SHA256_SMALLER 161