async def send_request_chunk(ctx, data_left: int): # TODO: layoutProgress ? req = EthereumTxRequest() if data_left <= 1024: req.data_length = data_left else: req.data_length = 1024 return await ctx.call(req, EthereumTxAck)
async def send_request_chunk(ctx, data_left: int): from trezor.messages.wire_types import EthereumTxAck # TODO: layoutProgress ? req = EthereumTxRequest() if data_left <= 1024: req.data_length = data_left else: req.data_length = 1024 return await ctx.call(req, EthereumTxAck)
def sign_digest(msg: EthereumSignTx, keychain, digest): node = keychain.derive(msg.address_n) signature = secp256k1.sign(node.private_key(), digest, False, secp256k1.CANONICAL_SIG_ETHEREUM) req = EthereumTxRequest() req.signature_v = signature[0] if msg.chain_id > MAX_CHAIN_ID: req.signature_v -= 27 elif msg.chain_id: req.signature_v += 2 * msg.chain_id + 8 req.signature_r = signature[1:33] req.signature_s = signature[33:] return req
async def send_signature(ctx, msg: EthereumSignTx, digest): address_n = msg.address_n or () node = await seed.derive_node(ctx, address_n) signature = secp256k1.sign(node.private_key(), digest, False, True) req = EthereumTxRequest() req.signature_v = signature[0] if msg.chain_id > MAX_CHAIN_ID: req.signature_v -= 27 elif msg.chain_id: req.signature_v += 2 * msg.chain_id + 8 req.signature_r = signature[1:33] req.signature_s = signature[33:] return req
async def send_signature(ctx, msg: EthereumSignTx, digest): from trezor.crypto.curve import secp256k1 from apps.common import seed address_n = msg.address_n or () node = await seed.derive_node(ctx, address_n) signature = secp256k1.sign(node.private_key(), digest, False) req = EthereumTxRequest() req.signature_v = signature[0] if msg.chain_id: req.signature_v += 2 * msg.chain_id + 8 req.signature_r = signature[1:33] req.signature_s = signature[33:] return req