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