diff --git a/ledgerwallet/client.py b/ledgerwallet/client.py index a604ad2..46a3034 100644 --- a/ledgerwallet/client.py +++ b/ledgerwallet/client.py @@ -313,7 +313,7 @@ def delete_app(self, app: Union[str, bytes]): def install_remote_app( self, app_path, key_path, url=LEDGER_HSM_URL, key=LEDGER_HSM_KEY ): - script = HsmScript("distributeFirmware11", {"persoKey": key, "scpv2": "dummy"}) + script = HsmScript("distributeFirmware11", {"persoKey": key}, self.target_id) server = HsmServer(script, url) self.authenticate(server) @@ -335,7 +335,7 @@ def upgrade_firmware( self, firmware_name, firmware_key, url=LEDGER_HSM_URL, key=LEDGER_HSM_KEY ): script = HsmScript( - "distributeFirmware11_scan", {"persoKey": key, "scpv2": "dummy"} + "distributeFirmware11_scan", {"persoKey": key}, self.target_id ) server = HsmServer(script, url) self.authenticate(server) @@ -359,7 +359,7 @@ def upgrade_firmware( offset += 5 + apdu_len def genuine_check(self, url=LEDGER_HSM_URL, key=LEDGER_HSM_KEY): - script = HsmScript("checkGenuine", {"persoKey": key, "scpv2": "dummy"}) + script = HsmScript("checkGenuine", {"persoKey": key}, self.target_id) server = HsmServer(script, url) self.authenticate(server) @@ -424,7 +424,7 @@ def target_id(self): return self._target_id def list_apps_remote(self, url=LEDGER_HSM_URL, key=LEDGER_HSM_KEY): - script = HsmScript("listApps", {"persoKey": key, "scpv2": "dummy"}) + script = HsmScript("listApps", {"persoKey": key}, self.target_id) server = HsmServer(script, url) self.authenticate(server) diff --git a/ledgerwallet/hsmscript.py b/ledgerwallet/hsmscript.py index 314d752..b78ce1f 100644 --- a/ledgerwallet/hsmscript.py +++ b/ledgerwallet/hsmscript.py @@ -10,7 +10,11 @@ class HsmScript: class HsmScript(object): - def __init__(self, name: str, default_params: dict, use_large_stack: bool = True): + def __init__(self, name: str, default_params: dict, target_id: int, use_large_stack: bool = True): self.name = name self.default_params = default_params self.use_large_stack = use_large_stack + if target_id & 0xF <= 2: + self.scpv2 = False + else: + self.scpv2 = True \ No newline at end of file diff --git a/ledgerwallet/hsmserver.py b/ledgerwallet/hsmserver.py index 821a63a..6fd497e 100644 --- a/ledgerwallet/hsmserver.py +++ b/ledgerwallet/hsmserver.py @@ -40,6 +40,8 @@ def query(self, data=None, params=None) -> bytes: elif self.script.default_params: for alias, name in self.script.default_params.items(): self._query_add_param(request, alias, name) + if self.script.scpv2: + self._query_add_param(request, "scpv2", "dummy") if data is not None: request.parameters = data