🔒 Sources for TREZOR firmware
C Python C++ Objective-C Makefile Perl Shell
Latest commit 32fb7e9 Jan 22, 2017 @jhoenicke jhoenicke committed with prusnak Ethereum EIP-155 replay protection
Added chain_id field in sign transaction.
If chain_id is set use hashing as specified in EIP-155.
Permalink
Failed to load latest commit information.
bootloader mytrezor.com -> trezor.io/start Jan 10, 2017
demo remove DialogIcon enum, use bitmap structure directly Jun 8, 2016
firmware Ethereum EIP-155 replay protection Jan 22, 2017
gen New Matrix-based recovery Nov 23, 2016
gitian add gitian build (work in progress) Jan 19, 2016
vendor Updated trezor-common Jan 22, 2017
.gitignore bootloader source code Oct 23, 2014
.gitmodules move submodules to vendor subdirectory Dec 15, 2015
.travis.yml add webhooks to travis Nov 23, 2016
COPYING import v1.0.0 Apr 29, 2014
ChangeLog Correcting 1.3.3 changelog Jan 17, 2017
Dockerfile add python-ecdsa dependency Jul 23, 2016
Makefile timer: Use Cortex-M3 SysTick timers Nov 17, 2016
Makefile.include Makefile: Generate dependency files (#141) Jan 15, 2017
README.md update readme Jan 10, 2017
bootloader-docker-build.sh add set -e to shell scripts Jul 3, 2016
buttons.c import v1.0.0 Apr 29, 2014
buttons.h cleanup oledDrawChar code Nov 18, 2015
firmware-docker-build.sh sign firmware inside docker container Aug 29, 2016
firmware-fingerprint.sh add set -e to shell scripts Jul 3, 2016
layout.c remove DialogIcon enum, use bitmap structure directly Jun 8, 2016
layout.h remove DialogIcon enum, use bitmap structure directly Jun 8, 2016
memory.c use hdnode_private_ckd_cached where appropriate Jan 26, 2015
memory.h import v1.0.0 Apr 29, 2014
memory.ld import v1.0.0 Apr 29, 2014
memory_app_0.0.0.ld import v1.0.0 Apr 29, 2014
memory_app_1.0.0.ld import v1.0.0 Apr 29, 2014
oled.c fix when oled triangle is shown Jan 19, 2017
oled.h fix when oled triangle is shown Jan 19, 2017
rng.c use Knuth shuffles Feb 13, 2015
rng.h use Knuth shuffles Feb 13, 2015
serialno.c fix unaligned access in serialno; update trezor-crypto Aug 29, 2016
serialno.h import v1.0.0 Apr 29, 2014
setup.c Faster SPI communication Aug 26, 2016
setup.h move APPVER guards from includes to app code Jul 7, 2014
timer.c timer: Fix non-critical integer overflow (#129) Nov 23, 2016
timer.h timer: Fix non-critical integer overflow (#129) Nov 23, 2016
util.c import v1.0.0 Apr 29, 2014
util.h fix usage of inline/static Feb 15, 2016

README.md

TREZOR Firmware

Build Status gitter

https://trezor.io/

How to build TREZOR firmware?

  1. Install Docker
  2. git clone https://github.com/trezor/trezor-mcu.git
  3. cd trezor-mcu
  4. ./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?

  1. Install Docker
  2. git clone https://github.com/trezor/trezor-mcu.git
  3. cd trezor-mcu
  4. ./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?

  1. Pick version of firmware binary listed on https://wallet.trezor.io/data/firmware/releases.json
  2. Download it: wget -O trezor.signed.bin https://wallet.trezor.io/data/firmware/trezor-1.3.6.bin
  3. ./firmware-fingerprint.sh trezor.signed.bin

Step 3 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.