Mbed TLS is a C library that implements TLS and DTLS protocols along with X.509 certificate manipulation and serves as a reference implementation of the PSA Cryptography API.
The library addresses the need for cryptographic and TLS functionality in resource-constrained environments through a deliberately compact code footprint. It provides three linked libraries: libtfpsacrypto for cryptographic operations, libmbedx509 for certificate handling, and libmbedtls for the TLS protocol layer. Configuration is managed through header files in the include directory, with a Python script available for programmatic adjustment of compile-time options. The tool includes pre-built configurations in the configs directory targeting specific use cases.
Developers should choose this library when building embedded systems or applications where code size matters and standard TLS functionality is required. It suits projects that need X.509 certificate support alongside cryptographic primitives and can be integrated into systems using CMake-based builds. The library builds with a C99 toolchain and has been actively tested against GCC, Clang, Arm Compiler, and Visual Studio. Documentation is available through ReadTheDocs and can be generated locally using Doxygen to match a specific compile-time configuration.
The project maintains a structured development process with clearly defined tool version requirements aligned to long-term support releases of major Linux distributions. Testing infrastructure relies on Perl and Python, with the latter required for code generation on the development branch. The library's three-component architecture creates specific linker ordering requirements that developers need to account for depending on their toolchain. Build configuration flexibility is provided through both manual editing and scripted approaches, allowing adaptation to diverse deployment scenarios.