From 1946b6351eea0182bbd7ad4d520d7c47d819901b Mon Sep 17 00:00:00 2001 From: BTChip Date: Fri, 20 May 2016 08:35:13 +0200 Subject: [PATCH] Fix MCU firmware loading --- ledgerblue/hexLoader.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/ledgerblue/hexLoader.py b/ledgerblue/hexLoader.py index 3ade13f..b8c7bc8 100644 --- a/ledgerblue/hexLoader.py +++ b/ledgerblue/hexLoader.py @@ -22,12 +22,13 @@ import struct import hashlib class HexLoader: - def __init__(self, card, cla=0xF0, secure=False, key=None): + def __init__(self, card, cla=0xF0, secure=False, key=None, relative=True): self.card = card self.cla = cla self.secure = secure self.key = key self.iv = "\x00" * 16; + self.relative = relative def crc16(self, data): TABLE_CRC16_CCITT = [ @@ -132,7 +133,7 @@ class HexLoader: def load(self, erase_u8, max_length_per_apdu, hexAreas, bootaddr): initialAddress = 0 - if len(hexAreas) <> 0: + if (len(hexAreas) <> 0) and self.relative: initialAddress = hexAreas[0].getStart() sha256 = hashlib.new('sha256') for area in hexAreas: @@ -162,7 +163,7 @@ class HexLoader: def run(self, hexAreas, bootaddr): initialAddress = 0 - if len(hexAreas) <> 0: + if (len(hexAreas) <> 0) and self.relative: initialAddress = hexAreas[0].getStart() self.boot(bootaddr - initialAddress)