1
0
mirror of https://github.com/trezor/trezor-firmware.git synced 2024-11-22 15:38:11 +00:00

build: don't convert from png in build_vendorheader, remove vendorheader.bin from vcs

This commit is contained in:
Pavol Rusnak 2017-04-01 23:14:55 +02:00
parent 5c227a4a47
commit 1eff07f84d
No known key found for this signature in database
GPG Key ID: 91F3B339B9A02A3D
5 changed files with 16 additions and 18 deletions

View File

@ -10,6 +10,8 @@ install:
- sudo apt-get install -y build-essential gcc-multilib gcc-arm-embedded
script:
- make vendorheader
- make build_cross
- make build_bootloader

View File

@ -24,8 +24,8 @@ vendor: ## update git submodules
res: ## update resources
./tools/res_collect
vendorheader: ## contruct default vendor header
./tools/build_vendorheader '0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000,0000000000000000000000000000000000000000000000000000000000000000' 2 1.1 SatoshiLabs assets/satoshilabs_120.png micropython/firmware/vendorheader.bin
vendorheader: ## construct default vendor header
./tools/build_vendorheader '0000000000000000000000000000000000000000000000000000000000000000:0000000000000000000000000000000000000000000000000000000000000000:0000000000000000000000000000000000000000000000000000000000000000' 2 1.1 SatoshiLabs assets/satoshilabs_120.toif micropython/firmware/vendorheader.bin
## emulator commands:

View File

@ -1 +1,2 @@
build/
vendorheader.bin

View File

@ -1,45 +1,40 @@
#!/usr/bin/env python3
import sys
import struct
import re
import binascii
import os
import imp
png2toi = imp.load_source('png2toi', os.path.dirname(__file__) + '/png2toi')
# encode vendor name, add length byte and padding to multiple of 4
def encodevendor(vname):
def encode_vendor(vname):
vbin = vname.encode('utf-8')
vbin = struct.pack('<B',len(vbin)) + vbin
vbin = struct.pack('<B', len(vbin)) + vbin
vbin += b'\0' * (-len(vbin) & 3)
return vbin
def encodekey(key):
if len(key) != 64:
raise Exception("Wrong key length")
return binascii.unhexlify(key)
def encode_pubkey(pubkey):
if len(pubkey) != 64:
raise Exception('Wrong public key length')
return binascii.unhexlify(pubkey)
def main():
if len(sys.argv) < 7:
print('Usage build_vendorheader key1hex,... m version vendorname vendorimage.png vendorimage.bin')
print('Usage build_vendorheader "pubkey1hex:pubkey2hex:..." m version vendorname vendorimage.toif vendorheader.bin')
return 1
keys = [encodekey(x) for x in sys.argv[1].split(',')]
keys = [encode_pubkey(x) for x in sys.argv[1].split(':')]
m = int(sys.argv[2])
(vmajor, vminor) = [int(x) for x in sys.argv[3].split('.')]
vname = sys.argv[4]
ifn = sys.argv[5]
ofn = sys.argv[6]
if not ifn.endswith('.png'):
print('Must provide PNG file')
if not ifn.endswith('.toif'):
print('Must provide TOIF file')
return 2
expiry = 0
vheader = b'TRZV' + struct.pack('<IIBBBB', 0, expiry, vmajor, vminor, m, len(keys))
for k in keys:
vheader += k
vheader += encodevendor(vname) + png2toi.process_image(ifn)
vheader += encode_vendor(vname) + open(ifn, 'rb').read()
padding = 65 + (-len(vheader) - 65) & 511
vheader += b'\0' * padding