|
|
|
@ -1,5 +1,3 @@
|
|
|
|
|
from trezor.crypto.curve import secp256k1
|
|
|
|
|
from trezor.crypto.hashlib import sha3_256
|
|
|
|
|
from trezor.messages import EthereumAddress
|
|
|
|
|
from trezor.ui.layouts import show_address
|
|
|
|
|
|
|
|
|
@ -23,15 +21,12 @@ async def get_address(
|
|
|
|
|
await paths.validate_path(ctx, keychain, msg.address_n)
|
|
|
|
|
|
|
|
|
|
node = keychain.derive(msg.address_n)
|
|
|
|
|
seckey = node.private_key()
|
|
|
|
|
public_key = secp256k1.publickey(seckey, False) # uncompressed
|
|
|
|
|
address_bytes = sha3_256(public_key[1:], keccak=True).digest()[12:]
|
|
|
|
|
|
|
|
|
|
if len(msg.address_n) > 1: # path has slip44 network identifier
|
|
|
|
|
network = networks.by_slip44(msg.address_n[1] & 0x7FFF_FFFF)
|
|
|
|
|
else:
|
|
|
|
|
network = None
|
|
|
|
|
address = address_from_bytes(address_bytes, network)
|
|
|
|
|
address = address_from_bytes(node.ethereum_pubkeyhash(), network)
|
|
|
|
|
|
|
|
|
|
if msg.show_display:
|
|
|
|
|
title = paths.address_n_to_str(msg.address_n)
|
|
|
|
|