A portable C library implementing TLS/DTLS protocols and X.509 certificate handling for embedded systems and general applications.
Mbed TLS is an open-source C library that implements the TLS and DTLS protocols along with X.509 certificate manipulation and cryptographic functions. It provides a portable, readable, and flexible solution for adding secure communication capabilities to applications, particularly targeting embedded systems with limited resources. The library also serves as a reference implementation of the PSA Cryptography API.
Embedded systems developers, IoT device manufacturers, and application developers needing a lightweight, portable TLS implementation for secure network communication in resource-constrained environments.
Developers choose Mbed TLS for its small code footprint, excellent portability across platforms, comprehensive TLS/DTLS implementation, and dual licensing (Apache-2.0/GPL-2.0-or-later). Its modular design allows extensive configuration to minimize resource usage while maintaining security standards.
An open source, portable, easy to use, readable and flexible TLS library, and reference implementation of the PSA Cryptography API. Releases are on a varying cadence, typically around 3 - 6 months between releases.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Designed with a small code footprint and configurable features, it minimizes memory and storage usage for IoT devices, as highlighted in its focus on resource-constrained environments.
Written in standard C99 with minimal platform dependencies, it runs on diverse architectures from microcontrollers to servers, supported by detailed porting guides.
Implements full TLS and DTLS protocols alongside X.509 certificate handling, providing a complete suite for secure network communication.
Allows fine-grained control via compile-time options in configuration files, enabling developers to include only needed features and reduce binary size.
Requires managing Git submodules, CMake configuration, and multiple tools like Python and Perl, which can be cumbersome for quick setup, as noted in the compilation steps.
As a C library, it lacks high-level abstractions, forcing developers to handle memory management and protocol details directly, increasing development time.
Sample programs are designed to demonstrate features but require significant adaptation for real-world use, as admitted in the README's example programs section.