mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-01-11 16:00:57 +00:00
da98a3a6fd
Instead of reflashing the whole storage, we use a designated area in the second storage block, where we mark each PIN failure by a single zero bit. This is because one can set bits in flash to zero but not to one. If the PIN was entered successfully the whole word is set to zero and the next word stores the new PIN failure counter. |
||
---|---|---|
bootloader | ||
demo | ||
firmware | ||
gen | ||
gitian | ||
vendor | ||
.gitignore | ||
.gitmodules | ||
.travis.yml | ||
bootloader-docker-build.sh | ||
buttons.c | ||
buttons.h | ||
COPYING | ||
Dockerfile | ||
firmware-docker-build.sh | ||
firmware-fingerprint.sh | ||
layout.c | ||
layout.h | ||
Makefile | ||
Makefile.include | ||
memory_app_0.0.0.ld | ||
memory_app_1.0.0.ld | ||
memory.c | ||
memory.h | ||
memory.ld | ||
oled.c | ||
oled.h | ||
README.md | ||
rng.c | ||
rng.h | ||
serialno.c | ||
serialno.h | ||
setup.c | ||
setup.h | ||
util.c | ||
util.h |
TREZOR Firmware
How to build TREZOR firmware?
- Install Docker
git clone https://github.com/trezor/trezor-mcu.git
cd trezor-mcu
./firmware-docker-build.sh TAG
(where TAG is v1.3.2 for example, if left blank the script builds latest commit)
This creates file output/trezor-TAG.bin
and prints its fingerprint at the last line of the build log.
How to build TREZOR bootloader?
- Install Docker
git clone https://github.com/trezor/trezor-mcu.git
cd trezor-mcu
./bootloader-docker-build.sh
This creates file output/bootloader.bin
and prints its fingerprint and size at the last line of the build log.
How to get fingerprint of firmware signed and distributed by SatoshiLabs?
- Pick version of firmware binary listed on https://mytrezor.com/data/firmware/releases.json
- Download it:
wget -O trezor.signed.bin.hex https://mytrezor.com/data/firmware/trezor-1.1.0.bin.hex
xxd -r -p trezor.signed.bin.hex trezor.signed.bin
./firmware-fingerprint.sh trezor.signed.bin
Step 4 should produce the same sha256 fingerprint like your local build (for the same version tag).
The reasoning for firmware-fingerprint.sh
script is that signed firmware has special header holding signatures themselves, which must be avoided while calculating the fingerprint.