Skip to content

Configuration Equivalents

Mbed TLS option wolfSSL configure option user_settings.h macro
MBEDTLS_SSL_PROTO_TLS1_3 On by default (--enable-tls13) WOLFSSL_TLS13
MBEDTLS_SSL_PROTO_DTLS --enable-dtls (add --enable-dtls13 for DTLS 1.3) WOLFSSL_DTLS, WOLFSSL_DTLS13
MBEDTLS_SSL_DTLS_CONNECTION_ID --enable-dtlscid WOLFSSL_DTLS_CID
MBEDTLS_SSL_DTLS_SRTP --enable-srtp WOLFSSL_SRTP
MBEDTLS_SSL_SERVER_NAME_INDICATION --enable-sni (on by default only on x86 and aarch64 hosts) HAVE_SNI
MBEDTLS_SSL_ALPN --enable-alpn HAVE_ALPN
MBEDTLS_SSL_SESSION_TICKETS --enable-session-ticket; with wolfSSL 5.9.4 and earlier, a client that talks to Mbed TLS TLS 1.3 servers also needs --enable-ticket-nonce-malloc HAVE_SESSION_TICKET, WOLFSSL_TICKET_NONCE_MALLOC
MBEDTLS_SSL_EARLY_DATA --enable-earlydata plus --enable-session-ticket or --enable-psk WOLFSSL_EARLY_DATA
MBEDTLS_SSL_MAX_FRAGMENT_LENGTH --enable-maxfragment HAVE_MAX_FRAGMENT
MBEDTLS_SSL_RENEGOTIATION --enable-secure-renegotiation, only if the application enables renegotiation with mbedtls_ssl_conf_renegotiation() HAVE_SECURE_RENEGOTIATION
MBEDTLS_KEY_EXCHANGE_*PSK* --enable-psk (no RSA-PSK suites) Leave NO_PSK undefined
MBEDTLS_KEY_EXCHANGE_RSA_ENABLED (3.6) CFLAGS=-DWOLFSSL_STATIC_RSA; static RSA has no forward secrecy and is gone in 4.x WOLFSSL_STATIC_RSA
MBEDTLS_CCM_C / PSA_WANT_ALG_CCM --enable-aesccm HAVE_AESCCM
PSA_WANT_ECC_MONTGOMERY_255 / MBEDTLS_ECP_DP_CURVE25519_ENABLED --enable-curve25519 HAVE_CURVE25519
MBEDTLS_LMS_C --enable-lms WOLFSSL_HAVE_LMS
No equivalent (ML-KEM) On by default (--enable-mlkem); pure ML-KEM key exchange needs --enable-tls-mlkem-standalone WOLFSSL_HAVE_MLKEM (with WOLFSSL_SHA3, WOLFSSL_SHAKE128, WOLFSSL_SHAKE256), WOLFSSL_PQC_HYBRIDS and WOLFSSL_TLS_NO_MLKEM_STANDALONE to match the configure default
Experimental ML-DSA-87 (development branch only) --enable-mldsa, --enable-slhdsa WOLFSSL_HAVE_MLDSA, WOLFSSL_HAVE_SLHDSA (with WOLFSSL_SHA3, WOLFSSL_SHAKE128, WOLFSSL_SHAKE256)
MBEDTLS_MEMORY_BUFFER_ALLOC_C --enable-staticmemory WOLFSSL_STATIC_MEMORY
MBEDTLS_THREADING_C On by default (--enable-singlethreaded to remove) Define SINGLE_THREADED to remove
MBEDTLS_DEBUG_C --enable-debug DEBUG_WOLFSSL
Crypto MBEDTLS_*_ALT, PSA drivers --enable-cryptocb WOLF_CRYPTO_CB

The defaults in this table apply to ./configure and CMake. In a user_settings.h build, features such as TLS 1.3, ML-KEM, the hybrid groups and SNI are on only if you define them, so start from examples/configs/user_settings_tls13.h (or user_settings_dtls13.h, user_settings_pq.h) rather than an empty file. None of these templates enables the hybrid groups. Add WOLFSSL_PQC_HYBRIDS and WOLFSSL_TLS_NO_MLKEM_STANDALONE to user_settings_pq.h; the TLS 1.3 and DTLS 1.3 templates also need WOLFSSL_HAVE_MLKEM, WOLFSSL_SHA3, WOLFSSL_SHAKE128 and WOLFSSL_SHAKE256, and the DTLS 1.3 template needs HAVE_SNI and WOLFSSL_DTLS_CH_FRAG. A DTLS 1.3 server must also call wolfSSL_dtls13_allow_ch_frag() to accept a fragmented ClientHello. Only the second ClientHello, which carries the cookie, may be fragmented.