Logo Pico-Framework A web-first embedded framework for C++
Loading...
Searching...
No Matches
mbedtls_config.h
Go to the documentation of this file.
1/* Mbed TLS configuration for Pico HTTPS example ******************************
2 * *
3 * Configuration for the Mbed TLS library included in the Pico SDK and *
4 * required for the Pico HTTPS example. *
5 * *
6 * N.b. Not all options are strictly required; this is just an example *
7 * configuration. *
8 * *
9 * https://github.com/Mbed-TLS/mbedtls/blob/v2.28.2/include/mbedtls/config.h *
10 * *
11 ******************************************************************************/
12
13
14
15/* Misc **********************************************************************/
16
17// Workaround for some Mbed TLS source files using INT_MAX without including limits.h
18#include <limits.h>
19
20
21
22/* System ********************************************************************/
23
24#define MBEDTLS_HAVE_TIME
25
26
27/* Mbed TLS features *********************************************************/
28
29// Entropy
30#define MBEDTLS_NO_PLATFORM_ENTROPY // No HW entropy source
31#define MBEDTLS_ENTROPY_HARDWARE_ALT // Custom entropy collector (pico-sdk:pico_mbedtls.c)
32
33// Symmetric ciphers
34#define MBEDTLS_CIPHER_MODE_CBC // Cipher block chaining
35#define MBEDTLS_CIPHER_MODE_CFB // Cipher feedback mode
36#define MBEDTLS_CIPHER_MODE_CTR // Counter block cipher mode
37#define MBEDTLS_CIPHER_MODE_OFB // Output feedback mode
38#define MBEDTLS_CIPHER_MODE_XTS // XOR-encrypt-XOR
39#define MBEDTLS_CIPHER_PADDING_PKCS7 // Padding modes
40#define MBEDTLS_CIPHER_PADDING_ONE_AND_ZEROS
41#define MBEDTLS_CIPHER_PADDING_ZEROS_AND_LEN
42#define MBEDTLS_CIPHER_PADDING_ZEROS
43
44// Weak cipher suite removal
45#define MBEDTLS_REMOVE_ARC4_CIPHERSUITES // ARC4
46#define MBEDTLS_REMOVE_3DES_CIPHERSUITES // 3DES
47
48// Elliptic curves
49#define MBEDTLS_ECP_DP_SECP192R1_ENABLED
50#define MBEDTLS_ECP_DP_SECP224R1_ENABLED
51#define MBEDTLS_ECP_DP_SECP256R1_ENABLED
52#define MBEDTLS_ECP_DP_SECP384R1_ENABLED
53#define MBEDTLS_ECP_DP_SECP521R1_ENABLED
54#define MBEDTLS_ECP_DP_SECP192K1_ENABLED
55#define MBEDTLS_ECP_DP_SECP224K1_ENABLED
56#define MBEDTLS_ECP_DP_SECP256K1_ENABLED
57#define MBEDTLS_ECP_DP_BP256R1_ENABLED
58#define MBEDTLS_ECP_DP_BP384R1_ENABLED
59#define MBEDTLS_ECP_DP_BP512R1_ENABLED
60#define MBEDTLS_ECP_DP_CURVE25519_ENABLED
61#define MBEDTLS_ECP_DP_CURVE448_ENABLED
62#define MBEDTLS_ECP_NIST_OPTIM // NIST optimizations
63#define MBEDTLS_ECDSA_DETERMINISTIC // Deterministic ECDSA (more secure)
64
65// Key exchange
66#define MBEDTLS_KEY_EXCHANGE_RSA_ENABLED
67#define MBEDTLS_KEY_EXCHANGE_ECDHE_RSA_ENABLED
68#define MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED
69#define MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA_ENABLED
70#define MBEDTLS_KEY_EXCHANGE_ECDH_RSA_ENABLED
71
72// PKCS
73#define MBEDTLS_PKCS1_V15 // PKCS#1 v1.5 encoding
74#define MBEDTLS_PKCS1_V21 // PKCS#1 v2.1 encoding
75
76// TLS records
77#define MBEDTLS_SSL_ALL_ALERT_MESSAGES // Send alert records
78#define MBEDTLS_SSL_RECORD_CHECKING // Validate records
79
80// TLS extensions
81#define MBEDTLS_SSL_ENCRYPT_THEN_MAC // TLS extension (RFC 7366)
82#define MBEDTLS_SSL_EXTENDED_MASTER_SECRET // TLS extension (RFC 7627)
83//#define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH // TLS extension (RFC 6066)
84#define MBEDTLS_SSL_SERVER_NAME_INDICATION // TLS extension (RFC 6066)
85#define MBEDTLS_SSL_TRUNCATED_HMAC // TLS extension (RFC 6066)
86
87// Protocols
88#define MBEDTLS_SSL_PROTO_TLS1_2 // Enable TLS version 1.2
89
90// X.509
91#define MBEDTLS_X509_CHECK_KEY_USAGE // Verify keyUsage extension
92#define MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE // Verify extendedKeyUsage extension
93
94/* Modules *******************************************************************/
95
96// Ciphers
97#define MBEDTLS_CIPHER_C // Symmetric cipher generic code
98#define MBEDTLS_AES_C // AES
99#define MBEDTLS_GCM_C // Galois/Counter mode
100
101// Parsers
102#define MBEDTLS_ASN1_PARSE_C // ASN1
103#define MBEDTLS_PEM_PARSE_C // PEM
104#define MBEDTLS_PK_PARSE_C // PK
105
106// Hashing
107#define MBEDTLS_MD_C // MD generic code
108#define MBEDTLS_MD5_C // MD5
109#define MBEDTLS_POLY1305_C // Poly1305 MAC
110#define MBEDTLS_SHA256_C // SHA 256
111#define MBEDTLS_SHA512_C // SHA 512
112
113// Elliptic curves
114#define MBEDTLS_ECDH_C // Diffie-Hellman
115#define MBEDTLS_ECDSA_C // Signing
116#define MBEDTLS_ECP_C // GF(p) implementation
117
118// RSA
119#define MBEDTLS_RSA_C // RSA
120
121// Public Key
122#define MBEDTLS_PK_C // Public key generic code
123#define MBEDTLS_PKCS5_C // PKCS#5
124#define MBEDTLS_PKCS12_C // PKCS#12
125
126// SSL/TLS
127#define MBEDTLS_SSL_TLS_C // TLS generic code
128#define MBEDTLS_SSL_CLI_C // TLS client code
129
130// X.509 certificates
131#define MBEDTLS_X509_USE_C // Core
132#define MBEDTLS_X509_CRT_PARSE_C // Certificate parsing
133
134// Requirements
135#define MBEDTLS_ENTROPY_C // for ALTCP TLS
136#define MBEDTLS_BIGNUM_C // for define MBEDTLS_ECP_C, MBEDTLS_RSA_C, MBEDTLS_X509_USE_C
137#define MBEDTLS_BASE64_C // for MBEDTLS_PEM_PARSE_C
138#define MBEDTLS_HMAC_DRBG_C // for MBEDTLS_ECDSA_DETERMINISTIC
139#define MBEDTLS_CTR_DRBG_C // for MBEDTLS_AES_C
140#define MBEDTLS_OID_C // for MBEDTLS_RSA_C
141#define MBEDTLS_ASN1_WRITE_C // for MBEDTLS_ECDSA_C
142
143// Misc
144#define MBEDTLS_ERROR_C // Error code conversion
145#define MBEDTLS_PLATFORM_C // libc re-assignment
146
147// Debug
148//#define MBEDTLS_DEBUG_C // Debug functions
149//#define MBEDTLS_SSL_DEBUG_ALL // Debug output
150
151#define MBEDTLS_SSL_TLS1_3_COMPATIBILITY_MODE 1 // Enable TLS 1.3 compatibility mode (optional, may be needed if using older clients or servers that expect TLS 1.2 behavior)
152
153#define MBEDTLS_SSL_MAX_CONTENT_LEN 8192 // Increase maximum content size for SSL
154#define MBEDTLS_SSL_MAX_FRAGMENT_LENGTH 8192 // Increase fragment length (default 16384)
155#define MBEDTLS_MEMORY_DEBUG 1 // Enable memory debugging (optional)
156
157//#define MBEDTLS_SHA256_ALT // Use custom SHA256 implementation
158/* Module config *************************************************************/