Added provide_token_metadata to client
This commit is contained in:
@@ -231,3 +231,25 @@ class EthAppClient:
|
|||||||
with self._send(chunk):
|
with self._send(chunk):
|
||||||
pass
|
pass
|
||||||
return self._send(chunks[-1])
|
return self._send(chunks[-1])
|
||||||
|
|
||||||
|
def provide_token_metadata(self,
|
||||||
|
ticker: str,
|
||||||
|
addr: bytes,
|
||||||
|
decimals: int,
|
||||||
|
chain_id: int,
|
||||||
|
sig: Optional[bytes] = None):
|
||||||
|
if sig is None:
|
||||||
|
# Temporarily get a command with an empty signature to extract the payload and
|
||||||
|
# compute the signature on it
|
||||||
|
tmp = self._cmd_builder.provide_erc20_token_information(ticker,
|
||||||
|
addr,
|
||||||
|
decimals,
|
||||||
|
chain_id,
|
||||||
|
bytes())
|
||||||
|
# skip APDU header & empty sig
|
||||||
|
sig = sign_data(Key.CAL, tmp[6:])
|
||||||
|
return self._send(self._cmd_builder.provide_erc20_token_information(ticker,
|
||||||
|
addr,
|
||||||
|
decimals,
|
||||||
|
chain_id,
|
||||||
|
sig))
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ class InsType(IntEnum):
|
|||||||
GET_PUBLIC_ADDR = 0x02
|
GET_PUBLIC_ADDR = 0x02
|
||||||
SIGN = 0x04
|
SIGN = 0x04
|
||||||
PERSONAL_SIGN = 0x08
|
PERSONAL_SIGN = 0x08
|
||||||
|
PROVIDE_ERC20_TOKEN_INFORMATION = 0x0a
|
||||||
PROVIDE_NFT_INFORMATION = 0x14
|
PROVIDE_NFT_INFORMATION = 0x14
|
||||||
SET_PLUGIN = 0x16
|
SET_PLUGIN = 0x16
|
||||||
EIP712_SEND_STRUCT_DEF = 0x1a
|
EIP712_SEND_STRUCT_DEF = 0x1a
|
||||||
@@ -310,3 +311,21 @@ class CommandBuilder:
|
|||||||
payload = payload[chunk_size:]
|
payload = payload[chunk_size:]
|
||||||
p1 = P1Type.SIGN_SUBSQT_CHUNK
|
p1 = P1Type.SIGN_SUBSQT_CHUNK
|
||||||
return chunks
|
return chunks
|
||||||
|
|
||||||
|
def provide_erc20_token_information(self,
|
||||||
|
ticker: str,
|
||||||
|
addr: bytes,
|
||||||
|
decimals: int,
|
||||||
|
chain_id: int,
|
||||||
|
sig: bytes) -> bytes:
|
||||||
|
payload = bytearray()
|
||||||
|
payload.append(len(ticker))
|
||||||
|
payload += ticker.encode()
|
||||||
|
payload += addr
|
||||||
|
payload += struct.pack(">I", decimals)
|
||||||
|
payload += struct.pack(">I", chain_id)
|
||||||
|
payload += sig
|
||||||
|
return self._serialize(InsType.PROVIDE_ERC20_TOKEN_INFORMATION,
|
||||||
|
0x00,
|
||||||
|
0x00,
|
||||||
|
payload)
|
||||||
|
|||||||
Reference in New Issue
Block a user