diff --git a/client/src/ledger_app_clients/ethereum/client.py b/client/src/ledger_app_clients/ethereum/client.py index 52dc06f..6eb0c50 100644 --- a/client/src/ledger_app_clients/ethereum/client.py +++ b/client/src/ledger_app_clients/ethereum/client.py @@ -147,6 +147,14 @@ class EthAppClient: return self._exchange_async(self._cmd_builder.get_eth2_public_addr(display, bip32_path)) + def perform_privacy_operation(self, + display: bool = True, + bip32_path: str = "m/44'/60'/0'/0/0", + pubkey: bytes = bytes()): + return self._exchange(self._cmd_builder.perform_privacy_operation(display, + bip32_path, + pubkey)) + 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) diff --git a/client/src/ledger_app_clients/ethereum/command_builder.py b/client/src/ledger_app_clients/ethereum/command_builder.py index 9c60a6a..5b64415 100644 --- a/client/src/ledger_app_clients/ethereum/command_builder.py +++ b/client/src/ledger_app_clients/ethereum/command_builder.py @@ -17,6 +17,7 @@ class InsType(IntEnum): PROVIDE_ERC20_TOKEN_INFORMATION = 0x0a PROVIDE_NFT_INFORMATION = 0x14 SET_PLUGIN = 0x16 + PERFORM_PRIVACY_OPERATION = 0x18 EIP712_SEND_STRUCT_DEF = 0x1a EIP712_SEND_STRUCT_IMPL = 0x1c EIP712_SEND_FILTERING = 0x1e @@ -260,6 +261,16 @@ class CommandBuilder: 0x00, payload) + def perform_privacy_operation(self, + display: bool, + bip32_path: str, + pubkey: bytes) -> bytes: + payload = pack_derivation_path(bip32_path) + return self._serialize(InsType.PERFORM_PRIVACY_OPERATION, + int(display), + 0x01 if pubkey else 0x00, + payload + pubkey) + def set_plugin(self, type_: int, version: int,