From b9cfecb8b8b68de59ffb3af39827757f07271f64 Mon Sep 17 00:00:00 2001 From: Andrew Kozlik Date: Fri, 17 Jul 2020 18:07:14 +0200 Subject: [PATCH] core/bitcoin: Support preauthorization in SignTx message for CoinJoin. --- core/src/apps/bitcoin/sign_tx/__init__.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/core/src/apps/bitcoin/sign_tx/__init__.py b/core/src/apps/bitcoin/sign_tx/__init__.py index 8a57c1090..28cacc3ac 100644 --- a/core/src/apps/bitcoin/sign_tx/__init__.py +++ b/core/src/apps/bitcoin/sign_tx/__init__.py @@ -4,7 +4,7 @@ from trezor.messages.SignTx import SignTx from trezor.messages.TxAck import TxAck from trezor.messages.TxRequest import TxRequest -from apps.common import coininfo, paths, seed +from apps.common import coininfo, paths from ..common import BITCOIN_NAMES from ..keychain import with_keychain @@ -14,14 +14,23 @@ if not utils.BITCOIN_ONLY: from . import bitcoinlike, decred, zcash if False: - from typing import Type, Union + from typing import Optional, Union + from apps.common.seed import Keychain + from ..authorization import CoinJoinAuthorization @with_keychain async def sign_tx( - ctx: wire.Context, msg: SignTx, keychain: seed.Keychain, coin: coininfo.CoinInfo + ctx: wire.Context, + msg: SignTx, + keychain: Keychain, + coin: coininfo.CoinInfo, + authorization: Optional[CoinJoinAuthorization] = None, ) -> TxRequest: - approver = approvers.BasicApprover(msg, coin) + if authorization: + approver = approvers.CoinJoinApprover(msg, coin, authorization) + else: + approver = approvers.BasicApprover(msg, coin) if utils.BITCOIN_ONLY or coin.coin_name in BITCOIN_NAMES: signer_class = bitcoin.Bitcoin