Adapt 'ledger_app_clients'

- Add 'send_raw' function
- Add error code 'EXCEPTION_OVERFLOW'
This commit is contained in:
Charles-Edouard de la Vergne
2024-04-03 18:48:56 +02:00
parent fa3e87a06c
commit 140ecc75fb
5 changed files with 36 additions and 3 deletions

View File

@@ -21,6 +21,7 @@ class StatusWord(IntEnum):
INVALID_P1_P2 = 0x6b00
CONDITION_NOT_SATISFIED = 0x6985
REF_DATA_NOT_FOUND = 0x6a88
EXCEPTION_OVERFLOW = 0x6807
class DomainNameTag(IntEnum):
@@ -49,6 +50,15 @@ class EthAppClient:
def response(self) -> Optional[RAPDU]:
return self._client.last_async_response
def send_raw(self, cla: int, ins: int, p1: int, p2: int, payload: bytes):
header = bytearray()
header.append(cla)
header.append(ins)
header.append(p1)
header.append(p2)
header.append(len(payload))
return self._exchange(header + payload)
def eip712_send_struct_def_struct_name(self, name: str):
return self._exchange_async(self._cmd_builder.eip712_send_struct_def_struct_name(name))
@@ -131,6 +141,12 @@ class EthAppClient:
bip32_path,
chain_id))
def get_eth2_public_addr(self,
display: bool = True,
bip32_path: str = "m/12381/3600/0/0"):
return self._exchange_async(self._cmd_builder.get_eth2_public_addr(display,
bip32_path))
def provide_domain_name(self, challenge: int, name: str, addr: bytes) -> RAPDU:
payload = format_tlv(DomainNameTag.STRUCTURE_TYPE, 3) # TrustedDomainName
payload += format_tlv(DomainNameTag.STRUCTURE_VERSION, 1)