David Brown | 37f8afd | 2017-09-12 10:59:39 -0600 | [diff] [blame] | 1 | # MCUboot Release Notes |
| 2 | |
| 3 | - Table of Contents |
| 4 | {:toc} |
| 5 | |
Fabio Utzig | 3c93901 | 2018-06-25 13:26:32 -0300 | [diff] [blame^] | 6 | ## Version 1.2.0 |
| 7 | |
| 8 | The 1.2.0 release of MCUboot brings a lot of fixes/updates, where much of the |
| 9 | changes were on the boot serial functionality and imgtool utility. There are |
| 10 | no breaking changes in MCUBoot functionality, but some of the CLI parameters |
| 11 | in imgtool were changed (either removed or added or updated). |
| 12 | |
| 13 | ### About this release |
| 14 | |
| 15 | - imgtool accepts .hex formatted input |
| 16 | - Logging system is now configurable |
| 17 | - Most Zephyr configuration has been switched to Kconfig |
| 18 | - Build system accepts .pem files in build system to autogenerate required |
| 19 | key arrays used internally |
| 20 | - Zephyr build switched to using built-in flash_map and TinyCBOR modules |
| 21 | - Serial boot has substantially decreased in space usage after refactorings |
| 22 | - Serial boot build doesn't require newlib-c anymore on Zephyr |
| 23 | - imgtool updates: |
| 24 | + "create" subcommand can be used as an alias for "sign" |
| 25 | + To allow imgtool to always perform the check that firmware does not |
| 26 | overflow the status area, `--slot-size` was added and `--pad` was updated |
| 27 | to act as a flag parameter. |
| 28 | + `--overwrite-only` can be passed if not using swap upgrades |
| 29 | + `--max-sectors` can be used to adjust the maximum amount of sectors that |
| 30 | a swap can handle; this value must also be configured for the bootloader |
| 31 | + `--pad-header` substitutes `--included-header` with reverted semantics, |
| 32 | so it's not required for firmware built by Zephyr build system |
| 33 | |
| 34 | ### Known issues |
| 35 | |
| 36 | None |
| 37 | |
Fabio Utzig | 49045cc | 2018-01-09 15:56:29 -0200 | [diff] [blame] | 38 | ## Version 1.1.0 |
| 39 | |
Carles Cufi | 90eda80 | 2018-01-29 18:33:20 +0100 | [diff] [blame] | 40 | The 1.1.0 release of MCUboot brings a lot of fixes/updates to its |
Fabio Utzig | 49045cc | 2018-01-09 15:56:29 -0200 | [diff] [blame] | 41 | inner workings, specially to its testing infrastructure which now |
| 42 | enables a more thorough quality assurance of many of the available |
| 43 | options. As expected of the 1.x.x release cycle, no breaking changes |
| 44 | were made. From the tooling perpective the main addition is |
| 45 | newt/imgtool support for password protected keys. |
| 46 | |
| 47 | ### About this release |
| 48 | |
| 49 | - serial recovery functionality support under Zephyr |
| 50 | - simulator: lots of refactors were applied, which result in the |
| 51 | simulator now leveraging the Rust testing infrastructure; testing |
| 52 | of ecdsa (secp256r1) was added |
| 53 | - imgtool: removed PKCS1.5 support, added support for password |
| 54 | protected keys |
| 55 | - tinycrypt 0.2.8 and the mbed-tls ASN1 parser are now bundled with |
| 56 | mcuboot (eg secp256r1 is now free of external dependencies!) |
| 57 | - Overwrite-only mode was updated to erase/copy only sectors that |
| 58 | actually store firmware |
| 59 | - A lot of small code and documentation fixes and updates. |
| 60 | |
| 61 | ### Known issues |
| 62 | |
| 63 | None |
| 64 | |
David Brown | 37f8afd | 2017-09-12 10:59:39 -0600 | [diff] [blame] | 65 | ## Version 1.0.0 |
| 66 | |
Carles Cufi | 90eda80 | 2018-01-29 18:33:20 +0100 | [diff] [blame] | 67 | The 1.0.0 release of MCUboot introduces a format change. It is |
David Brown | 37f8afd | 2017-09-12 10:59:39 -0600 | [diff] [blame] | 68 | important to either use the `imgtool.py` also from this release, or |
| 69 | pass the `-2` to recent versions of the `newt` tool in order to |
| 70 | generate image headers with the new format. There should be no |
| 71 | incompatible format changes throughout the 1.x.y release series. |
| 72 | |
| 73 | ### About this release |
| 74 | |
| 75 | - Header format change. This change was made to move all of the |
| 76 | information about signatures out of the header and into the TLV |
| 77 | block appended to the image. This allows |
| 78 | - The signature to be replaced without changing the image. |
| 79 | - Multiple signatures to be applied. This can be used, for example, |
| 80 | to sign an image with two algorithms, to support different |
| 81 | bootloader configurations based on these image. |
| 82 | - The public key is referred to by its SHA1 hash (or a prefix of the |
| 83 | hash), instead of an index that has to be maintained with the |
| 84 | bootloader. |
| 85 | - Allow new types of signatures in the future. |
| 86 | - Support for PKCS#1 v1.5 signatures has been dropped. All RSA |
| 87 | signatures should be made with PSS. The tools have been changed to |
| 88 | reflect this. |
| 89 | - The source for Tinycrypt has been placed in the MCUboot tree. A |
| 90 | recent version of Tinycrypt introduced breaking API changes. To |
| 91 | allow MCUboot to work across various platforms, we stop using the |
| 92 | Tinycrypt bundled with the OS platform, and use our own version. A |
| 93 | future release of MCUboot will update the Tinycrypt version. |
| 94 | - Support for some new targets: |
| 95 | - Nordic nRF51 and nRF52832 dev kits |
| 96 | - Hexiwear K64 |
| 97 | - Clearer sample applications have been added under `samples`. |
Fabio Utzig | 4dce6aa | 2018-02-12 15:31:32 -0200 | [diff] [blame] | 98 | - Test plans for [zephyr](testplan-zephyr.md), and |
| 99 | [mynewt](testplan-mynewt.md). |
David Brown | 37f8afd | 2017-09-12 10:59:39 -0600 | [diff] [blame] | 100 | - The simulator is now able to test RSA signatures. |
| 101 | - There is an unimplemented `load_addr` header for future support for |
| 102 | RAM loading in the bootloader. |
| 103 | - Numerous documentation. |
| 104 | |
| 105 | ### Known issues |
| 106 | |
| 107 | None |
| 108 | |
| 109 | ## Version 0.9.0 |
| 110 | |
Carles Cufi | 90eda80 | 2018-01-29 18:33:20 +0100 | [diff] [blame] | 111 | This is the first release of MCUboot, a secure bootloader for 32-bit MCUs. |
David Brown | 37f8afd | 2017-09-12 10:59:39 -0600 | [diff] [blame] | 112 | It is designed to be operating system-agnostic and works over any transport - |
| 113 | wired or wireless. It is also hardware independent, and relies on hardware |
| 114 | porting layers from the operating system it works with. For the first release, |
| 115 | we have support for three open source operating systems: Apache Mynewt, Zephyr |
| 116 | and RIOT. |
| 117 | |
| 118 | ### About this release |
| 119 | |
| 120 | - This release supports building with and running Apache Mynewt and Zephyr |
| 121 | targets. |
| 122 | - RIOT is supported as a running target. |
| 123 | - Image integrity is provided with SHA256. |
| 124 | - Image originator authenticity is provided supporting the following |
| 125 | signature algorithms: |
| 126 | - RSA 2048 and RSA PKCS#1 v1.5 or v2.1 |
| 127 | - Elliptic curve DSA with secp224r1 and secp256r1 |
| 128 | - Two firmware upgrade algorithms are provided: |
| 129 | - An overwrite only which upgrades slot 0 with the image in slot 1. |
| 130 | - A swapping upgrade which enables image test, allowing for rollback to a |
| 131 | previous known good image. |
| 132 | - Supports both mbed-TLS and tinycrypt as backend crypto libraries. One of them |
| 133 | must be defined and the chosen signing algorithm will require a particular |
| 134 | library according to this list: |
| 135 | - RSA 2048 needs mbed TLS |
| 136 | - ECDSA secp224r1 needs mbed TLS |
| 137 | - ECDSA secp256r1 needs tinycrypt as well as the ASN.1 code from mbed TLS |
| 138 | (so still needs that present). |
| 139 | |
| 140 | ### Known issues |
| 141 | |
| 142 | - The image header and TLV formats are planned to change with release 1.0: |
| 143 | https://runtimeco.atlassian.net/browse/MCUB-66 |