From b782b610a90a1b5b6793c6cfcc110e1ce3fbc2c1 Mon Sep 17 00:00:00 2001 From: Clement Bouvet Date: Tue, 7 Feb 2023 16:11:32 +0100 Subject: [PATCH] ledger.py: fix EOF not always set --- libagent/device/ledger.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/libagent/device/ledger.py b/libagent/device/ledger.py index b3916a6..df846a6 100644 --- a/libagent/device/ledger.py +++ b/libagent/device/ledger.py @@ -121,12 +121,11 @@ class LedgerNanoS(interface.Device): else: p2 = '82' if identity.identity_dict['proto'] == 'ssh' else '02' - if offset == 0: - p1 = "00" - elif offset + chunk_size == len(blob) and self.ledger_app_supports_end_of_frame_byte: - p1 = "81" # end of frame byte only handled in 0.0.8+ + if offset + chunk_size == len(blob) and self.ledger_app_supports_end_of_frame_byte: + # mark that we are at the end of the frame + p1 = "80" if offset == 0 else "81" else: - p1 = "01" + p1 = "00" if offset == 0 else "01" apdu = binascii.unhexlify('80' + ins + p1 + p2) + len(data).to_bytes(1, 'little') + data