blob: e6a89e850ef379442638362c29ca300f14008564 [file] [log] [blame] [view]
Manuel Pégourié-Gonnard63e7eba2015-07-28 14:17:48 +02001# mbed TLS
2
Simon Butcherdf819242015-08-19 19:33:27 +01003mbed TLS (formerly known as PolarSSL) makes it trivially easy for developers to include cryptographic and SSL/TLS capabilities in their embedded products, with a minimal code footprint. It offers an SSL library with an intuitive API and readable source code.
Manuel Pégourié-Gonnard63e7eba2015-07-28 14:17:48 +02004
Irit Arkin4d8edd52015-08-24 13:50:25 +01005The Beta release of mbed TLS integrates the mbed TLS library into mbed OS, mbed SDK and yotta. This is a preview release intended for evaluation only and is **not recommended for deployment**. It currently implements no secure source of random numbers, weakening its security.
Manuel Pégourié-Gonnard63e7eba2015-07-28 14:17:48 +02006
7## Sample programs
8
9This release includes the following examples:
10
Irit Arkin4d8edd52015-08-24 13:50:25 +0100111. [**TLS client:**](https://github.com/ARMmbed/mbedtls/blob/development/yotta/data/example-tls-client) found in `test/example-tls-client`. Downloads a test file from an HTTPS server and looks for a specific string in that file.
Manuel Pégourié-Gonnard63e7eba2015-07-28 14:17:48 +020012
Irit Arkin4d8edd52015-08-24 13:50:25 +0100132. [**Self test:**](https://github.com/ARMmbed/mbedtls/blob/development/yotta/data/example-selftest) found in `test/example-selftest`. Tests different basic functions in the mbed TLS library.
Manuel Pégourié-Gonnard63e7eba2015-07-28 14:17:48 +020014
Irit Arkin4d8edd52015-08-24 13:50:25 +0100153. [**Benchmark:**](https://github.com/ARMmbed/mbedtls/blob/development/yotta/data/example-benchmark) found in `test/example-benchmark`. Measures the time taken to perform basic cryptographic functions used in the library.
Manuel Pégourié-Gonnard63e7eba2015-07-28 14:17:48 +020016
Irit Arkin4d8edd52015-08-24 13:50:25 +010017These examples are integrated as yotta tests, so that they are built automatically when you build mbed TLS. You'll find more examples in the various `test/example-*` directories.
Manuel Pégourié-Gonnard63e7eba2015-07-28 14:17:48 +020018
Irit Arkin4d8edd52015-08-24 13:50:25 +010019## Running mbed TLS
Manuel Pégourié-Gonnard63e7eba2015-07-28 14:17:48 +020020
Irit Arkin4d8edd52015-08-24 13:50:25 +010021To build and run the example, please follow the instructions in the [TLS client example](https://github.com/ARMmbed/mbedtls/blob/development/yotta/data/example-tls-client) directory. These include a list of prerequisites and an explanation of building mbed TLS with yotta.
Manuel Pégourié-Gonnard63e7eba2015-07-28 14:17:48 +020022
Manuel Pégourié-Gonnard32da9f62015-07-31 15:52:30 +020023## Configuring mbed TLS features
24
Irit Arkin4d8edd52015-08-24 13:50:25 +010025mbed TLS makes it easy to disable any feature during compilation that isn't required for a particular project. The default configuration enables all modern and widely-used features, which should meet the needs of new projects, and disables all features that are older or less common, to minimize the code footprint.
Manuel Pégourié-Gonnard32da9f62015-07-31 15:52:30 +020026
Irit Arkin4d8edd52015-08-24 13:50:25 +010027The list of available compilation flags is presented in the fully documented [config.h file](https://github.com/ARMmbed/mbedtls/blob/development/include/mbedtls/config.h), present in the `mbedtls` directory of the yotta module.
28
29If you need to adjust those flags, you can provide your own configuration file with suitable `#define` and `#undef` statements. These will be included between the default definitions and the sanity checks. Your configuration file should be in your application's `include` directory, and can be named freely; you just need to let mbed TLS know the file's name. To do that, use yotta's [configuration system](http://docs.yottabuild.org/reference/config.html). The file's name should be in your `config.json` file, under mbedtls, as the key `user-config-file`. For example:
Manuel Pégourié-Gonnard32da9f62015-07-31 15:52:30 +020030
31 {
32 "mbedtls": {
33 "user-config-file": "\"myapp/my_mbedtls_config_changes.h\""
34 }
35 }
36
Irit Arkin4d8edd52015-08-24 13:50:25 +010037Please note: you need to provide the exact name that will be used in the `#include` directive, including the `<>` or quotes around the name.
Manuel Pégourié-Gonnard32da9f62015-07-31 15:52:30 +020038
Manuel Pégourié-Gonnard63e7eba2015-07-28 14:17:48 +020039## Contributing
40
Manuel Pégourié-Gonnard3dce9ec2015-08-27 10:07:09 +020041We gratefully accept bug reports and contributions from the community. There are some requirements we need to fulfill in order to be able to integrate contributions:
Manuel Pégourié-Gonnard63e7eba2015-07-28 14:17:48 +020042
Manuel Pégourié-Gonnard324fc022015-08-20 11:51:53 +020043* Simple bug fixes to existing code do not contain copyright themselves and we can integrate without issue. The same is true of trivial contributions.
Manuel Pégourié-Gonnard63e7eba2015-07-28 14:17:48 +020044
Irit Arkin4d8edd52015-08-24 13:50:25 +010045* For larger contributions, such as a new feature, the code can possibly fall under copyright law. We then need your consent to share in the ownership of the copyright. We have a form for this, which we will send to you in case you submit a contribution or pull request that we deem this necessary for.
Manuel Pégourié-Gonnard63e7eba2015-07-28 14:17:48 +020046
47To contribute, please:
48
49* [Check for open issues](https://github.com/ARMmbed/mbedtls/issues) or [start a discussion](https://tls.mbed.org/discussions) around a feature idea or a bug.
50
Irit Arkin4d8edd52015-08-24 13:50:25 +010051* Fork the [mbed TLS repository on GitHub](https://github.com/ARMmbed/mbedtls) to start making your changes. As a general rule, you should use the "development" branch as a basis.
Manuel Pégourié-Gonnard63e7eba2015-07-28 14:17:48 +020052
53* Write a test that shows that the bug was fixed or that the feature works as expected.
54
55* Send a pull request and bug us until it gets merged and published. We will include your name in the ChangeLog :)